diff options
| author | Fritz Elfert <felfert@to.com> | 2002-03-20 02:18:51 +0000 | 
|---|---|---|
| committer | Fritz Elfert <felfert@to.com> | 2002-03-20 02:18:51 +0000 | 
| commit | 1d9b2e0e156f9a58bd642b9f9e8b2a08e768f5ed (patch) | |
| tree | 580f6fa06ce0d114f3861c709203af4c3d86237a /lib/rpcs32.cc | |
| parent | bedd0177bc1ec1bf3c425e034958209554c20171 (diff) | |
| download | plptools-1d9b2e0e156f9a58bd642b9f9e8b2a08e768f5ed.tar.gz plptools-1d9b2e0e156f9a58bd642b9f9e8b2a08e768f5ed.tar.bz2 plptools-1d9b2e0e156f9a58bd642b9f9e8b2a08e768f5ed.zip  | |
 - rpcs: Implemented scratch RAM access.
 - Updated spec file (not complete)
 - Updated KDE translations
 - kioslave and property-dialog now translate correctly
 - ppsocket: Added a patch for FreeBSD
 - plpftp: Some experimental code for testing
Diffstat (limited to 'lib/rpcs32.cc')
| -rw-r--r-- | lib/rpcs32.cc | 72 | 
1 files changed, 55 insertions, 17 deletions
diff --git a/lib/rpcs32.cc b/lib/rpcs32.cc index 64ac5b4..b1cbe49 100644 --- a/lib/rpcs32.cc +++ b/lib/rpcs32.cc @@ -169,45 +169,83 @@ regReadIter(u_int16_t handle)  }  Enum<rfsv::errs> rpcs32:: -configOpen(void) +configOpen(u_int16_t &handle, u_int32_t size)  {      bufferStore a;      Enum<rfsv::errs> res; +    a.addDWord(size);      if (!sendCommand(rpcs::CONFIG_OPEN, a))  	return rfsv::E_PSI_FILE_DISC;      res = getResponse(a, true); -    cout << "co: r=" << res << " a=" << a << endl; -    if (a.getLen() > 0) -	hhh = a.getDWord(0); -    return rfsv::E_PSI_GEN_NONE; +    if (res == rfsv::E_PSI_GEN_NONE && (a.getLen() >= 2)) +	handle = a.getWord(0); +    return res;  }  Enum<rfsv::errs> rpcs32:: -configRead(void) +configRead(u_int32_t size, bufferStore &ret)  {      bufferStore a; +    u_int16_t handle;      Enum<rfsv::errs> res; -    int l; -    FILE *f; -    f = fopen("blah", "w"); +    ret.init(); +    if ((res = configOpen(handle, size)) != rfsv::E_PSI_GEN_NONE) +	return res;      do {  	a.init(); -	a.addDWord(hhh); +	a.addWord(handle); +	a.addDWord(2047);  	if (!sendCommand(rpcs::CONFIG_READ, a))  	    return rfsv::E_PSI_FILE_DISC; -	if ((res = getResponse(a, true)) != rfsv::E_PSI_GEN_NONE) +	if ((res = getResponse(a, true)) != rfsv::E_PSI_GEN_NONE) { +	    closeHandle(handle); +	    return res; +	} +	if (a.getLen() > 0) +	    ret.addBuff(a); +    } while (a.getLen() > 0); +    return rfsv::E_PSI_GEN_NONE; +} + +Enum<rfsv::errs> rpcs32:: +configWrite(bufferStore data) +{ +    bufferStore a; +    u_int16_t handle; +    Enum<rfsv::errs> res; + +    return rfsv::E_PSI_GEN_NONE; +    if ((res = configOpen(handle, data.getLen())) != rfsv::E_PSI_GEN_NONE) +	return res; +    do { +	a.init(); +	long l = (data.getLen() > 2047) ? 2047 : data.getLen(); +	a.addWord(handle); +	a.addBuff(data, l); +	data.discardFirstBytes(l); +	if (!sendCommand(rpcs::CONFIG_WRITE, a)) +	    return rfsv::E_PSI_FILE_DISC; +	if ((res = getResponse(a, true)) != rfsv::E_PSI_GEN_NONE) { +	    closeHandle(handle);  	    return res; -	l = a.getLen(); -	cout << "cr: " << l << endl; -	fwrite(a.getString(0), 1, l, f); -    } while (l > 0); -    fclose(f); -//cout << "cr: r=" << res << " a=" << a << endl; +	} +    } while (data.getLen() > 0);      return rfsv::E_PSI_GEN_NONE;  } +Enum<rfsv::errs> rpcs32:: +closeHandle(u_int16_t handle) +{ +    bufferStore a; + +    a.addWord(handle); +    if (!sendCommand(rpcs::CLOSE_HANDLE, a)) +	return rfsv::E_PSI_FILE_DISC; +    return getResponse(a, true); +} +  /*   * Local variables:   * c-basic-offset: 4  | 
