plptools
Loading...
Searching...
No Matches
rfsv16.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#ifndef _RFSV16_H_
22#define _RFSV16_H_
23
24#include "rfsv.h"
25
26class rfsvfactory;
27
35class rfsv16 : public rfsv {
36
40 friend class rfsvfactory;
41
42public:
43 Enum<rfsv::errs> fopen(const uint32_t, const char * const, uint32_t &);
44 Enum<rfsv::errs> mktemp(uint32_t &, std::string &);
45 Enum<rfsv::errs> fcreatefile(const uint32_t, const char * const, uint32_t &);
46 Enum<rfsv::errs> freplacefile(const uint32_t, const char * const, uint32_t &);
47 Enum<rfsv::errs> fclose(const uint32_t);
48 Enum<rfsv::errs> dir(const char * const, PlpDir &);
49 Enum<rfsv::errs> pathtest(const char * const);
50 Enum<rfsv::errs> fgetmtime(const char * const, PsiTime &);
51 Enum<rfsv::errs> fsetmtime(const char * const, const PsiTime);
52 Enum<rfsv::errs> fgetattr(const char * const, uint32_t &);
53 Enum<rfsv::errs> fgeteattr(const char * const, PlpDirent &);
54 Enum<rfsv::errs> fsetattr(const char * const, const uint32_t seta, const uint32_t unseta);
55 Enum<rfsv::errs> dircount(const char * const, uint32_t &);
56 Enum<rfsv::errs> devlist(uint32_t &);
57 Enum<rfsv::errs> devinfo(const char, PlpDrive &);
58 Enum<rfsv::errs> fread(const uint32_t, unsigned char * const, const uint32_t, uint32_t &);
59 Enum<rfsv::errs> fwrite(const uint32_t, const unsigned char * const, const uint32_t, uint32_t &);
60 Enum<rfsv::errs> copyFromPsion(const char * const, const char * const, void *, cpCallback_t);
61 Enum<rfsv::errs> copyFromPsion(const char *from, int fd, cpCallback_t cb);
62 Enum<rfsv::errs> copyToPsion(const char * const, const char * const, void *, cpCallback_t);
63 Enum<rfsv::errs> copyOnPsion(const char *, const char *, void *, cpCallback_t);
64 Enum<rfsv::errs> fsetsize(const uint32_t, const uint32_t);
65 Enum<rfsv::errs> fseek(const uint32_t, const int32_t, const uint32_t, uint32_t &);
66 Enum<rfsv::errs> mkdir(const char * const);
67 Enum<rfsv::errs> rmdir(const char * const);
68 Enum<rfsv::errs> rename(const char * const, const char * const);
69 Enum<rfsv::errs> remove(const char * const);
70 Enum<rfsv::errs> opendir(const uint32_t, const char * const, rfsvDirhandle &);
73 Enum<rfsv::errs> setVolumeName(const char, const char * const);
74
75 uint32_t opMode(const uint32_t);
76 int getProtocolVersion() { return 3; }
77
78private:
79 enum commands {
80 SIBO_FOPEN = 0, // File Open
81 SIBO_FCLOSE = 2, // File Close
82 SIBO_FREAD = 4, // File Read
83 SIBO_FDIRREAD = 6, // Read Directory entries
84 SIBO_FDEVICEREAD = 8, // Device Information
85 SIBO_FWRITE = 10, // File Write
86 SIBO_FSEEK = 12, // File Seek
87 SIBO_FFLUSH = 14, // Flush
101 SIBO_RESPONSE = 42
102 };
103
105 P_FOPEN = 0x0000, /* Open file */
106 P_FCREATE = 0x0001, /* Create file */
107 P_FREPLACE = 0x0002, /* Replace file */
108 P_FAPPEND = 0x0003, /* Append records */
109 P_FUNIQUE = 0x0004, /* Unique file open */
110 P_FSTREAM = 0x0000, /* Stream access to a binary file */
111 P_FSTREAM_TEXT = 0x0010, /* Stream access to a text file */
112 P_FTEXT = 0x0020, /* Record access to a text file */
113 P_FDIR = 0x0030, /* Record access to a directory file */
114 P_FFORMAT = 0x0040, /* Format a device */
115 P_FDEVICE = 0x0050, /* Record access to device name list */
116 P_FNODE = 0x0060, /* Record access to node name list */
117 P_FUPDATE = 0x0100, /* Read and write access */
118 P_FRANDOM = 0x0200, /* Random access */
119 P_FSHARE = 0x0400 /* File can be shared */
120 };
121
123 P_FAWRITE = 0x0001, /* can the file be written to? */
124 P_FAHIDDEN = 0x0002, /* set if file is hidden */
125 P_FASYSTEM = 0x0004, /* set if file is a system file */
126 P_FAVOLUME = 0x0008, /* set if the name is a volume name */
127 P_FADIR = 0x0010, /* set if file is a directory file */
128 P_FAMOD = 0x0020, /* has the file been modified? */
129 P_FAREAD = 0x0100, /* can the file be read? */
130 P_FAEXEC = 0x0200, /* is the file executable? */
131 P_FASTREAM = 0x0400, /* is the file a byte stream file? */
132 P_FATEXT = 0x0800, /* is it a text file? */
133 P_FAMASK = 0x0f3f /* All of the above */
134 };
135
140 rfsv16(TCPSocket *);
141
142 // Miscellaneous
143 Enum<rfsv::errs> fopendir(const char * const, uint32_t &);
144 uint32_t attr2std(const uint32_t);
145 uint32_t std2attr(const uint32_t);
146
147 // Communication
148 bool sendCommand(enum commands, bufferStore &);
150};
151
152#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 3 (SIBO) variant.
Definition: rfsv16.h:35
Enum< rfsv::errs > fgetattr(const char *const, uint32_t &)
Retrieves attributes of a file on the Psion.
Definition: rfsv16.cc:236
bool sendCommand(enum commands, bufferStore &)
Definition: rfsv16.cc:454
Enum< rfsv::errs > opendir(const uint32_t, const char *const, rfsvDirhandle &)
Open a directory for reading with readdir.
Definition: rfsv16.cc:118
Enum< rfsv::errs > devinfo(const char, PlpDrive &)
Retrieves details about a drive.
Definition: rfsv16.cc:395
Enum< rfsv::errs > fread(const uint32_t, unsigned char *const, const uint32_t, uint32_t &)
Reads from a file on the Psion.
Definition: rfsv16.cc:503
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: rfsv16.cc:704
Enum< rfsv::errs > remove(const char *const)
Removes a file on the Psion.
Definition: rfsv16.cc:880
Enum< rfsv::errs > fgeteattr(const char *const, PlpDirent &)
Retrieves attributes, size and modification time of a file on the Psion.
Definition: rfsv16.cc:255
Enum< rfsv::errs > closedir(rfsvDirhandle &)
Close a directory, previously opened with opendir.
Definition: rfsv16.cc:127
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: rfsv16.cc:730
uint32_t std2attr(const uint32_t)
Definition: rfsv16.cc:939
Enum< rfsv::errs > freplacefile(const uint32_t, const char *const, uint32_t &)
Creates an named file, overwriting an existing file.
Definition: rfsv16.cc:96
Enum< rfsv::errs > copyOnPsion(const char *, const char *, void *, cpCallback_t)
Copies a file from the Psion to the Psion.
Definition: rfsv16.cc:667
uint32_t opMode(const uint32_t)
Converts an open-mode (A combination of the PSI_O_ constants.) from generic representation to the mac...
Definition: rfsv16.cc:184
Enum< rfsv::errs > devlist(uint32_t &)
Retrieves available drives on the Psion.
Definition: rfsv16.cc:323
Enum< rfsv::errs > fsetsize(const uint32_t, const uint32_t)
Resizes an open file on the Psion.
Definition: rfsv16.cc:714
uint32_t attr2std(const uint32_t)
Definition: rfsv16.cc:901
Enum< rfsv::errs > setVolumeName(const char, const char *const)
Set the name of a Psion Volume (Drive).
Definition: rfsv16.cc:891
Enum< rfsv::errs > copyFromPsion(const char *const, const char *const, void *, cpCallback_t)
Copies a file from the Psion to the local machine.
Definition: rfsv16.cc:574
fopen_attrib
Definition: rfsv16.h:104
@ P_FUNIQUE
Definition: rfsv16.h:109
@ P_FSTREAM_TEXT
Definition: rfsv16.h:111
@ P_FFORMAT
Definition: rfsv16.h:114
@ P_FDIR
Definition: rfsv16.h:113
@ P_FNODE
Definition: rfsv16.h:116
@ P_FREPLACE
Definition: rfsv16.h:107
@ P_FSTREAM
Definition: rfsv16.h:110
@ P_FTEXT
Definition: rfsv16.h:112
@ P_FAPPEND
Definition: rfsv16.h:108
@ P_FOPEN
Definition: rfsv16.h:105
@ P_FUPDATE
Definition: rfsv16.h:117
@ P_FCREATE
Definition: rfsv16.h:106
@ P_FDEVICE
Definition: rfsv16.h:115
@ P_FRANDOM
Definition: rfsv16.h:118
@ P_FSHARE
Definition: rfsv16.h:119
int getProtocolVersion()
Retrieves the protocol version.
Definition: rfsv16.h:76
Enum< rfsv::errs > dircount(const char *const, uint32_t &)
Counts number of entries in a directory.
Definition: rfsv16.cc:306
Enum< rfsv::errs > fgetmtime(const char *const, PsiTime &)
Retrieves the modification time of a file on the Psion.
Definition: rfsv16.cc:198
Enum< rfsv::errs > dir(const char *const, PlpDir &)
Reads a directory on the Psion.
Definition: rfsv16.cc:166
Enum< rfsv::errs > getResponse(bufferStore &)
Definition: rfsv16.cc:479
Enum< rfsv::errs > fopendir(const char *const, uint32_t &)
Definition: rfsv16.cc:102
Enum< rfsv::errs > mktemp(uint32_t &, std::string &)
Creates a unique temporary file.
Definition: rfsv16.cc:71
commands
Definition: rfsv16.h:79
@ SIBO_FREAD
Definition: rfsv16.h:82
@ SIBO_FDIRREAD
Definition: rfsv16.h:83
@ SIBO_RENAME
Definition: rfsv16.h:89
@ SIBO_MKDIR
Definition: rfsv16.h:94
@ SIBO_STATUSSYSTEM
Definition: rfsv16.h:98
@ SIBO_CHANGEDIR
Definition: rfsv16.h:99
@ SIBO_PATHTEST
Definition: rfsv16.h:97
@ SIBO_PARSE
Definition: rfsv16.h:93
@ SIBO_OPENUNIQUE
Definition: rfsv16.h:95
@ SIBO_FFLUSH
Definition: rfsv16.h:87
@ SIBO_FOPEN
Definition: rfsv16.h:80
@ SIBO_FINFO
Definition: rfsv16.h:91
@ SIBO_STATUSDEVICE
Definition: rfsv16.h:96
@ SIBO_FDEVICEREAD
Definition: rfsv16.h:84
@ SIBO_DELETE
Definition: rfsv16.h:90
@ SIBO_FWRITE
Definition: rfsv16.h:85
@ SIBO_SFDATE
Definition: rfsv16.h:100
@ SIBO_FCLOSE
Definition: rfsv16.h:81
@ SIBO_FSEEK
Definition: rfsv16.h:86
@ SIBO_FSETEOF
Definition: rfsv16.h:88
@ SIBO_SFSTAT
Definition: rfsv16.h:92
@ SIBO_RESPONSE
Definition: rfsv16.h:101
Enum< rfsv::errs > fopen(const uint32_t, const char *const, uint32_t &)
Opens a file.
Definition: rfsv16.cc:51
Enum< rfsv::errs > fsetattr(const char *const, const uint32_t seta, const uint32_t unseta)
Definition: rfsv16.cc:291
Enum< rfsv::errs > fcreatefile(const uint32_t, const char *const, uint32_t &)
Creates a named file.
Definition: rfsv16.cc:90
Enum< rfsv::errs > fsetmtime(const char *const, const PsiTime)
Sets the modification time of a file on the Psion.
Definition: rfsv16.cc:219
Enum< rfsv::errs > rmdir(const char *const)
Removes a directory on the Psion.
Definition: rfsv16.cc:837
Enum< rfsv::errs > readdir(rfsvDirhandle &, PlpDirent &)
Read directory entries.
Definition: rfsv16.cc:132
Enum< rfsv::errs > fwrite(const uint32_t, const unsigned char *const, const uint32_t, uint32_t &)
Write to a file on the Psion.
Definition: rfsv16.cc:541
status_enum
Definition: rfsv16.h:122
@ P_FAHIDDEN
Definition: rfsv16.h:124
@ P_FAREAD
Definition: rfsv16.h:129
@ P_FAMOD
Definition: rfsv16.h:128
@ P_FAWRITE
Definition: rfsv16.h:123
@ P_FAMASK
Definition: rfsv16.h:133
@ P_FASYSTEM
Definition: rfsv16.h:125
@ P_FADIR
Definition: rfsv16.h:127
@ P_FAVOLUME
Definition: rfsv16.h:126
@ P_FASTREAM
Definition: rfsv16.h:131
@ P_FAEXEC
Definition: rfsv16.h:130
@ P_FATEXT
Definition: rfsv16.h:132
Enum< rfsv::errs > fclose(const uint32_t)
Close a file on the Psion whih was previously opened/created by using fopen , fcreatefile ,...
Definition: rfsv16.cc:108
Enum< rfsv::errs > rename(const char *const, const char *const)
Renames a file on the Psion.
Definition: rfsv16.cc:868
Enum< rfsv::errs > mkdir(const char *const)
Creates a directory on the Psion.
Definition: rfsv16.cc:827
Enum< rfsv::errs > copyToPsion(const char *const, const char *const, void *, cpCallback_t)
Copies a file from local machine to the Psion.
Definition: rfsv16.cc:635
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