From 842a235ec4352b4d4d040743a87bc7b69daef4f9 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Fri, 7 Jun 2013 17:39:03 +0200 Subject: Bridge: Added File I/O --- libraries/Bridge/Bridge.cpp | 47 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'libraries/Bridge/Bridge.cpp') diff --git a/libraries/Bridge/Bridge.cpp b/libraries/Bridge/Bridge.cpp index e612ad8..2f30750 100644 --- a/libraries/Bridge/Bridge.cpp +++ b/libraries/Bridge/Bridge.cpp @@ -101,6 +101,53 @@ void BridgeClass::writeCommandInput(uint8_t handle, transfer(cmd, 2, buff, size, NULL, 0); } +uint8_t BridgeClass::fileOpen(String &file, uint8_t mode, uint8_t &err) { + uint8_t cmd[] = {'F', mode}; + uint8_t res[2]; + transfer(cmd, 2, (uint8_t*)file.c_str(), file.length(), res, 2); + err = res[0]; + return res[1]; +} + +void BridgeClass::fileClose(uint8_t handle) { + uint8_t cmd[] = {'f', handle}; + transfer(cmd, 2); +} + +unsigned int BridgeClass::fileRead(uint8_t handle, uint8_t *buff, unsigned int size, uint8_t &err) { + uint8_t s = size > 255 ? 255 : size-1; + uint8_t cmd[] = {'G', handle, s}; + uint8_t l = transfer(cmd, 3, buff, size) - 1; + err = buff[0]; // First byte is error code + if (l>0) { + // Shift the reminder of buffer + for (uint8_t i=0; i> 24) & 0xFF, + (position >> 16) & 0xFF, + (position >> 8) & 0xFF, + position & 0xFF + }; + uint8_t res[1]; + transfer(cmd, 6, res, 1); + err = res[0]; +} + unsigned int BridgeClass::readMessage(uint8_t *buff, unsigned int size) { uint8_t tmp[] = { 'm' }; return transfer(tmp, 1, buff, size); -- cgit v1.2.3-18-g5258