Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: Adafruit_GFX_128x64 DS3231 PinDetect SDFileSystem USBDevice mbed RealtimeMath MODSERIAL
sync.cpp@21:2fa676f214fe, 2014-06-07 (annotated)
- Committer:
- ellingjp
- Date:
- Sat Jun 07 07:12:25 2014 +0000
- Revision:
- 21:2fa676f214fe
- Parent:
- 9:a711b5b34d73
- Child:
- 22:9350752f5414
Working sync
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| ellingjp | 9:a711b5b34d73 | 1 | #include "mbed.h" | 
| ellingjp | 9:a711b5b34d73 | 2 | #include "sync.h" | 
| ellingjp | 21:2fa676f214fe | 3 | #include "DS3231.h" | 
| ellingjp | 21:2fa676f214fe | 4 | #include "Timeout.h" | 
| ellingjp | 21:2fa676f214fe | 5 | #include "SDFileSystem.h" | 
| ellingjp | 21:2fa676f214fe | 6 | #include "MODSERIAL.h" | 
| ellingjp | 21:2fa676f214fe | 7 | #include "debug.h" | 
| ellingjp | 21:2fa676f214fe | 8 | #include <string> | 
| ellingjp | 21:2fa676f214fe | 9 | #include <string.h> | 
| ellingjp | 21:2fa676f214fe | 10 | #include <stdlib.h> | 
| ellingjp | 21:2fa676f214fe | 11 | #include <stdio.h> | 
| ellingjp | 21:2fa676f214fe | 12 | #include <limits.h> | 
| ellingjp | 21:2fa676f214fe | 13 | #include "comms.h" | 
| ellingjp | 9:a711b5b34d73 | 14 | |
| ellingjp | 21:2fa676f214fe | 15 | enum state {IDLE, CAPTURE, SYNC}; | 
| ellingjp | 21:2fa676f214fe | 16 | extern enum state State; | 
| ellingjp | 21:2fa676f214fe | 17 | extern DS3231 rtc; | 
| ellingjp | 21:2fa676f214fe | 18 | Timeout t; | 
| ellingjp | 9:a711b5b34d73 | 19 | |
| ellingjp | 21:2fa676f214fe | 20 | //MODSERIAL bt(P0_19, P0_18); // tx, rx | 
| ellingjp | 21:2fa676f214fe | 21 | Comms btComm; | 
| ellingjp | 21:2fa676f214fe | 22 | uint16_t packetSeq = 0; | 
| ellingjp | 9:a711b5b34d73 | 23 | |
| ellingjp | 21:2fa676f214fe | 24 | bool sync_init() | 
| ellingjp | 21:2fa676f214fe | 25 | { | 
| ellingjp | 9:a711b5b34d73 | 26 | return true; | 
| ellingjp | 9:a711b5b34d73 | 27 | } | 
| ellingjp | 9:a711b5b34d73 | 28 | |
| ellingjp | 21:2fa676f214fe | 29 | |
| ellingjp | 21:2fa676f214fe | 30 | |
| ellingjp | 21:2fa676f214fe | 31 | //void setRtc(packet *p) | 
| ellingjp | 21:2fa676f214fe | 32 | //{ | 
| ellingjp | 21:2fa676f214fe | 33 | // int dayOfWeek=0, date, month, year, hours, minutes, seconds; | 
| ellingjp | 21:2fa676f214fe | 34 | // uint16_t len; | 
| ellingjp | 21:2fa676f214fe | 35 | // len = getLen(); | 
| ellingjp | 21:2fa676f214fe | 36 | // int i = 0; | 
| ellingjp | 21:2fa676f214fe | 37 | // for(i = 0; i < len; i++) | 
| ellingjp | 21:2fa676f214fe | 38 | // { | 
| ellingjp | 21:2fa676f214fe | 39 | // buff[i] = bt.getc(); | 
| ellingjp | 21:2fa676f214fe | 40 | // } | 
| ellingjp | 21:2fa676f214fe | 41 | // buff[i] = 0; // end the string with a zero | 
| ellingjp | 21:2fa676f214fe | 42 | // sscanf(buff, "%04d-%02d-%02d %02d:%02d:%02d",&year,&month,&date,&hours,&minutes,&seconds); | 
| ellingjp | 21:2fa676f214fe | 43 | // rtc.setDate(dayOfWeek, date, month, year); | 
| ellingjp | 21:2fa676f214fe | 44 | // rtc.setTime(hours, minutes, seconds); | 
| ellingjp | 21:2fa676f214fe | 45 | // //sendResponse(CMD_RTCSET, ACK); | 
| ellingjp | 21:2fa676f214fe | 46 | //} | 
| ellingjp | 21:2fa676f214fe | 47 | |
| ellingjp | 21:2fa676f214fe | 48 | //void listSessions() | 
| ellingjp | 21:2fa676f214fe | 49 | //{ //todo buffer this with buff | 
| ellingjp | 21:2fa676f214fe | 50 | // DIR *dp; | 
| ellingjp | 21:2fa676f214fe | 51 | // struct dirent *dirp; | 
| ellingjp | 21:2fa676f214fe | 52 | // dp = opendir("/sd/"); | 
| ellingjp | 21:2fa676f214fe | 53 | // while((dirp = readdir(dp)) != NULL) { | 
| ellingjp | 21:2fa676f214fe | 54 | // bt.puts(dirp->d_name); | 
| ellingjp | 21:2fa676f214fe | 55 | // bt.putc(','); | 
| ellingjp | 21:2fa676f214fe | 56 | // //todo: put size here? | 
| ellingjp | 21:2fa676f214fe | 57 | // bt.puts("\r\\n"); | 
| ellingjp | 21:2fa676f214fe | 58 | // } | 
| ellingjp | 21:2fa676f214fe | 59 | // closedir(dp); | 
| ellingjp | 21:2fa676f214fe | 60 | //} | 
| ellingjp | 21:2fa676f214fe | 61 | |
| ellingjp | 21:2fa676f214fe | 62 | //void syncSession() | 
| ellingjp | 21:2fa676f214fe | 63 | //{ | 
| ellingjp | 21:2fa676f214fe | 64 | // //sendResponse(buf[0], resp); | 
| ellingjp | 21:2fa676f214fe | 65 | // //populate packet: | 
| ellingjp | 21:2fa676f214fe | 66 | // //1 byte CMD_SYNCSESSION 0x03 | 
| ellingjp | 21:2fa676f214fe | 67 | // //2 bytes packet number | 
| ellingjp | 21:2fa676f214fe | 68 | // //2 bytes current packet's data's length | 
| ellingjp | 21:2fa676f214fe | 69 | // //2 bytes checksum | 
| ellingjp | 21:2fa676f214fe | 70 | //} | 
| ellingjp | 21:2fa676f214fe | 71 | // | 
| ellingjp | 21:2fa676f214fe | 72 | |
| ellingjp | 21:2fa676f214fe | 73 | /* Sends a file over BT stream. Returns | 
| ellingjp | 21:2fa676f214fe | 74 | * true on success, false on failure. */ | 
| ellingjp | 21:2fa676f214fe | 75 | bool sendFile(string filename) | 
| ellingjp | 21:2fa676f214fe | 76 | { | 
| ellingjp | 21:2fa676f214fe | 77 | PC_PRINTLNF("sendFile: Trying to open file %s", filename.c_str()); | 
| ellingjp | 21:2fa676f214fe | 78 | FILE *fp = fopen(filename.c_str(), "r"); | 
| ellingjp | 21:2fa676f214fe | 79 | |
| ellingjp | 21:2fa676f214fe | 80 | if (fp == NULL) { | 
| ellingjp | 21:2fa676f214fe | 81 | PC_PRINTLNF("sendFile: Error opening file %s", filename.c_str()); | 
| ellingjp | 21:2fa676f214fe | 82 | return false; | 
| ellingjp | 21:2fa676f214fe | 83 | } | 
| ellingjp | 21:2fa676f214fe | 84 | |
| ellingjp | 21:2fa676f214fe | 85 | fseek(fp, 0L, SEEK_END); | 
| ellingjp | 21:2fa676f214fe | 86 | int file_size = ftell(fp); | 
| ellingjp | 21:2fa676f214fe | 87 | fseek(fp, 0L, SEEK_SET); | 
| ellingjp | 21:2fa676f214fe | 88 | |
| ellingjp | 21:2fa676f214fe | 89 | Packet *firstPacket = Packet::create(CMD_SYNCOLDEST, 0x00, sizeof(file_size), (uint8_t *) &file_size); | 
| ellingjp | 21:2fa676f214fe | 90 | btComm.sendPacket(firstPacket); | 
| ellingjp | 21:2fa676f214fe | 91 | |
| ellingjp | 21:2fa676f214fe | 92 | PC_PRINTLNF("sendFile: first packet checksum = %x", firstPacket->checkSum); | 
| ellingjp | 21:2fa676f214fe | 93 | |
| ellingjp | 21:2fa676f214fe | 94 | delete firstPacket; | 
| ellingjp | 9:a711b5b34d73 | 95 | |
| ellingjp | 21:2fa676f214fe | 96 | Packet *res; | 
| ellingjp | 21:2fa676f214fe | 97 | int n = btComm.receivePacket(&res, TIMEOUT); | 
| ellingjp | 21:2fa676f214fe | 98 | if (n <= 0) { | 
| ellingjp | 21:2fa676f214fe | 99 | PC_PRINTLN("sendFile: timeout waiting for ack!"); | 
| ellingjp | 21:2fa676f214fe | 100 | fclose(fp); | 
| ellingjp | 21:2fa676f214fe | 101 | return false; | 
| ellingjp | 21:2fa676f214fe | 102 | } | 
| ellingjp | 21:2fa676f214fe | 103 | |
| ellingjp | 21:2fa676f214fe | 104 | if (res->cmd != ACK) { | 
| ellingjp | 21:2fa676f214fe | 105 | PC_PRINTLN("sendFile: packet received was not an ack!"); | 
| ellingjp | 21:2fa676f214fe | 106 | delete res; | 
| ellingjp | 21:2fa676f214fe | 107 | fclose(fp); | 
| ellingjp | 21:2fa676f214fe | 108 | return false; | 
| ellingjp | 21:2fa676f214fe | 109 | } | 
| ellingjp | 21:2fa676f214fe | 110 | |
| ellingjp | 21:2fa676f214fe | 111 | delete res; | 
| ellingjp | 21:2fa676f214fe | 112 | |
| ellingjp | 21:2fa676f214fe | 113 | uint8_t *d = new uint8_t[PACKET_MAX_DATA]; | 
| ellingjp | 21:2fa676f214fe | 114 | |
| ellingjp | 21:2fa676f214fe | 115 | PC_PRINTLN("sendFile: created buffer"); | 
| ellingjp | 21:2fa676f214fe | 116 | int len; | 
| ellingjp | 21:2fa676f214fe | 117 | int numPackets = 0; | 
| ellingjp | 21:2fa676f214fe | 118 | while ( (len = fread(d, 1, PACKET_MAX_DATA, fp) ) > 0 ) { | 
| ellingjp | 21:2fa676f214fe | 119 | PC_PRINTLNF("sendFile: packet number: %d ", numPackets); | 
| ellingjp | 21:2fa676f214fe | 120 | PC_PRINTLNF("length: %d", len); | 
| ellingjp | 21:2fa676f214fe | 121 | |
| ellingjp | 21:2fa676f214fe | 122 | Packet *p = Packet::create(CMD_SYNCOLDEST, 0x00, len, d); | 
| ellingjp | 21:2fa676f214fe | 123 | PC_PRINTLNF("sendFile: packet checksum = %x", p->checkSum); | 
| ellingjp | 21:2fa676f214fe | 124 | btComm.sendPacket(p); | 
| ellingjp | 21:2fa676f214fe | 125 | delete p; | 
| ellingjp | 21:2fa676f214fe | 126 | |
| ellingjp | 21:2fa676f214fe | 127 | for (int i = 0; i < len; i++) { | 
| ellingjp | 21:2fa676f214fe | 128 | PC_PRINTLNF("sendFile: packet[%d] = ", i); | 
| ellingjp | 21:2fa676f214fe | 129 | PC_PRINTLNF("%x", d[i]); | 
| ellingjp | 21:2fa676f214fe | 130 | } | 
| ellingjp | 21:2fa676f214fe | 131 | |
| ellingjp | 21:2fa676f214fe | 132 | PC_PRINTLNF("sendFile: sent packet of length %d", len); | 
| ellingjp | 21:2fa676f214fe | 133 | PC_PRINTLN("sendFile: waiting for ack..."); | 
| ellingjp | 21:2fa676f214fe | 134 | |
| ellingjp | 21:2fa676f214fe | 135 | Packet *resp; | 
| ellingjp | 21:2fa676f214fe | 136 | int n = btComm.receivePacket(&resp, TIMEOUT); | 
| ellingjp | 21:2fa676f214fe | 137 | if (n <= 0) { | 
| ellingjp | 21:2fa676f214fe | 138 | PC_PRINTLN("sendFile: timeout waiting for ack!"); | 
| ellingjp | 21:2fa676f214fe | 139 | fclose(fp); | 
| ellingjp | 21:2fa676f214fe | 140 | return false; | 
| ellingjp | 21:2fa676f214fe | 141 | } | 
| ellingjp | 21:2fa676f214fe | 142 | |
| ellingjp | 21:2fa676f214fe | 143 | if (resp->cmd != ACK) { | 
| ellingjp | 21:2fa676f214fe | 144 | PC_PRINTLN("sendFile: packet received was not an ack!"); | 
| ellingjp | 21:2fa676f214fe | 145 | delete resp; | 
| ellingjp | 21:2fa676f214fe | 146 | fclose(fp); | 
| ellingjp | 21:2fa676f214fe | 147 | return false; | 
| ellingjp | 21:2fa676f214fe | 148 | } | 
| ellingjp | 21:2fa676f214fe | 149 | |
| ellingjp | 21:2fa676f214fe | 150 | delete resp; | 
| ellingjp | 21:2fa676f214fe | 151 | |
| ellingjp | 21:2fa676f214fe | 152 | PC_PRINTLN("sendFile: received ack!"); | 
| ellingjp | 21:2fa676f214fe | 153 | numPackets++; | 
| ellingjp | 21:2fa676f214fe | 154 | } | 
| ellingjp | 21:2fa676f214fe | 155 | delete[] d; | 
| ellingjp | 21:2fa676f214fe | 156 | |
| ellingjp | 21:2fa676f214fe | 157 | PC_PRINTLNF("sendFile: done sending %s in ", filename.c_str()); | 
| ellingjp | 21:2fa676f214fe | 158 | PC_PRINTLNF("%d packets.", numPackets); | 
| ellingjp | 21:2fa676f214fe | 159 | // Appears to be a bug where feof isn't defined, so no error checking :( | 
| ellingjp | 21:2fa676f214fe | 160 | // if (!feof(fp)) { | 
| ellingjp | 21:2fa676f214fe | 161 | // PC_PRINTLNF("sendFile: Error reading file %s", absolute_filename.c_str()); | 
| ellingjp | 21:2fa676f214fe | 162 | // return false; | 
| ellingjp | 21:2fa676f214fe | 163 | // } | 
| ellingjp | 21:2fa676f214fe | 164 | |
| ellingjp | 21:2fa676f214fe | 165 | fclose(fp); | 
| ellingjp | 21:2fa676f214fe | 166 | return true; | 
| ellingjp | 9:a711b5b34d73 | 167 | } | 
| ellingjp | 9:a711b5b34d73 | 168 | |
| ellingjp | 21:2fa676f214fe | 169 | /* Returns absolute filename of the oldest log file on the SD card */ | 
| ellingjp | 21:2fa676f214fe | 170 | bool getOldestFile(string *oldest) | 
| ellingjp | 21:2fa676f214fe | 171 | { | 
| ellingjp | 21:2fa676f214fe | 172 | |
| ellingjp | 21:2fa676f214fe | 173 | PC_PRINTLN("Finding oldest file..."); | 
| ellingjp | 21:2fa676f214fe | 174 | |
| ellingjp | 21:2fa676f214fe | 175 | // Ensure all fields get set to zero | 
| ellingjp | 21:2fa676f214fe | 176 | long long file_time = {0}; | 
| ellingjp | 21:2fa676f214fe | 177 | long long oldest_time = LLONG_MAX; // ensures first file gets set to oldest | 
| ellingjp | 21:2fa676f214fe | 178 | string oldest_file; | 
| ellingjp | 21:2fa676f214fe | 179 | |
| ellingjp | 21:2fa676f214fe | 180 | DIR *dp; | 
| ellingjp | 21:2fa676f214fe | 181 | struct dirent *dirp; | 
| ellingjp | 21:2fa676f214fe | 182 | dp = opendir("/sd/"); | 
| ellingjp | 21:2fa676f214fe | 183 | |
| ellingjp | 21:2fa676f214fe | 184 | if (dp == NULL) { | 
| ellingjp | 21:2fa676f214fe | 185 | PC_PRINTLN("syncOldestSession: Error opening directory"); | 
| ellingjp | 21:2fa676f214fe | 186 | return false; | 
| ellingjp | 21:2fa676f214fe | 187 | } | 
| ellingjp | 21:2fa676f214fe | 188 | |
| ellingjp | 21:2fa676f214fe | 189 | while((dirp = readdir(dp)) != NULL) { | 
| ellingjp | 21:2fa676f214fe | 190 | char *strp = dirp->d_name; | 
| ellingjp | 21:2fa676f214fe | 191 | |
| ellingjp | 21:2fa676f214fe | 192 | // Verify we are looking at a .log file | 
| ellingjp | 21:2fa676f214fe | 193 | char ext[5]; | 
| ellingjp | 21:2fa676f214fe | 194 | memcpy(ext, strp+strlen(strp) - 4, 5); | 
| ellingjp | 21:2fa676f214fe | 195 | if (strncmp(ext, ".log", 4) == 0) { | 
| ellingjp | 21:2fa676f214fe | 196 | PC_PRINTLNF("syncOldestSession: reading file %s", dirp->d_name); | 
| ellingjp | 21:2fa676f214fe | 197 | |
| ellingjp | 21:2fa676f214fe | 198 | file_time = strtoll(strp, NULL, 10); | 
| ellingjp | 21:2fa676f214fe | 199 | |
| ellingjp | 21:2fa676f214fe | 200 | // If file time is older than oldest time, set the oldest file | 
| ellingjp | 21:2fa676f214fe | 201 | // to the current file | 
| ellingjp | 21:2fa676f214fe | 202 | if (file_time < oldest_time) { | 
| ellingjp | 21:2fa676f214fe | 203 | PC_PRINTLN("syncOldestSession: updating oldest file"); | 
| ellingjp | 21:2fa676f214fe | 204 | oldest_time = file_time; | 
| ellingjp | 21:2fa676f214fe | 205 | oldest_file = strp; | 
| ellingjp | 21:2fa676f214fe | 206 | } | 
| ellingjp | 21:2fa676f214fe | 207 | } | 
| ellingjp | 9:a711b5b34d73 | 208 | } | 
| ellingjp | 9:a711b5b34d73 | 209 | |
| ellingjp | 21:2fa676f214fe | 210 | PC_PRINTLNF("getOldestFile: prepending /sd/ to %s", oldest_file.c_str()); | 
| ellingjp | 21:2fa676f214fe | 211 | *oldest = "/sd/"; | 
| ellingjp | 21:2fa676f214fe | 212 | *oldest += oldest_file; | 
| ellingjp | 21:2fa676f214fe | 213 | |
| ellingjp | 21:2fa676f214fe | 214 | closedir(dp); | 
| ellingjp | 21:2fa676f214fe | 215 | return true; | 
| ellingjp | 21:2fa676f214fe | 216 | } | 
| ellingjp | 21:2fa676f214fe | 217 | |
| ellingjp | 21:2fa676f214fe | 218 | bool syncOldestSession() | 
| ellingjp | 21:2fa676f214fe | 219 | { | 
| ellingjp | 21:2fa676f214fe | 220 | string oldest; | 
| ellingjp | 21:2fa676f214fe | 221 | |
| ellingjp | 21:2fa676f214fe | 222 | if (getOldestFile(&oldest)) | 
| ellingjp | 21:2fa676f214fe | 223 | return sendFile(oldest); | 
| ellingjp | 21:2fa676f214fe | 224 | |
| ellingjp | 21:2fa676f214fe | 225 | return false; | 
| ellingjp | 21:2fa676f214fe | 226 | } | 
| ellingjp | 21:2fa676f214fe | 227 | |
| ellingjp | 21:2fa676f214fe | 228 | bool deleteOldestSession() | 
| ellingjp | 21:2fa676f214fe | 229 | { | 
| ellingjp | 21:2fa676f214fe | 230 | string oldest; | 
| ellingjp | 21:2fa676f214fe | 231 | |
| ellingjp | 21:2fa676f214fe | 232 | if (getOldestFile(&oldest)) { | 
| ellingjp | 21:2fa676f214fe | 233 | PC_PRINTLNF("deleteOldestSession: deleting %s", oldest.c_str()); | 
| ellingjp | 21:2fa676f214fe | 234 | |
| ellingjp | 21:2fa676f214fe | 235 | if (remove(oldest.c_str()) == 0) { | 
| ellingjp | 21:2fa676f214fe | 236 | PC_PRINTLN("deleteOldestSession: delete success"); | 
| ellingjp | 21:2fa676f214fe | 237 | // send ack | 
| ellingjp | 21:2fa676f214fe | 238 | return true; | 
| ellingjp | 21:2fa676f214fe | 239 | } | 
| ellingjp | 21:2fa676f214fe | 240 | } | 
| ellingjp | 21:2fa676f214fe | 241 | |
| ellingjp | 21:2fa676f214fe | 242 | // send ack | 
| ellingjp | 21:2fa676f214fe | 243 | |
| ellingjp | 21:2fa676f214fe | 244 | return false; | 
| ellingjp | 21:2fa676f214fe | 245 | } | 
| ellingjp | 21:2fa676f214fe | 246 | |
| ellingjp | 21:2fa676f214fe | 247 | void sync() | 
| ellingjp | 21:2fa676f214fe | 248 | { | 
| ellingjp | 21:2fa676f214fe | 249 | PC_PRINTLN("Entered sync mode..."); | 
| ellingjp | 21:2fa676f214fe | 250 | while(State == SYNC) { | 
| ellingjp | 21:2fa676f214fe | 251 | PC_PRINTLN("Waiting for packet...") | 
| ellingjp | 21:2fa676f214fe | 252 | Packet *p; | 
| ellingjp | 21:2fa676f214fe | 253 | int ret = btComm.receivePacket(&p, TIMEOUT); | 
| ellingjp | 21:2fa676f214fe | 254 | if (ret == 0) { | 
| ellingjp | 21:2fa676f214fe | 255 | PC_PRINTLN("Timeout!"); | 
| ellingjp | 21:2fa676f214fe | 256 | continue; | 
| ellingjp | 21:2fa676f214fe | 257 | } else if (ret < 0) { | 
| ellingjp | 21:2fa676f214fe | 258 | PC_PRINTLN("Received bad packet :("); | 
| ellingjp | 21:2fa676f214fe | 259 | continue; | 
| ellingjp | 21:2fa676f214fe | 260 | } | 
| ellingjp | 21:2fa676f214fe | 261 | |
| ellingjp | 21:2fa676f214fe | 262 | PC_PRINTLNF("cmd: %x", p->cmd); | 
| ellingjp | 21:2fa676f214fe | 263 | PC_PRINTLNF("pnum: %x", p->packetNumber); | 
| ellingjp | 21:2fa676f214fe | 264 | PC_PRINTLNF("len: %x", p->dataLength); | 
| ellingjp | 21:2fa676f214fe | 265 | for (int i = 0; i < p->dataLength; i++) { | 
| ellingjp | 21:2fa676f214fe | 266 | PC_PRINTF("data[%d]: ", i); | 
| ellingjp | 21:2fa676f214fe | 267 | PC_PRINTLNF("%x", p->data[i]); | 
| ellingjp | 21:2fa676f214fe | 268 | } | 
| ellingjp | 21:2fa676f214fe | 269 | PC_PRINTLNF("check: %x", p->checkSum); | 
| ellingjp | 21:2fa676f214fe | 270 | switch(p->cmd) { | 
| ellingjp | 21:2fa676f214fe | 271 | case CMD_SYNCOLDEST: | 
| ellingjp | 21:2fa676f214fe | 272 | if (!syncOldestSession()) | 
| ellingjp | 21:2fa676f214fe | 273 | PC_PRINTLN("Sync oldest session failed!"); | 
| ellingjp | 21:2fa676f214fe | 274 | break; | 
| ellingjp | 21:2fa676f214fe | 275 | case CMD_DELETEOLDEST: | 
| ellingjp | 21:2fa676f214fe | 276 | if (!deleteOldestSession()) | 
| ellingjp | 21:2fa676f214fe | 277 | PC_PRINTLN("Delete oldest session failed!"); | 
| ellingjp | 21:2fa676f214fe | 278 | break; | 
| ellingjp | 21:2fa676f214fe | 279 | // case CMD_RTCSET: | 
| ellingjp | 21:2fa676f214fe | 280 | // //setRtc(p); | 
| ellingjp | 21:2fa676f214fe | 281 | // break; | 
| ellingjp | 21:2fa676f214fe | 282 | // case CMD_LISTSESSIONS: | 
| ellingjp | 21:2fa676f214fe | 283 | // listSessions(); | 
| ellingjp | 21:2fa676f214fe | 284 | // break; | 
| ellingjp | 21:2fa676f214fe | 285 | // case CMD_SYNCSESSION: | 
| ellingjp | 21:2fa676f214fe | 286 | // syncSession(); | 
| ellingjp | 21:2fa676f214fe | 287 | // break; | 
| ellingjp | 21:2fa676f214fe | 288 | // case CMD_DELETESESSION: | 
| ellingjp | 21:2fa676f214fe | 289 | // deleteSession(); | 
| ellingjp | 21:2fa676f214fe | 290 | // break; | 
| ellingjp | 21:2fa676f214fe | 291 | // case CMD_DONE: | 
| ellingjp | 21:2fa676f214fe | 292 | // bt.putc(CMD_DONE); | 
| ellingjp | 21:2fa676f214fe | 293 | // //sendResponse(CMD_DONE, ACK); | 
| ellingjp | 21:2fa676f214fe | 294 | // State = IDLE; | 
| ellingjp | 21:2fa676f214fe | 295 | // break; | 
| ellingjp | 21:2fa676f214fe | 296 | // default: break; | 
| ellingjp | 21:2fa676f214fe | 297 | } | 
| ellingjp | 21:2fa676f214fe | 298 | |
| ellingjp | 21:2fa676f214fe | 299 | PC_PRINTLN("Deleting received packet..."); | 
| ellingjp | 21:2fa676f214fe | 300 | delete p; | 
| ellingjp | 21:2fa676f214fe | 301 | PC_PRINTLN("Ready for new packet"); | 
| ellingjp | 21:2fa676f214fe | 302 | } | 
| ellingjp | 9:a711b5b34d73 | 303 | } |