34 stringRep.
add(
rfsv::E_PSI_GEN_ARG,
N_("bad argument"));
36 stringRep.
add(
rfsv::E_PSI_GEN_NSUP,
N_("not supported"));
37 stringRep.
add(
rfsv::E_PSI_GEN_UNDER,
N_("numeric underflow"));
38 stringRep.
add(
rfsv::E_PSI_GEN_OVER,
N_("numeric overflow"));
39 stringRep.
add(
rfsv::E_PSI_GEN_RANGE,
N_("numeric exception"));
41 stringRep.
add(
rfsv::E_PSI_GEN_NOMEMORY,
N_("out of memory"));
42 stringRep.
add(
rfsv::E_PSI_GEN_NOSEGMENTS,
N_("out of segments"));
43 stringRep.
add(
rfsv::E_PSI_GEN_NOSEM,
N_("out of semaphores"));
44 stringRep.
add(
rfsv::E_PSI_GEN_NOPROC,
N_("out of processes"));
45 stringRep.
add(
rfsv::E_PSI_GEN_OPEN,
N_("already open"));
46 stringRep.
add(
rfsv::E_PSI_GEN_NOTOPEN,
N_("not open"));
47 stringRep.
add(
rfsv::E_PSI_GEN_IMAGE,
N_("bad image"));
50 stringRep.
add(
rfsv::E_PSI_GEN_FSYS,
N_("no filesystem"));
51 stringRep.
add(
rfsv::E_PSI_GEN_START,
N_("not ready"));
52 stringRep.
add(
rfsv::E_PSI_GEN_NOFONT,
N_("no font"));
53 stringRep.
add(
rfsv::E_PSI_GEN_TOOWIDE,
N_("too wide"));
54 stringRep.
add(
rfsv::E_PSI_GEN_TOOMANY,
N_("too many"));
55 stringRep.
add(
rfsv::E_PSI_FILE_EXIST,
N_("file already exists"));
56 stringRep.
add(
rfsv::E_PSI_FILE_NXIST,
N_("no such file"));
59 stringRep.
add(
rfsv::E_PSI_FILE_EOF,
N_("end of file"));
60 stringRep.
add(
rfsv::E_PSI_FILE_FULL,
N_("disk/serial read buffer full"));
61 stringRep.
add(
rfsv::E_PSI_FILE_NAME,
N_("invalid name"));
62 stringRep.
add(
rfsv::E_PSI_FILE_ACCESS,
N_("access denied"));
63 stringRep.
add(
rfsv::E_PSI_FILE_LOCKED,
N_("resource locked"));
65 stringRep.
add(
rfsv::E_PSI_FILE_DIR,
N_("no such directory"));
66 stringRep.
add(
rfsv::E_PSI_FILE_RECORD,
N_("no such record"));
67 stringRep.
add(
rfsv::E_PSI_FILE_RDONLY,
N_("file is read-only"));
68 stringRep.
add(
rfsv::E_PSI_FILE_INV,
N_("invalid I/O operation"));
69 stringRep.
add(
rfsv::E_PSI_FILE_PENDING,
N_("I/O pending (not yet completed)"));
70 stringRep.
add(
rfsv::E_PSI_FILE_VOLUME,
N_("invalid volume name"));
71 stringRep.
add(
rfsv::E_PSI_FILE_CANCEL,
N_("cancelled"));
72 stringRep.
add(
rfsv::E_PSI_FILE_ALLOC,
N_("no memory for control block"));
73 stringRep.
add(
rfsv::E_PSI_FILE_DISC,
N_("unit disconnected"));
74 stringRep.
add(
rfsv::E_PSI_FILE_CONNECT,
N_("already connected"));
75 stringRep.
add(
rfsv::E_PSI_FILE_RETRAN,
N_("retransmission threshold exceeded"));
76 stringRep.
add(
rfsv::E_PSI_FILE_LINE,
N_("physical link failure"));
77 stringRep.
add(
rfsv::E_PSI_FILE_INACT,
N_("inactivity timer expired"));
81 stringRep.
add(
rfsv::E_PSI_MDM_CONFAIL,
N_("modem cannot connect to remote modem"));
82 stringRep.
add(
rfsv::E_PSI_MDM_BUSY,
N_("remote modem busy"));
83 stringRep.
add(
rfsv::E_PSI_MDM_NOANS,
N_("remote modem did not answer"));
84 stringRep.
add(
rfsv::E_PSI_MDM_BLACKLIST,
N_("number blacklisted by the modem"));
85 stringRep.
add(
rfsv::E_PSI_FILE_NOTREADY,
N_("drive not ready"));
86 stringRep.
add(
rfsv::E_PSI_FILE_UNKNOWN,
N_("unknown media"));
87 stringRep.
add(
rfsv::E_PSI_FILE_DIRFULL,
N_("directory full"));
88 stringRep.
add(
rfsv::E_PSI_FILE_PROTECT,
N_("write-protected"));
89 stringRep.
add(
rfsv::E_PSI_FILE_CORRUPT,
N_("media corrupt"));
90 stringRep.
add(
rfsv::E_PSI_FILE_ABORT,
N_("aborted operation"));
91 stringRep.
add(
rfsv::E_PSI_FILE_ERASE,
N_("failed to erase flash media"));
92 stringRep.
add(
rfsv::E_PSI_FILE_INVALID,
N_("invalid file for DBF system"));
93 stringRep.
add(
rfsv::E_PSI_GEN_POWER,
N_("power failure"));
94 stringRep.
add(
rfsv::E_PSI_FILE_TOOBIG,
N_("too big"));
95 stringRep.
add(
rfsv::E_PSI_GEN_DESCR,
N_("bad descriptor"));
96 stringRep.
add(
rfsv::E_PSI_GEN_LIB,
N_("bad entry point"));
97 stringRep.
add(
rfsv::E_PSI_FILE_NDISC,
N_("could not diconnect"));
98 stringRep.
add(
rfsv::E_PSI_FILE_DRIVER,
N_("bad driver"));
99 stringRep.
add(
rfsv::E_PSI_FILE_COMPLETION,
N_("operation not completed"));
101 stringRep.
add(
rfsv::E_PSI_GEN_TERMINATED,
N_("terminated"));
103 stringRep.
add(
rfsv::E_PSI_FILE_HANDLE,
N_("bad handle"));
104 stringRep.
add(
rfsv::E_PSI_NOT_SIBO,
N_("invalid operation for RFSV16"));
109const
char *
rfsv::getConnectName(
void) {
130 if (!strcmp(
a.getString(0),
"Ok"))
144 for (
const char *p = name.c_str(); *p; p++)
145 tmp += (*p ==
'/') ?
'\\' : *p;
166 tmp[7] = ((attr &
PSI_A_EXEC) ?
'x' : tmp[7]);
168 tmp[9] = ((attr &
PSI_A_TEXT) ?
't' : tmp[9]);
176 a.addStringT(
"NCP$GSPD");
185 return a.getDWord(1);
#define ENUM_DEFINITION_END(EnumName)
#define ENUM_DEFINITION_BEGIN(EnumName, initWith)
Helper macro to construct an enumeration wrapper Enum<E> for a specific enum type.
Wrapper class featuring range-checking and string representation of enumerated values.
bool closeSocket(void)
Closes the connection.
virtual bool reconnect()
Reopens the connection after closing it.
int getBufferStore(bufferStore &a, bool wait=true)
Receive data into a bufferStore .
bool sendBufferStore(const bufferStore &a)
Sends data from a bufferStore .
A generic container for an array of bytes.
Access remote file services of a Psion.
Enum< errs > getStatus()
Retrieves the current connection status.
int getSpeed()
Retrieve speed of serial link.
const char * getConnectName()
Retrieves the PLP protocol name.
errs
The known error codes.
std::string attr2String(const uint32_t attr)
Converts a file attribute rfsv::file_attribs to human readable format, usable for showing them in dir...
@ PSI_A_NORMAL
Attributes, valid on EPOC only.
@ PSI_A_RDONLY
Attributes, valid on both EPOC and SIBO.
@ PSI_A_READ
Attributes, valid on SIBO only.
static std::string convertSlash(const std::string &name)
Utility method, converts '/' to '\'.
stringRep add(rfsv::E_PSI_GEN_NONE, N_("no error"))
static void error(int line)
Description of a Psion-Device.