plptools
Loading...
Searching...
No Matches
psion.cpp
Go to the documentation of this file.
1/*
2 * This file is part of plptools.
3 *
4 * Copyright (C) 2002 Daniel Brahneborg <basic@chello.se>
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#include "config.h"
21
22#include "psion.h"
23
24#include <cli_utils.h>
25#include <plpintl.h>
26#include <rfsv.h>
27#include <rpcs.h>
28#include <rfsvfactory.h>
29#include <rpcsfactory.h>
30#include <bufferarray.h>
31#include <bufferstore.h>
32#include <tcpsocket.h>
33
34#include <dirent.h>
35#include <netdb.h>
36
37#include <stdio.h>
38
40{
41 disconnect();
42}
43
44bool
46{
47 int sockNum = cli_utils::lookup_default_port();
48
49#if 0
50 setlocale (LC_ALL, "");
51 textdomain(PACKAGE);
52#endif
53
54#if 0
55 // Command line parameter processing
56 if ((argc > 2) && !strcmp(argv[1], "-p")) {
57 sockNum = atoi(argv[2]);
58 argc -= 2;
59 for (int i = 1; i < argc; i++)
60 argv[i] = argv[i + 2];
61 }
62#endif
63
64 m_skt = new TCPSocket();
65 if (!m_skt->connect(NULL, sockNum)) {
66 return false;
67 }
68 m_skt2 = new TCPSocket();
69 if (!m_skt2->connect(NULL, sockNum)) {
70 return false;
71 }
76 if ((m_rfsv != NULL) && (m_rpcs != NULL))
77 return true;
78 return false;
79}
80
82Psion::copyFromPsion(const char * const from, int fd,
83 cpCallback_t func)
84{
85 return m_rfsv->copyFromPsion(from, fd, func);
86}
87
89Psion::copyToPsion(const char * const from, const char * const to,
90 void *, cpCallback_t func)
91{
93 res = m_rfsv->copyToPsion(from, to, NULL, func);
94// printf("Returned to Psion\n");
95 return res;
96}
97
99Psion::devinfo(const char drive, PlpDrive& plpDrive)
100{
101 return m_rfsv->devinfo(drive, plpDrive);
102}
103
105Psion::devlist(uint32_t& devbits)
106{
108 res = m_rfsv->devlist(devbits);
109 return res;
110}
111
113Psion::dir(const char* dir, PlpDir& files)
114{
115 return m_rfsv->dir(dir, files);
116}
117
118bool
119Psion::dirExists(const char* name)
120{
121 rfsvDirhandle handle;
123 bool exists = false;
124 res = m_rfsv->opendir(rfsv::PSI_A_ARCHIVE, name, handle);
125 if (res == rfsv::E_PSI_GEN_NONE)
126 exists = true;
127 res = m_rfsv->closedir(handle);
128 return exists;
129}
130
131void
133{
134 delete m_rfsv;
135 delete m_rpcs;
136 delete m_skt;
137 delete m_skt2;
138 delete m_rfsvFactory;
139 delete m_rpcsFactory;
140}
141
143Psion::mkdir(const char* dir)
144{
145 return m_rfsv->mkdir(dir);
146}
147
148void
149Psion::remove(const char* name)
150{
151 m_rfsv->remove(name);
152}
153
Wrapper class featuring range-checking and string representation of enumerated values.
Definition: Enum.h:136
A class representing information about a Disk drive on the psion.
Definition: plpdirent.h:196
virtual Enum< rfsv::errs > dir(const char *dir, PlpDir &files)
Definition: psion.cpp:113
rfsvfactory * m_rfsvFactory
Definition: psion.h:68
rfsv * m_rfsv
Definition: psion.h:71
virtual Enum< rfsv::errs > devinfo(const char drive, PlpDrive &plpDrive)
Definition: psion.cpp:99
TCPSocket * m_skt
Definition: psion.h:66
rpcs * m_rpcs
Definition: psion.h:70
virtual void disconnect()
Definition: psion.cpp:132
virtual Enum< rfsv::errs > devlist(uint32_t &devbits)
Definition: psion.cpp:105
virtual bool dirExists(const char *name)
Definition: psion.cpp:119
virtual void remove(const char *name)
Definition: psion.cpp:149
rpcsfactory * m_rpcsFactory
Definition: psion.h:69
virtual Enum< rfsv::errs > mkdir(const char *dir)
Definition: psion.cpp:143
TCPSocket * m_skt2
Definition: psion.h:67
virtual Enum< rfsv::errs > copyToPsion(const char *const from, const char *const to, void *, cpCallback_t func)
Definition: psion.cpp:89
virtual Enum< rfsv::errs > copyFromPsion(const char *const from, int fd, cpCallback_t func)
Definition: psion.cpp:82
virtual ~Psion()
Definition: psion.cpp:39
virtual bool connect()
Definition: psion.cpp:45
A class for dealing with sockets.
Definition: tcpsocket.h:38
virtual bool connect(const char *const Peer, int PeerPort, const char *const Host=NULL, int HostPort=0)
Connects to a given host.
Definition: tcpsocket.cc:153
A helper class for storing intermediate internal information in rfsv16 and rfsv32 .
Definition: rfsv.h:53
virtual Enum< errs > mkdir(const char *const name)=0
Creates a directory on the Psion.
virtual Enum< errs > copyToPsion(const char *const from, const char *const to, void *, cpCallback_t func)=0
Copies a file from local machine to the Psion.
virtual Enum< errs > opendir(const uint32_t attr, const char *const name, rfsvDirhandle &handle)=0
Open a directory for reading with readdir.
virtual Enum< errs > copyFromPsion(const char *from, const char *to, void *, cpCallback_t func)=0
Copies a file from the Psion to the local machine.
virtual Enum< errs > devlist(uint32_t &devbits)=0
Retrieves available drives on the Psion.
@ E_PSI_GEN_NONE
Definition: rfsv.h:110
@ PSI_A_ARCHIVE
Definition: rfsv.h:199
virtual Enum< errs > closedir(rfsvDirhandle &handle)=0
Close a directory, previously opened with opendir.
virtual Enum< errs > remove(const char *const name)=0
Removes a file on the Psion.
virtual Enum< errs > dir(const char *const name, PlpDir &ret)=0
Reads a directory on the Psion.
virtual Enum< errs > devinfo(const char drive, PlpDrive &dinfo)=0
Retrieves details about a drive.
A factory for automatically instantiating the correct rfsv protocol variant depending on the connecte...
Definition: rfsvfactory.h:33
virtual rfsv * create(bool)
Creates a new rfsv instance.
Definition: rfsvfactory.cc:54
A factory for automatically instantiating the correct protocol variant depending on the connected Psi...
Definition: rpcsfactory.h:32
virtual rpcs * create(bool reconnect)
Creates a new rpcs instance.
Definition: rpcsfactory.cc:47
int lookup_default_port()
Definition: cli_utils.cc:43
#define textdomain(Domain)
Definition: plpintl.h:37
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