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