| 1 | // SimpleServer.h\r |
| 2 | \r |
| 3 | #ifndef __SIMPLESERVER_H\r |
| 4 | #define __SIMPLESERVER_H\r |
| 5 | \r |
| 6 | #include <e32base.h>\r |
| 7 | \r |
| 8 | \r |
| 9 | TInt StartThread();\r |
| 10 | \r |
| 11 | \r |
| 12 | // engine states\r |
| 13 | enum TPicoGameState {\r |
| 14 | PGS_Running,\r |
| 15 | PGS_Paused,\r |
| 16 | PGS_Quit,\r |
| 17 | PGS_KeyConfig,\r |
| 18 | PGS_DebugHeap,\r |
| 19 | };\r |
| 20 | \r |
| 21 | // needed for creating server thread.\r |
| 22 | const TUint KPicoMaxHeapSize=0x00800000;\r |
| 23 | \r |
| 24 | // reasons for server panic\r |
| 25 | enum TPicoServPanic\r |
| 26 | {\r |
| 27 | EBadRequest,\r |
| 28 | EBadDescriptor,\r |
| 29 | EMainSchedulerError,\r |
| 30 | ESvrCreateServer,\r |
| 31 | ESvrStartServer,\r |
| 32 | ECreateTrapCleanup,\r |
| 33 | ENotImplementedYet,\r |
| 34 | };\r |
| 35 | \r |
| 36 | \r |
| 37 | // key config entry (touchpad areas)\r |
| 38 | struct TPicoAreaConfigEntry {\r |
| 39 | TRect rect;\r |
| 40 | //unsigned long actions;\r |
| 41 | };\r |
| 42 | \r |
| 43 | struct TPicoKeyConfigEntry\r |
| 44 | {\r |
| 45 | unsigned short keyCode;\r |
| 46 | unsigned char scanCode;\r |
| 47 | unsigned char flags; // lsb->msb: key_down, pulse_only, ?, ?, ?, ?, not_configurable, disabled\r |
| 48 | TInt32 handle1; // for CancelCaptureKeyUpAndDowns()\r |
| 49 | TInt32 handle2; // for CancelCaptureKey()\r |
| 50 | char *name;\r |
| 51 | };\r |
| 52 | \r |
| 53 | \r |
| 54 | //**********************************\r |
| 55 | //CPicoServServer\r |
| 56 | //**********************************\r |
| 57 | //The server class; an active object.\r |
| 58 | //Contains an instance of RServer; a handle to the kernel server representation which is used \r |
| 59 | //to receive messages. \r |
| 60 | \r |
| 61 | class CPicoServServer : public CServer\r |
| 62 | {\r |
| 63 | public:\r |
| 64 | enum {EPriority=950};\r |
| 65 | public:\r |
| 66 | static void New();\r |
| 67 | virtual CSharableSession *NewSessionL(const TVersion &aVersion) const;\r |
| 68 | static TInt ThreadFunction(TAny* aStarted);\r |
| 69 | protected:\r |
| 70 | CPicoServServer(TInt aPriority);\r |
| 71 | private:\r |
| 72 | TInt iActive;\r |
| 73 | };\r |
| 74 | \r |
| 75 | \r |
| 76 | //**********************************\r |
| 77 | //CPicoServSession\r |
| 78 | //**********************************\r |
| 79 | //This class represents a session in the server.\r |
| 80 | //CSession::Client() returns the client thread.\r |
| 81 | //Functions are provided to respond appropriately to client messages.\r |
| 82 | \r |
| 83 | \r |
| 84 | class CPicoServSession : public CSession\r |
| 85 | {\r |
| 86 | public:\r |
| 87 | // construct/destruct\r |
| 88 | CPicoServSession(RThread &aClient, CPicoServServer * aServer);\r |
| 89 | static CPicoServSession* NewL(RThread &aClient, CPicoServServer * aServer);\r |
| 90 | //service request\r |
| 91 | virtual void ServiceL(const RMessage &aMessage);\r |
| 92 | void DispatchMessageL(const RMessage &aMessage);\r |
| 93 | \r |
| 94 | // services available\r |
| 95 | void loadROM();\r |
| 96 | void changeConfig();\r |
| 97 | void sendConfig();\r |
| 98 | void sendDebug();\r |
| 99 | \r |
| 100 | protected:\r |
| 101 | // panic the client\r |
| 102 | void PanicClient(TInt aPanic) const;\r |
| 103 | // safewrite between client and server\r |
| 104 | void Write(const TAny* aPtr,const TDesC8& aDes,TInt anOffset=0);\r |
| 105 | private:\r |
| 106 | //CPicoServServer *iPicoSvr;\r |
| 107 | \r |
| 108 | unsigned char *rom_data;\r |
| 109 | };\r |
| 110 | \r |
| 111 | \r |
| 112 | \r |
| 113 | //**********************************\r |
| 114 | //global functions\r |
| 115 | //**********************************\r |
| 116 | \r |
| 117 | // function to panic the server\r |
| 118 | GLREF_C void PanicServer(TPicoServPanic aPanic);\r |
| 119 | int saveLoadGame(int load, int sram=0);\r |
| 120 | \r |
| 121 | #endif // __SIMPLESERVER_H\r |