plptools
Loading...
Searching...
No Matches
rpcs.h
Go to the documentation of this file.
1/*
2 * This file is part of plptools.
3 *
4 * Copyright (C) 1999-2002 Fritz Elfert <felfert@to.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License along
17 * along with this program; if not, see <https://www.gnu.org/licenses/>.
18 *
19 */
20#ifndef _RPCS_H_
21#define _RPCS_H_
22
23#include "psitime.h"
24#include "psiprocess.h"
25#include "rfsv.h"
26#include "Enum.h"
27
28#include <vector>
29
30class TCPSocket;
31class bufferStore;
32class bufferArray;
33
34typedef std::vector<PsiProcess> processList;
35
51class rpcs {
52public:
56 enum machs {
67 PSI_MACH_WINC = 33
68 // TODO: Code for 5mx
69 };
70
74 enum languages {
103 PSI_LANG_sl_SI = 28
104 };
105
113 PSI_BATT_GOOD = 3
114 };
115
120 typedef struct machineInfo_t {
122 char machineName[17];
123 unsigned long long machineUID;
124 unsigned long countryCode;
126
127 unsigned short romMajor;
128 unsigned short romMinor;
129 unsigned short romBuild;
130 unsigned long romSize;
132
133 unsigned long ramSize;
134 unsigned long ramFree;
135 unsigned long ramMaxFree;
136 unsigned long ramDiskSize;
137
138 unsigned long registrySize;
139 unsigned long displayWidth;
140 unsigned long displayHeight;
141
144
148 unsigned long mainBatteryCurrent;
149 unsigned long mainBatteryUsedPower;
150 unsigned long mainBatteryVoltage;
152
154 unsigned long backupBatteryVoltage;
156
160
164 virtual ~rpcs();
165
170 void reset();
171
178 void reconnect();
179
187
202 Enum<rfsv::errs> getNCPversion(int &major, int &minor);
203
215 Enum<rfsv::errs> execProgram(const char *program, const char *args);
216
228 Enum<rfsv::errs> stopProgram(const char *program);
229
230 Enum<rfsv::errs> queryProgram(const char *);
231
247 Enum<rfsv::errs> formatOpen(const char drive, int &handle, int &count);
248
257 Enum<rfsv::errs> formatRead(int handle);
258
259 Enum<rfsv::errs> getUniqueID(const char *, long &);
260
273
287
300 Enum<rfsv::errs> fuser(const char *name, char *buf, int maxlen);
301
313
324
338 virtual Enum<rfsv::errs> getCmdLine(const char *process, std::string &ret) = 0;
339
352
365 virtual Enum<rfsv::errs> closeHandle(uint32_t handle)
366 { return rfsv::E_PSI_NOT_SIBO; }
367
368 virtual Enum<rfsv::errs> regOpenIter(uint32_t, char *, uint16_t &)
369 { return rfsv::E_PSI_NOT_SIBO;}
371 { return rfsv::E_PSI_NOT_SIBO;}
373 { return rfsv::E_PSI_NOT_SIBO;}
375 { return rfsv::E_PSI_NOT_SIBO;}
377 { return rfsv::E_PSI_NOT_SIBO;}
378 virtual Enum<rfsv::errs> setTime(time_t time)
379 { return rfsv::E_PSI_NOT_SIBO;}
380
393 virtual Enum<rfsv::errs> configRead(uint32_t size, bufferStore &data)
394 { return rfsv::E_PSI_NOT_SIBO; }
395
408 { return rfsv::E_PSI_NOT_SIBO;}
409
411 { return rfsv::E_PSI_NOT_SIBO;}
413 { return rfsv::E_PSI_NOT_SIBO;}
414
415protected:
421
426
430 enum commands {
431 QUERY_NCP = 0x00,
432 EXEC_PROG = 0x01,
434 STOP_PROG = 0x03,
442 FUSER = 0x0b,
447 REG_WRITE = 0x68,
448 REG_READ = 0x69,
450 SET_TIME = 0x6b,
456 QUIT_SERVER = 0xff
457 };
458
464
483 virtual Enum<rfsv::errs> configOpen(uint16_t &handle, uint32_t size)
484 { return rfsv::E_PSI_NOT_SIBO; }
485
500 bool sendCommand(enum commands cc, bufferStore &data);
501 Enum<rfsv::errs> getResponse(bufferStore &data, bool statusIsFirstByte);
502 const char *getConnectName();
503};
504
505#endif
Wrapper class featuring range-checking and string representation of enumerated values.
Definition: Enum.h:136
A class for dealing with sockets.
Definition: tcpsocket.h:38
An array of bufferStores.
Definition: bufferarray.h:31
A generic container for an array of bytes.
Definition: bufferstore.h:37
@ E_PSI_NOT_SIBO
Definition: rfsv.h:185
Remote procedure call services via PLP.
Definition: rpcs.h:51
virtual Enum< rfsv::errs > configOpen(uint16_t &handle, uint32_t size)
Prepare scratch RAM in Series 5 for read/write.
Definition: rpcs.h:483
Enum< rfsv::errs > getNCPversion(int &major, int &minor)
Retrieves the version of the NCP protocol on the remote side.
Definition: rpcs.cc:182
machs
The known machine types.
Definition: rpcs.h:56
@ PSI_MACH_WORKABOUT
Definition: rpcs.h:63
@ PSI_MACH_S3A
Definition: rpcs.h:62
@ PSI_MACH_PC
Definition: rpcs.h:58
@ PSI_MACH_S3C
Definition: rpcs.h:65
@ PSI_MACH_MC
Definition: rpcs.h:59
@ PSI_MACH_SIENA
Definition: rpcs.h:64
@ PSI_MACH_UNKNOWN
Definition: rpcs.h:57
@ PSI_MACH_S3
Definition: rpcs.h:61
@ PSI_MACH_S5
Definition: rpcs.h:66
@ PSI_MACH_WINC
Definition: rpcs.h:67
@ PSI_MACH_HC
Definition: rpcs.h:60
virtual Enum< rfsv::errs > getMachineInfo(machineInfo &machineInfo)
Retrieve general Information about the connected machine.
Definition: rpcs.h:351
Enum< rfsv::errs > formatRead(int handle)
Continues a running format.
Definition: rpcs.cc:343
Enum< rfsv::errs > status
The current status of the connection.
Definition: rpcs.h:425
Enum< rfsv::errs > stopProgram(const char *program)
Requests termination of a program running on the remote machine.
Definition: rpcs.cc:225
virtual Enum< rfsv::errs > getCmdLine(const char *process, std::string &ret)=0
Retrieves the command line of a running process.
virtual Enum< rfsv::errs > closeHandle(uint32_t handle)
Release an rpcs handle.
Definition: rpcs.h:365
virtual Enum< rfsv::errs > regReadIter(uint16_t)
Definition: rpcs.h:370
TCPSocket * skt
The socket, used for communication with ncpd.
Definition: rpcs.h:420
languages
The known interface languages.
Definition: rpcs.h:74
@ PSI_LANG_is_IS
Definition: rpcs.h:90
@ PSI_LANG_fr_FR
Definition: rpcs.h:77
@ PSI_LANG_fr_BE
Definition: rpcs.h:96
@ PSI_LANG_fi_FI
Definition: rpcs.h:84
@ PSI_LANG_nl_NL
Definition: rpcs.h:93
@ PSI_LANG_en_GB
Definition: rpcs.h:76
@ PSI_LANG_it_IT
Definition: rpcs.h:80
@ PSI_LANG_pt_PT
Definition: rpcs.h:88
@ PSI_LANG_cs_CZ
Definition: rpcs.h:100
@ PSI_LANG_TEST
Definition: rpcs.h:75
@ PSI_LANG_da_DK
Definition: rpcs.h:82
@ PSI_LANG_sl_SI
Definition: rpcs.h:103
@ PSI_LANG_nl_BE
Definition: rpcs.h:94
@ PSI_LANG_en_NZ
Definition: rpcs.h:98
@ PSI_LANG_en_AU
Definition: rpcs.h:95
@ PSI_LANG_de_DE
Definition: rpcs.h:78
@ PSI_LANG_de_CH
Definition: rpcs.h:87
@ PSI_LANG_fr_CA
Definition: rpcs.h:99
@ PSI_LANG_en_US
Definition: rpcs.h:85
@ PSI_LANG_no_NO
Definition: rpcs.h:83
@ PSI_LANG_sv_SE
Definition: rpcs.h:81
@ PSI_LANG_pl_PL
Definition: rpcs.h:102
@ PSI_LANG_fr_CH
Definition: rpcs.h:86
@ PSI_LANG_es_ES
Definition: rpcs.h:79
@ PSI_LANG_hu_HU
Definition: rpcs.h:92
@ PSI_LANG_sk_SK
Definition: rpcs.h:101
@ PSI_LANG_ru_RU
Definition: rpcs.h:91
@ PSI_LANG_tr_TR
Definition: rpcs.h:89
@ PSI_LANG_de_AT
Definition: rpcs.h:97
virtual Enum< rfsv::errs > queryOpen(void)
Definition: rpcs.h:410
virtual Enum< rfsv::errs > regRead(void)
Definition: rpcs.h:374
virtual Enum< rfsv::errs > configWrite(bufferStore data)
Write to Series 5 scratch RAM.
Definition: rpcs.h:407
Enum< rfsv::errs > fuser(const char *name, char *buf, int maxlen)
Retrieves the name of a process, having a given file opened on the remote side.
Definition: rpcs.cc:392
struct rpcs::machineInfo_t machineInfo
This struct holds the data returned by rpcs::getMachineInfo.
virtual Enum< rfsv::errs > queryRead(void)
Definition: rpcs.h:412
bool sendCommand(enum commands cc, bufferStore &data)
Sends a command to the remote side.
Definition: rpcs.cc:135
Enum< rfsv::errs > queryProgram(const char *)
Definition: rpcs.cc:236
virtual Enum< rfsv::errs > regWrite(void)
Definition: rpcs.h:372
const char * getConnectName()
Definition: rpcs.cc:126
virtual Enum< rfsv::errs > regOpenIter(uint32_t, char *, uint16_t &)
Definition: rpcs.h:368
virtual Enum< rfsv::errs > regDelete(void)
Definition: rpcs.h:376
virtual Enum< rfsv::errs > getOwnerInfo(bufferArray &owner)=0
Retrieve owner information of the remote machine.
Enum< rfsv::errs > queryPrograms(processList &ret)
Retrieves a list of all running Programs.
Definition: rpcs.cc:247
commands
The possible commands.
Definition: rpcs.h:430
@ CONFIG_READ
Definition: rpcs.h:452
@ REG_OPEN_ITER
Definition: rpcs.h:445
@ QUIT_SERVER
Definition: rpcs.h:456
@ QUERY_NCP
Definition: rpcs.h:431
@ QUERY_PROG
Definition: rpcs.h:435
@ EXEC_PROG
Definition: rpcs.h:432
@ QUERY_DRIVE
Definition: rpcs.h:433
@ CONFIG_WRITE
Definition: rpcs.h:453
@ QUERY_OPEN
Definition: rpcs.h:454
@ GET_CMDLINE
Definition: rpcs.h:441
@ REG_READ
Definition: rpcs.h:448
@ REG_DELETE
Definition: rpcs.h:449
@ FORMAT_OPEN
Definition: rpcs.h:436
@ GET_UNIQUEID
Definition: rpcs.h:438
@ CONFIG_OPEN
Definition: rpcs.h:451
@ FUSER
Definition: rpcs.h:442
@ GET_MACHINETYPE
Definition: rpcs.h:440
@ STOP_PROG
Definition: rpcs.h:434
@ QUERY_READ
Definition: rpcs.h:455
@ REG_WRITE
Definition: rpcs.h:447
@ SET_TIME
Definition: rpcs.h:450
@ FORMAT_READ
Definition: rpcs.h:437
@ CLOSE_HANDLE
Definition: rpcs.h:444
@ REG_READ_ITER
Definition: rpcs.h:446
@ GET_MACHINE_INFO
Definition: rpcs.h:443
@ GET_OWNERINFO
Definition: rpcs.h:439
virtual ~rpcs()
Virtual destructor.
Definition: rpcs.cc:89
virtual Enum< rfsv::errs > setTime(time_t time)
Definition: rpcs.h:378
Enum< rfsv::errs > getMachineType(Enum< machs > &type)
Retrieves the type of machine on the remote side as defined in machs.
Definition: rpcs.cc:371
batterystates
The known battery states.
Definition: rpcs.h:109
@ PSI_BATT_DEAD
Definition: rpcs.h:110
@ PSI_BATT_GOOD
Definition: rpcs.h:113
@ PSI_BATT_LOW
Definition: rpcs.h:112
@ PSI_BATT_VERYLOW
Definition: rpcs.h:111
Enum< rfsv::errs > getStatus()
Retrieves the current status of the connection.
Definition: rpcs.cc:120
Enum< rfsv::errs > formatOpen(const char drive, int &handle, int &count)
Starts formatting a drive.
Definition: rpcs.cc:323
Enum< rfsv::errs > getUniqueID(const char *, long &)
Definition: rpcs.cc:354
Enum< rfsv::errs > getResponse(bufferStore &data, bool statusIsFirstByte)
Definition: rpcs.cc:157
void reset()
Initializes a connection to the remote machine.
Definition: rpcs.cc:105
Enum< rfsv::errs > execProgram(const char *program, const char *args)
Starts execution of a program on the remote machine.
Definition: rpcs.cc:199
int mtCacheS5mx
Flag: getMachineType and getMachineInfo have been called and the machine is an S5mx.
Definition: rpcs.h:463
virtual Enum< rfsv::errs > configRead(uint32_t size, bufferStore &data)
Read from Series 5 scratch RAM.
Definition: rpcs.h:393
void reconnect()
Attempts to re-establish a remote connection by first closing the socket, then connecting again to th...
Definition: rpcs.cc:98
Enum< rfsv::errs > quitServer(void)
Requests the remote server to terminate.
Definition: rpcs.cc:410
static bufferStore owner
Definition: main.cc:58
std::vector< PsiProcess > processList
Definition: rpcs.h:34
Holds a Psion time value.
Definition: psitime.h:41
holds a Psion time zone description.
Definition: psitime.h:85
This struct holds the data returned by rpcs::getMachineInfo.
Definition: rpcs.h:120
Enum< languages > uiLanguage
Definition: rpcs.h:125
psi_timeval time
Definition: rpcs.h:142
unsigned short romMajor
Definition: rpcs.h:127
psi_timeval mainBatteryUsedTime
Definition: rpcs.h:147
psi_timezone tz
Definition: rpcs.h:143
unsigned long displayWidth
Definition: rpcs.h:139
unsigned long long machineUID
Definition: rpcs.h:123
unsigned short romBuild
Definition: rpcs.h:129
Enum< batterystates > backupBatteryStatus
Definition: rpcs.h:153
psi_timeval externalPowerUsedTime
Definition: rpcs.h:157
Enum< batterystates > mainBatteryStatus
Definition: rpcs.h:146
unsigned long ramMaxFree
Definition: rpcs.h:135
unsigned short romMinor
Definition: rpcs.h:128
unsigned long mainBatteryVoltage
Definition: rpcs.h:150
unsigned long countryCode
Definition: rpcs.h:124
unsigned long ramFree
Definition: rpcs.h:134
unsigned long mainBatteryUsedPower
Definition: rpcs.h:149
char machineName[17]
Definition: rpcs.h:122
unsigned long ramSize
Definition: rpcs.h:133
unsigned long romSize
Definition: rpcs.h:130
unsigned long ramDiskSize
Definition: rpcs.h:136
unsigned long displayHeight
Definition: rpcs.h:140
unsigned long backupBatteryMaxVoltage
Definition: rpcs.h:155
psi_timeval mainBatteryInsertionTime
Definition: rpcs.h:145
unsigned long mainBatteryMaxVoltage
Definition: rpcs.h:151
unsigned long mainBatteryCurrent
Definition: rpcs.h:148
unsigned long registrySize
Definition: rpcs.h:138
unsigned long backupBatteryVoltage
Definition: rpcs.h:154
bool externalPower
Definition: rpcs.h:158
Enum< machs > machineType
Definition: rpcs.h:121
bool romProgrammable
Definition: rpcs.h:131