aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rpcs.h
diff options
context:
space:
mode:
authorFritz Elfert <felfert@to.com>2000-08-02 18:26:29 +0000
committerFritz Elfert <felfert@to.com>2000-08-02 18:26:29 +0000
commitd439bc3807b3f7cea0544899ee5fc8d849bf32df (patch)
tree5c28e89d19cc8c5cf7759dc4ae0082e21151fe0a /lib/rpcs.h
parent83757d37b7cfb7ef6da178a26b9a203d1b65e0af (diff)
downloadplptools-d439bc3807b3f7cea0544899ee5fc8d849bf32df.tar.gz
plptools-d439bc3807b3f7cea0544899ee5fc8d849bf32df.tar.bz2
plptools-d439bc3807b3f7cea0544899ee5fc8d849bf32df.zip
Added a wrapper for enums and changed all return-code related stuff
as well as some other enums to use that instead of plain enums. This results in stronger type checking, range checking and the ability to write an enum's textual representation.
Diffstat (limited to 'lib/rpcs.h')
-rw-r--r--lib/rpcs.h282
1 files changed, 139 insertions, 143 deletions
diff --git a/lib/rpcs.h b/lib/rpcs.h
index 3c569bb..18d4d66 100644
--- a/lib/rpcs.h
+++ b/lib/rpcs.h
@@ -2,57 +2,14 @@
#define _rpcs_h_
#include "psitime.h"
+#include "rfsv.h"
+#include "Enum.h"
class ppsocket;
class bufferStore;
class bufferArray;
/**
- * This struct holds the data returned
- * by @ref rpcs::getMachineInfo.
- */
-typedef struct machineInfo_t {
- unsigned long machineType;
- char machineName[17];
- unsigned long long machineUID;
- unsigned long countryCode;
- char uiLanguage[32];
-
- unsigned short romMajor;
- unsigned short romMinor;
- unsigned short romBuild;
- unsigned long romSize;
- bool romProgrammable;
-
- unsigned long ramSize;
- unsigned long ramFree;
- unsigned long ramMaxFree;
- unsigned long ramDiskSize;
-
- unsigned long registrySize;
- unsigned long displayWidth;
- unsigned long displayHeight;
-
- psi_timeval time;
- psi_timezone tz;
-
- psi_timeval mainBatteryInsertionTime;
- unsigned long mainBatteryStatus;
- psi_timeval mainBatteryUsedTime;
- unsigned long mainBatteryCurrent;
- unsigned long mainBatteryUsedPower;
- unsigned long mainBatteryVoltage;
- unsigned long mainBatteryMaxVoltage;
-
- unsigned long backupBatteryStatus;
- unsigned long backupBatteryVoltage;
- unsigned long backupBatteryMaxVoltage;
- psi_timeval backupBatteryUsedTime;
-
- bool externalPower;
-} machineInfo;
-
-/**
* Remote procedure call services via PLP
*
* rpcs provides an interface for communicating
@@ -68,6 +25,114 @@ typedef struct machineInfo_t {
class rpcs {
public:
/**
+ * The known machine types.
+ */
+ enum machs {
+ PSI_MACH_UNKNOWN = 0,
+ PSI_MACH_PC = 1,
+ PSI_MACH_MC = 2,
+ PSI_MACH_HC = 3,
+ PSI_MACH_S3 = 4,
+ PSI_MACH_S3A = 5,
+ PSI_MACH_WORKABOUT = 6,
+ PSI_MACH_SIENNA = 7,
+ PSI_MACH_S3C = 8,
+ PSI_MACH_S5 = 32,
+ PSI_MACH_WINC = 33,
+ // TODO: Code for 5mx
+ };
+
+ /**
+ * The known interface languages.
+ */
+ enum languages {
+ PSI_LANG_TEST = 0,
+ PSI_LANG_en_GB = 1,
+ PSI_LANG_fr_FR = 2,
+ PSI_LANG_de_DE = 3,
+ PSI_LANG_es_ES = 4,
+ PSI_LANG_it_IT = 5,
+ PSI_LANG_sv_SE = 6,
+ PSI_LANG_da_DK = 7,
+ PSI_LANG_no_NO = 8,
+ PSI_LANG_fi_FI = 9,
+ PSI_LANG_en_US = 10,
+ PSI_LANG_fr_CH = 11,
+ PSI_LANG_de_CH = 12,
+ PSI_LANG_pt_PT = 13,
+ PSI_LANG_tr_TR = 14,
+ PSI_LANG_is_IS = 15,
+ PSI_LANG_ru_RU = 16,
+ PSI_LANG_hu_HU = 17,
+ PSI_LANG_nl_NL = 18,
+ PSI_LANG_nl_BE = 19,
+ PSI_LANG_en_AU = 20,
+ PSI_LANG_fr_BE = 21,
+ PSI_LANG_de_AT = 22,
+ PSI_LANG_en_NZ = 23,
+ PSI_LANG_fr_CA = 24,
+ PSI_LANG_cs_CZ = 25,
+ PSI_LANG_sk_SK = 26,
+ PSI_LANG_pl_PL = 27,
+ PSI_LANG_sl_SI = 28,
+ };
+
+ /**
+ * The known battery states.
+ */
+ enum batterystates {
+ PSI_BATT_DEAD = 0,
+ PSI_BATT_VERYLOW = 1,
+ PSI_BATT_LOW = 2,
+ PSI_BATT_GOOD = 3,
+ };
+
+ /**
+ * This struct holds the data returned
+ * by @ref rpcs::getMachineInfo.
+ */
+ typedef struct machineInfo_t {
+ Enum<machs> machineType;
+ char machineName[17];
+ unsigned long long machineUID;
+ unsigned long countryCode;
+ Enum<languages> uiLanguage;
+
+ unsigned short romMajor;
+ unsigned short romMinor;
+ unsigned short romBuild;
+ unsigned long romSize;
+ bool romProgrammable;
+
+ unsigned long ramSize;
+ unsigned long ramFree;
+ unsigned long ramMaxFree;
+ unsigned long ramDiskSize;
+
+ unsigned long registrySize;
+ unsigned long displayWidth;
+ unsigned long displayHeight;
+
+ psi_timeval time;
+ psi_timezone tz;
+
+ psi_timeval mainBatteryInsertionTime;
+ Enum<batterystates> mainBatteryStatus;
+ psi_timeval mainBatteryUsedTime;
+ unsigned long mainBatteryCurrent;
+ unsigned long mainBatteryUsedPower;
+ unsigned long mainBatteryVoltage;
+ unsigned long mainBatteryMaxVoltage;
+
+ Enum<batterystates> backupBatteryStatus;
+ unsigned long backupBatteryVoltage;
+ unsigned long backupBatteryMaxVoltage;
+ psi_timeval backupBatteryUsedTime;
+
+ bool externalPower;
+ } machineInfo;
+
+ /**
* Provides a virtual destructor.
*/
virtual ~rpcs() {};
@@ -92,7 +157,7 @@ class rpcs {
*
* @returns The connection status.
*/
- long getStatus();
+ Enum<rfsv::errs> getStatus();
/**
* Retrieves the version of the NCP protocol
@@ -108,7 +173,7 @@ class rpcs {
*
* @returns A psion error code. 0 = Ok.
*/
- int getNCPversion(int &major, int &minor);
+ Enum<rfsv::errs> getNCPversion(int &major, int &minor);
/**
* Starts execution of a program on the remote machine.
@@ -123,7 +188,7 @@ class rpcs {
*
* @returns A psion error code. 0 = Ok.
*/
- int execProgram(const char *program, const char *args);
+ Enum<rfsv::errs> execProgram(const char *program, const char *args);
/**
* Requests termination of a program running on the
@@ -136,11 +201,11 @@ class rpcs {
*
* @returns A psion error code. 0 = Ok.
*/
- int stopProgram(const char *);
- int queryProgram(const char *);
- int formatOpen(const char *, int &, int &);
- int formatRead(int);
- int getUniqueID(const char *, long &);
+ Enum<rfsv::errs> stopProgram(const char *);
+ Enum<rfsv::errs> queryProgram(const char *);
+ Enum<rfsv::errs> formatOpen(const char *, int &, int &);
+ Enum<rfsv::errs> formatRead(int);
+ Enum<rfsv::errs> getUniqueID(const char *, long &);
/**
* Retrieve owner information of the remote machine.
@@ -153,7 +218,7 @@ class rpcs {
*
* @returns A psion error code. 0 = Ok.
*/
- int getOwnerInfo(bufferArray &);
+ Enum<rfsv::errs> getOwnerInfo(bufferArray &);
/**
* Retrieves the type of machine on the remote side
@@ -167,7 +232,7 @@ class rpcs {
*
* @returns A psion error code. 0 = Ok.
*/
- int getMachineType(int &type);
+ Enum<rfsv::errs> getMachineType(Enum<machs> &type);
/**
* Retrieves the name of a process, having a
@@ -182,7 +247,7 @@ class rpcs {
* program's name.
* @param maxlen The maximum capacity of the buffer.
*/
- int fuser(const char *name, char *buf, int maxlen);
+ Enum<rfsv::errs> fuser(const char *name, char *buf, int maxlen);
/**
* Requests the remote server to terminate.
@@ -194,33 +259,10 @@ class rpcs {
*
* @returns A psion error code. 0 = Ok.
*/
- int quitServer(void);
-
- /**
- * Maps a language code to a human readable language name.
- *
- * @param code The language code to map.
- *
- * @returns The name of the language, represented by code, or
- * "Unknown", if the code does not match one of the known
- * languages.
- */
- const char *languageString(const int code);
-
- /**
- * Maps a battery status code to a human readable description.
- *
- * @param code The battary status code to map.
- *
- * @returns A descriptive text for the battery status, or
- * "Unknown", if the code does not match a known
- * battery status.
- */
- const char *batteryStatusString(const int code);
-
+ Enum<rfsv::errs> quitServer(void);
// API different on SIBO and EPOC
- virtual int queryDrive(const char, bufferArray &) = 0;
+ virtual Enum<rfsv::errs> queryDrive(const char, bufferArray &) = 0;
/**
* Retrieves the command line of a running process.
*
@@ -232,7 +274,7 @@ class rpcs {
*
* @return Psion error code. 0 = Ok.
*/
- virtual int getCmdLine(const char *process, bufferStore &ret) = 0;
+ virtual Enum<rfsv::errs> getCmdLine(const char *process, bufferStore &ret) = 0;
// API only existent on EPOC
// default-methods for SIBO here.
@@ -246,65 +288,19 @@ class rpcs {
* @param machineInfo The struct holding all information on return.
* @return Psion error code. 0 = Ok.
*/
- virtual int getMachineInfo(machineInfo &) { return E_PSI_NOT_SIBO;}
- virtual int closeHandle(int) { return E_PSI_NOT_SIBO;}
- virtual int regOpenIter(void) { return E_PSI_NOT_SIBO;}
- virtual int regReadIter(void) { return E_PSI_NOT_SIBO;}
- virtual int regWrite(void) { return E_PSI_NOT_SIBO;}
- virtual int regRead(void) { return E_PSI_NOT_SIBO;}
- virtual int regDelete(void) { return E_PSI_NOT_SIBO;}
- virtual int setTime(void) { return E_PSI_NOT_SIBO;}
- virtual int configOpen(void) { return E_PSI_NOT_SIBO;}
- virtual int configRead(void) { return E_PSI_NOT_SIBO;}
- virtual int configWrite(void) { return E_PSI_NOT_SIBO;}
- virtual int queryOpen(void) { return E_PSI_NOT_SIBO;}
- virtual int queryRead(void) { return E_PSI_NOT_SIBO;}
-
- enum errs {
- E_PSI_GEN_NONE = 0,
- E_PSI_GEN_FAIL = -1,
- E_PSI_FILE_DISC = -50,
- // Special error code for "Operation not permitted in RPCS16"
- E_PSI_NOT_SIBO = -200
- };
-
- /**
- * The known machine types.
- */
- enum machs {
- PSI_MACH_UNKNOWN = 0,
- PSI_MACH_PC = 1,
- PSI_MACH_MC = 2,
- PSI_MACH_HC = 3,
- PSI_MACH_S3 = 4,
- PSI_MACH_S3A = 5,
- PSI_MACH_WORKABOUT = 6,
- PSI_MACH_SIENNA = 7,
- PSI_MACH_S3C = 8,
- PSI_MACH_S5 = 32,
- PSI_MACH_WINC = 33,
- // TODO: Code for 5mx
- };
-
- /**
- * The known interface languages.
- */
- enum languagecodes {
- PSI_LANG_TEST = 0,
- PSI_LANG_ENGLISH = 1,
- PSI_LANG_FRENCH = 2,
- PSI_LANG_GERMAN = 3,
- };
-
- /**
- * The known battery states.
- */
- enum batterystates {
- PSI_BATT_DEAD = 0,
- PSI_BATT_VERYLOW = 1,
- PSI_BATT_LOW = 2,
- PSI_BATT_GOOD = 3,
- };
+ virtual Enum<rfsv::errs> getMachineInfo(machineInfo &) { return rfsv::E_PSI_NOT_SIBO;}
+ virtual Enum<rfsv::errs> closeHandle(int) { return rfsv::E_PSI_NOT_SIBO;}
+ virtual Enum<rfsv::errs> regOpenIter(void) { return rfsv::E_PSI_NOT_SIBO;}
+ virtual Enum<rfsv::errs> regReadIter(void) { return rfsv::E_PSI_NOT_SIBO;}
+ virtual Enum<rfsv::errs> regWrite(void) { return rfsv::E_PSI_NOT_SIBO;}
+ virtual Enum<rfsv::errs> regRead(void) { return rfsv::E_PSI_NOT_SIBO;}
+ virtual Enum<rfsv::errs> regDelete(void) { return rfsv::E_PSI_NOT_SIBO;}
+ virtual Enum<rfsv::errs> setTime(void) { return rfsv::E_PSI_NOT_SIBO;}
+ virtual Enum<rfsv::errs> configOpen(void) { return rfsv::E_PSI_NOT_SIBO;}
+ virtual Enum<rfsv::errs> configRead(void) { return rfsv::E_PSI_NOT_SIBO;}
+ virtual Enum<rfsv::errs> configWrite(void) { return rfsv::E_PSI_NOT_SIBO;}
+ virtual Enum<rfsv::errs> queryOpen(void) { return rfsv::E_PSI_NOT_SIBO;}
+ virtual Enum<rfsv::errs> queryRead(void) { return rfsv::E_PSI_NOT_SIBO;}
protected:
/**
@@ -316,7 +312,7 @@ class rpcs {
/**
* The current status of the connection.
*/
- long status;
+ Enum<rfsv::errs> status;
/**
* The possible commands.
@@ -364,7 +360,7 @@ class rpcs {
* @returns true on success, false on failure.
*/
bool sendCommand(enum commands cc, bufferStore &data);
- int getResponse(bufferStore &);
+ Enum<rfsv::errs> getResponse(bufferStore &);
const char *getConnectName();
};