plptools
Loading...
Searching...
No Matches
rfsv32.h
Go to the documentation of this file.
1/*
2 * This file is part of plptools.
3 *
4 * Copyright (C) 1999 Philip Proudman <philip.proudman@btinternet.com>
5 * Copyright (C) 1999-2001 Fritz Elfert <felfert@to.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along
18 * along with this program; if not, see <https://www.gnu.org/licenses/>.
19 *
20 */
21
22#ifndef _RFSV32_H_
23#define _RFSV32_H_
24
25#include "rfsv.h"
26#include "plpdirent.h"
27
28class rfsvfactory;
29
37class rfsv32 : public rfsv {
38
42 friend class rfsvfactory;
43
44public:
45 Enum<rfsv::errs> dir(const char * const, PlpDir &);
46 Enum<rfsv::errs> dircount(const char * const, uint32_t &);
47 Enum<rfsv::errs> copyFromPsion(const char * const, const char * const, void *, cpCallback_t);
48 Enum<rfsv::errs> copyFromPsion(const char *from, int fd, cpCallback_t cb);
49 Enum<rfsv::errs> copyToPsion(const char * const, const char * const, void *, cpCallback_t);
50 Enum<rfsv::errs> copyOnPsion(const char * const, const char * const, void *, cpCallback_t);
51 Enum<rfsv::errs> pathtest(const char * const);
52 Enum<rfsv::errs> mkdir(const char * const);
53 Enum<rfsv::errs> rmdir(const char * const);
54 Enum<rfsv::errs> remove(const char * const);
55 Enum<rfsv::errs> rename(const char * const, const char * const);
56 Enum<rfsv::errs> mktemp(uint32_t &, std::string &);
57 Enum<rfsv::errs> fgeteattr(const char * const, PlpDirent &);
58 Enum<rfsv::errs> fgetattr(const char * const, uint32_t &);
59 Enum<rfsv::errs> fsetattr(const char * const, const uint32_t, const uint32_t);
60 Enum<rfsv::errs> fgetmtime(const char * const, PsiTime &);
61 Enum<rfsv::errs> fsetmtime(const char * const, PsiTime const);
62 Enum<rfsv::errs> fopen(const uint32_t, const char * const, uint32_t &);
63 Enum<rfsv::errs> fcreatefile(const uint32_t, const char * const, uint32_t &);
64 Enum<rfsv::errs> freplacefile(const uint32_t, const char * const, uint32_t &);
65 Enum<rfsv::errs> fseek(const uint32_t, const int32_t, const uint32_t, uint32_t &);
66 Enum<rfsv::errs> fread(const uint32_t, unsigned char * const, const uint32_t, uint32_t &);
67 Enum<rfsv::errs> fwrite(const uint32_t, const unsigned char * const, const uint32_t, uint32_t &);
68 Enum<rfsv::errs> fsetsize(uint32_t, uint32_t);
69 Enum<rfsv::errs> fclose(const uint32_t);
70
71 Enum<rfsv::errs> devlist(uint32_t &);
72 Enum<rfsv::errs> devinfo(const char, PlpDrive&);
73 Enum<rfsv::errs> opendir(const uint32_t, const char * const, rfsvDirhandle &);
76 Enum<rfsv::errs> setVolumeName(const char, const char * const);
77 uint32_t opMode(const uint32_t);
78 int getProtocolVersion() { return 5; }
79
80private:
81
92 EPOC_ATTR_MASK = 0x09f7, /* All of the above */
93 EPOC_ATTR_GETUID = 0x10000000 /* Deliver UIDs on dir listing */
94 };
95
96 enum open_mode {
102 EPOC_OMODE_READ_WRITE = 0x0200
103 };
104
149 E_EPOC_DIR_FULL = -43
150 };
151
152 enum commands {
154 OPEN_DIR = 0x10,
155 READ_DIR = 0x12,
159 OPEN_FILE = 0x16,
160 TEMP_FILE = 0x17,
161 READ_FILE = 0x18,
163 SEEK_FILE = 0x1a,
164 DELETE = 0x1b,
166 FLUSH = 0x1d,
167 SET_SIZE = 0x1e,
168 RENAME = 0x1f,
170 RM_DIR = 0x21,
171 SET_ATT = 0x22,
172 ATT = 0x23,
174 MODIFIED = 0x25,
180 PATH_TEST = 0x2b,
181 LOCK = 0x2d,
182 UNLOCK = 0x2e,
186 REPLACE = 0x32
187 };
188
193 rfsv32(TCPSocket *);
194
196 Enum<rfsv::errs> fopendir(const uint32_t, const char *, uint32_t &);
197 uint32_t attr2std(const uint32_t);
198 uint32_t std2attr(const uint32_t);
199
200
201 // Communication
202 bool sendCommand(enum commands, bufferStore &);
204};
205
206#endif
Wrapper class featuring range-checking and string representation of enumerated values.
Definition: Enum.h:136
A class, representing a directory entry of the Psion.
Definition: plpdirent.h:78
A class representing information about a Disk drive on the psion.
Definition: plpdirent.h:196
Psion time related utility class.
Definition: psitime.h:125
A class for dealing with sockets.
Definition: tcpsocket.h:38
A generic container for an array of bytes.
Definition: bufferstore.h:37
This is the implementation of the rfsv protocol for Psion series 5 (EPOC) variant.
Definition: rfsv32.h:37
Enum< rfsv::errs > fopendir(const uint32_t, const char *, uint32_t &)
Definition: rfsv32.cc:112
Enum< rfsv::errs > fsetsize(uint32_t, uint32_t)
Resizes an open file on the Psion.
Definition: rfsv32.cc:629
Enum< rfsv::errs > fclose(const uint32_t)
Close a file on the Psion whih was previously opened/created by using fopen , fcreatefile ,...
Definition: rfsv32.cc:128
bool sendCommand(enum commands, bufferStore &)
Definition: rfsv32.cc:386
file_attrib
Definition: rfsv32.h:82
@ EPOC_ATTR_SYSTEM
Definition: rfsv32.h:85
@ EPOC_ATTR_GETUID
Definition: rfsv32.h:93
@ EPOC_ATTR_RONLY
Definition: rfsv32.h:83
@ EPOC_ATTR_VOLUME
Definition: rfsv32.h:88
@ EPOC_ATTR_DIRECTORY
Definition: rfsv32.h:86
@ EPOC_ATTR_ARCHIVE
Definition: rfsv32.h:87
@ EPOC_ATTR_COMPRESSED
Definition: rfsv32.h:91
@ EPOC_ATTR_MASK
Definition: rfsv32.h:92
@ EPOC_ATTR_NORMAL
Definition: rfsv32.h:89
@ EPOC_ATTR_HIDDEN
Definition: rfsv32.h:84
@ EPOC_ATTR_TEMPORARY
Definition: rfsv32.h:90
Enum< rfsv::errs > readdir(rfsvDirhandle &, PlpDirent &)
Read directory entries.
Definition: rfsv32.cc:152
Enum< rfsv::errs > fopen(const uint32_t, const char *const, uint32_t &)
Opens a file.
Definition: rfsv32.cc:48
epoc_errs
Definition: rfsv32.h:105
@ E_EPOC_COMMS_FRAME
Definition: rfsv32.h:136
@ E_EPOC_CANCEL
Definition: rfsv32.h:109
@ E_EPOC_NOT_FOUND
Definition: rfsv32.h:107
@ E_EPOC_WRITE
Definition: rfsv32.h:129
@ E_EPOC_NOT_SUPPORTED
Definition: rfsv32.h:111
@ E_EPOC_IN_USE
Definition: rfsv32.h:120
@ E_EPOC_BAD_HANDLE
Definition: rfsv32.h:114
@ E_EPOC_OVERFLOW
Definition: rfsv32.h:115
@ E_EPOC_SERVER_TERMINATED
Definition: rfsv32.h:121
@ E_EPOC_DIVIDE_BY_ZERO
Definition: rfsv32.h:147
@ E_EPOC_COMMS_OVERRUN
Definition: rfsv32.h:137
@ E_EPOC_DISMOUNTED
Definition: rfsv32.h:130
@ E_EPOC_GENERAL
Definition: rfsv32.h:108
@ E_EPOC_ABORT
Definition: rfsv32.h:145
@ E_EPOC_SERVER_BUSY
Definition: rfsv32.h:122
@ E_EPOC_NONE
Definition: rfsv32.h:106
@ E_EPOC_BAD_LIBRARY_ENTRY_POINT
Definition: rfsv32.h:143
@ E_EPOC_CORRUPT
Definition: rfsv32.h:126
@ E_EPOC_NOT_READY
Definition: rfsv32.h:124
@ E_EPOC_UNDERFLOW
Definition: rfsv32.h:116
@ E_EPOC_DISK_FULL
Definition: rfsv32.h:132
@ E_EPOC_BAD_NAME
Definition: rfsv32.h:134
@ E_EPOC_TOO_BIG
Definition: rfsv32.h:146
@ E_EPOC_COMMS_PARITY
Definition: rfsv32.h:138
@ E_EPOC_ALREADY_EXISTS
Definition: rfsv32.h:117
@ E_EPOC_EoF
Definition: rfsv32.h:131
@ E_EPOC_COULD_NOT_DISCONNECT
Definition: rfsv32.h:141
@ E_EPOC_TOTAL_LOSS_OF_PRECISION
Definition: rfsv32.h:113
@ E_EPOC_UNKNOWN
Definition: rfsv32.h:125
@ E_EPOC_TIMEOUT
Definition: rfsv32.h:139
@ E_EPOC_COULD_NOT_CONNECT
Definition: rfsv32.h:140
@ E_EPOC_DIED
Definition: rfsv32.h:119
@ E_EPOC_COMPLETION
Definition: rfsv32.h:123
@ E_EPOC_BAD_DRIVER
Definition: rfsv32.h:133
@ E_EPOC_DISCONNECTED
Definition: rfsv32.h:142
@ E_EPOC_BAD_DESCRIPTOR
Definition: rfsv32.h:144
@ E_EPOC_ACCESS_DENIED
Definition: rfsv32.h:127
@ E_EPOC_BAD_POWER
Definition: rfsv32.h:148
@ E_EPOC_DIR_FULL
Definition: rfsv32.h:149
@ E_EPOC_COMMS_LINE_FAIL
Definition: rfsv32.h:135
@ E_EPOC_NO_MEMORY
Definition: rfsv32.h:110
@ E_EPOC_PATH_NOT_FOUND
Definition: rfsv32.h:118
@ E_EPOC_ARGUMENT
Definition: rfsv32.h:112
@ E_EPOC_LOCKED
Definition: rfsv32.h:128
Enum< rfsv::errs > fcreatefile(const uint32_t, const char *const, uint32_t &)
Creates a named file.
Definition: rfsv32.cc:80
Enum< rfsv::errs > opendir(const uint32_t, const char *const, rfsvDirhandle &)
Open a directory for reading with readdir.
Definition: rfsv32.cc:138
Enum< rfsv::errs > rmdir(const char *const)
Removes a directory on the Psion.
Definition: rfsv32.cc:769
commands
Definition: rfsv32.h:152
@ READ_FILE
Definition: rfsv32.h:161
@ SET_SIZE
Definition: rfsv32.h:167
@ DELETE
Definition: rfsv32.h:164
@ SET_MODIFIED
Definition: rfsv32.h:173
@ SET_DRIVE_NAME
Definition: rfsv32.h:185
@ TEMP_FILE
Definition: rfsv32.h:160
@ REPLACE
Definition: rfsv32.h:186
@ SEEK_FILE
Definition: rfsv32.h:163
@ SET_ATT
Definition: rfsv32.h:171
@ READ_DIR
Definition: rfsv32.h:155
@ UNLOCK
Definition: rfsv32.h:182
@ RM_DIR
Definition: rfsv32.h:170
@ PATH_TEST
Definition: rfsv32.h:180
@ OPEN_FILE
Definition: rfsv32.h:159
@ SET_SESSION_PATH
Definition: rfsv32.h:175
@ RENAME
Definition: rfsv32.h:168
@ CREATE_FILE
Definition: rfsv32.h:178
@ CLOSE_HANDLE
Definition: rfsv32.h:153
@ MK_DIR_ALL
Definition: rfsv32.h:169
@ READ_WRITE_FILE
Definition: rfsv32.h:177
@ SESSION_PATH
Definition: rfsv32.h:176
@ OPEN_DIR
Definition: rfsv32.h:154
@ REMOTE_ENTRY
Definition: rfsv32.h:165
@ REPLACE_FILE
Definition: rfsv32.h:179
@ DRIVE_INFO
Definition: rfsv32.h:157
@ LOCK
Definition: rfsv32.h:181
@ WRITE_FILE
Definition: rfsv32.h:162
@ FLUSH
Definition: rfsv32.h:166
@ SET_VOLUME_LABEL
Definition: rfsv32.h:158
@ GET_DRIVE_LIST
Definition: rfsv32.h:156
@ MODIFIED
Definition: rfsv32.h:174
@ DRIVE_NAME
Definition: rfsv32.h:184
@ OPEN_DIR_UID
Definition: rfsv32.h:183
@ ATT
Definition: rfsv32.h:172
Enum< rfsv::errs > fwrite(const uint32_t, const unsigned char *const, const uint32_t, uint32_t &)
Write to a file on the Psion.
Definition: rfsv32.cc:452
Enum< rfsv::errs > dircount(const char *const, uint32_t &)
Counts number of entries in a directory.
Definition: rfsv32.cc:309
Enum< rfsv::errs > fgeteattr(const char *const, PlpDirent &)
Retrieves attributes, size and modification time of a file on the Psion.
Definition: rfsv32.cc:264
int getProtocolVersion()
Retrieves the protocol version.
Definition: rfsv32.h:78
Enum< rfsv::errs > remove(const char *const)
Removes a file on the Psion.
Definition: rfsv32.cc:798
Enum< rfsv::errs > rename(const char *const, const char *const)
Renames a file on the Psion.
Definition: rfsv32.cc:783
uint32_t opMode(const uint32_t)
Converts an open-mode (A combination of the PSI_O_ constants.) from generic representation to the mac...
Definition: rfsv32.cc:205
Enum< rfsv::errs > err2psierr(int32_t)
Definition: rfsv32.cc:869
Enum< rfsv::errs > fseek(const uint32_t, const int32_t, const uint32_t, uint32_t &)
Sets the current file position of a file on the Psion.
Definition: rfsv32.cc:645
Enum< rfsv::errs > fread(const uint32_t, unsigned char *const, const uint32_t, uint32_t &)
Reads from a file on the Psion.
Definition: rfsv32.cc:426
uint32_t std2attr(const uint32_t)
Definition: rfsv32.cc:920
Enum< rfsv::errs > fgetattr(const char *const, uint32_t &)
Retrieves attributes of a file on the Psion.
Definition: rfsv32.cc:248
Enum< rfsv::errs > devinfo(const char, PlpDrive &)
Retrieves details about a drive.
Definition: rfsv32.cc:363
Enum< rfsv::errs > mkdir(const char *const)
Creates a directory on the Psion.
Definition: rfsv32.cc:755
Enum< rfsv::errs > mktemp(uint32_t &, std::string &)
Creates a unique temporary file.
Definition: rfsv32.cc:66
Enum< rfsv::errs > fsetattr(const char *const, const uint32_t, const uint32_t)
Definition: rfsv32.cc:295
Enum< rfsv::errs > copyToPsion(const char *const, const char *const, void *, cpCallback_t)
Copies a file from local machine to the Psion.
Definition: rfsv32.cc:533
Enum< rfsv::errs > copyFromPsion(const char *const, const char *const, void *, cpCallback_t)
Copies a file from the Psion to the local machine.
Definition: rfsv32.cc:478
Enum< rfsv::errs > copyOnPsion(const char *const, const char *const, void *, cpCallback_t)
Copies a file from the Psion to the Psion.
Definition: rfsv32.cc:565
Enum< rfsv::errs > fsetmtime(const char *const, PsiTime const)
Sets the modification time of a file on the Psion.
Definition: rfsv32.cc:234
Enum< rfsv::errs > getResponse(bufferStore &)
Definition: rfsv32.cc:413
Enum< rfsv::errs > pathtest(const char *const)
Checks to see if the directory component of a path or file name exists and is valid.
Definition: rfsv32.cc:616
Enum< rfsv::errs > fgetmtime(const char *const, PsiTime &)
Retrieves the modification time of a file on the Psion.
Definition: rfsv32.cc:218
uint32_t attr2std(const uint32_t)
Definition: rfsv32.cc:884
Enum< rfsv::errs > closedir(rfsvDirhandle &)
Close a directory, previously opened with opendir.
Definition: rfsv32.cc:147
Enum< rfsv::errs > freplacefile(const uint32_t, const char *const, uint32_t &)
Creates an named file, overwriting an existing file.
Definition: rfsv32.cc:96
open_mode
Definition: rfsv32.h:96
@ EPOC_OMODE_SHARE_READERS
Definition: rfsv32.h:98
@ EPOC_OMODE_TEXT
Definition: rfsv32.h:101
@ EPOC_OMODE_READ_WRITE
Definition: rfsv32.h:102
@ EPOC_OMODE_SHARE_ANY
Definition: rfsv32.h:99
@ EPOC_OMODE_BINARY
Definition: rfsv32.h:100
@ EPOC_OMODE_SHARE_EXCLUSIVE
Definition: rfsv32.h:97
Enum< rfsv::errs > dir(const char *const, PlpDir &)
Reads a directory on the Psion.
Definition: rfsv32.cc:187
Enum< rfsv::errs > devlist(uint32_t &)
Retrieves available drives on the Psion.
Definition: rfsv32.cc:343
Enum< rfsv::errs > setVolumeName(const char, const char *const)
Set the name of a Psion Volume (Drive).
Definition: rfsv32.cc:810
A helper class for storing intermediate internal information in rfsv16 and rfsv32 .
Definition: rfsv.h:53
Access remote file services of a Psion.
Definition: rfsv.h:75
A factory for automatically instantiating the correct rfsv protocol variant depending on the connecte...
Definition: rfsvfactory.h:33
int(* cpCallback_t)(void *, uint32_t)
Defines the callback procedure for progress indication of copy operations.
Definition: rfsv.h:42
std::deque< class PlpDirent > PlpDir
Definition: rfsv.h:31