ACKme / Mbed 2 deprecated wiconnect-test-console

Dependencies:   WiConnect mbed

Committer:
dan_ackme
Date:
Mon Aug 11 04:39:25 2014 -0700
Revision:
1:5137ec8f4c45
Parent:
0:836c9a6383e0
Child:
12:3dd3a1be40c1
fixed build warnings

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dan_ackme 0:836c9a6383e0 1 /*
dan_ackme 0:836c9a6383e0 2 * Copyright 2014, ACKme Networks
dan_ackme 0:836c9a6383e0 3 * All Rights Reserved.
dan_ackme 0:836c9a6383e0 4 *
dan_ackme 0:836c9a6383e0 5 * This is UNPUBLISHED PROPRIETARY SOURCE CODE of ACKme Networks;
dan_ackme 0:836c9a6383e0 6 * the contents of this file may not be disclosed to third parties, copied
dan_ackme 0:836c9a6383e0 7 * or duplicated in any form, in whole or in part, without the prior
dan_ackme 0:836c9a6383e0 8 * written permission of ACKme Networks.
dan_ackme 0:836c9a6383e0 9 */
dan_ackme 0:836c9a6383e0 10
dan_ackme 0:836c9a6383e0 11 #include "tests/Tests.h"
dan_ackme 0:836c9a6383e0 12 #include "Wiconnect.h"
dan_ackme 0:836c9a6383e0 13
dan_ackme 0:836c9a6383e0 14
dan_ackme 0:836c9a6383e0 15 typedef struct
dan_ackme 0:836c9a6383e0 16 {
dan_ackme 0:836c9a6383e0 17 uint32_t bytesRemaining;
dan_ackme 0:836c9a6383e0 18 } fileInfo_t;
dan_ackme 0:836c9a6383e0 19
dan_ackme 0:836c9a6383e0 20
dan_ackme 0:836c9a6383e0 21 static WiconnectResult fileReadCallback(void *user, void *data, int maxReadSize, int *bytesRead);
dan_ackme 0:836c9a6383e0 22
dan_ackme 0:836c9a6383e0 23
dan_ackme 0:836c9a6383e0 24
dan_ackme 0:836c9a6383e0 25
dan_ackme 0:836c9a6383e0 26
dan_ackme 0:836c9a6383e0 27 /*************************************************************************************************/
dan_ackme 0:836c9a6383e0 28 WiconnectResult fileCreateCommand(int argc, char **argv)
dan_ackme 0:836c9a6383e0 29 {
dan_ackme 0:836c9a6383e0 30 WiconnectResult result;
dan_ackme 0:836c9a6383e0 31 Wiconnect *wiconnect = Wiconnect::getInstance();
dan_ackme 0:836c9a6383e0 32 const char *name;
dan_ackme 0:836c9a6383e0 33 uint32_t size;
dan_ackme 0:836c9a6383e0 34 uint32_t version = 0;
dan_ackme 0:836c9a6383e0 35 uint32_t type = FILE_TYPE_ANY;
dan_ackme 0:836c9a6383e0 36 const int savedTimeOut = wiconnect->getCommandDefaultTimeout();
dan_ackme 0:836c9a6383e0 37 fileInfo_t fileInfo;
dan_ackme 0:836c9a6383e0 38
dan_ackme 0:836c9a6383e0 39
dan_ackme 0:836c9a6383e0 40 if(argc < 2)
dan_ackme 0:836c9a6383e0 41 {
dan_ackme 0:836c9a6383e0 42 LOG_ERROR("must specify file name and size");
dan_ackme 0:836c9a6383e0 43 return WICONNECT_BAD_ARG;
dan_ackme 0:836c9a6383e0 44 }
dan_ackme 0:836c9a6383e0 45
dan_ackme 0:836c9a6383e0 46 name = argv[0];
dan_ackme 0:836c9a6383e0 47 if(!StringUtil::strToUint32(argv[1], &size))
dan_ackme 0:836c9a6383e0 48 {
dan_ackme 0:836c9a6383e0 49 LOG_ERROR("invalid file size");
dan_ackme 0:836c9a6383e0 50 return WICONNECT_BAD_ARG;
dan_ackme 0:836c9a6383e0 51 }
dan_ackme 0:836c9a6383e0 52
dan_ackme 0:836c9a6383e0 53 if(argc > 2)
dan_ackme 0:836c9a6383e0 54 {
dan_ackme 0:836c9a6383e0 55 if(!Wiconnect::fileVersionStrToInt(argv[2], &version))
dan_ackme 0:836c9a6383e0 56 {
dan_ackme 0:836c9a6383e0 57 LOG_ERROR("invalid file version");
dan_ackme 0:836c9a6383e0 58 return WICONNECT_BAD_ARG;
dan_ackme 0:836c9a6383e0 59 }
dan_ackme 0:836c9a6383e0 60 }
dan_ackme 0:836c9a6383e0 61 if(argc > 3)
dan_ackme 0:836c9a6383e0 62 {
dan_ackme 0:836c9a6383e0 63 if(!StringUtil::strHexToUint32(argv[3], &type))
dan_ackme 0:836c9a6383e0 64 {
dan_ackme 0:836c9a6383e0 65 LOG_ERROR("invalid file type");
dan_ackme 0:836c9a6383e0 66 return WICONNECT_BAD_ARG;
dan_ackme 0:836c9a6383e0 67 }
dan_ackme 0:836c9a6383e0 68 }
dan_ackme 0:836c9a6383e0 69
dan_ackme 0:836c9a6383e0 70 fileInfo.bytesRemaining = size;
dan_ackme 0:836c9a6383e0 71 wiconnect->setCommandDefaultTimeout(30000); // increase the timeout so the user can enter data
dan_ackme 0:836c9a6383e0 72
dan_ackme 0:836c9a6383e0 73 if(!WICONNECT_FAILED(result, wiconnect->createFile(ReaderFunc(fileReadCallback), &fileInfo, name, size, version, (FileType)type)))
dan_ackme 0:836c9a6383e0 74 {
dan_ackme 0:836c9a6383e0 75 LOG_INFO("File created");
dan_ackme 0:836c9a6383e0 76 }
dan_ackme 0:836c9a6383e0 77 wiconnect->setCommandDefaultTimeout(savedTimeOut);
dan_ackme 0:836c9a6383e0 78
dan_ackme 0:836c9a6383e0 79 return result;
dan_ackme 0:836c9a6383e0 80 }
dan_ackme 0:836c9a6383e0 81
dan_ackme 0:836c9a6383e0 82 /*************************************************************************************************/
dan_ackme 0:836c9a6383e0 83 static WiconnectResult fileReadCallback(void *user, void *data, int maxReadSize, int *bytesReadPtr)
dan_ackme 0:836c9a6383e0 84 {
dan_ackme 0:836c9a6383e0 85 fileInfo_t *info = (fileInfo_t*)user;
dan_ackme 0:836c9a6383e0 86 int bytesToRead = MIN(maxReadSize, info->bytesRemaining);
dan_ackme 0:836c9a6383e0 87
dan_ackme 0:836c9a6383e0 88 if(info->bytesRemaining == 0)
dan_ackme 0:836c9a6383e0 89 {
dan_ackme 0:836c9a6383e0 90 LOG_INFO("All data written");
dan_ackme 0:836c9a6383e0 91 *bytesReadPtr = EOF;
dan_ackme 0:836c9a6383e0 92 return WICONNECT_SUCCESS;
dan_ackme 0:836c9a6383e0 93 }
dan_ackme 0:836c9a6383e0 94
dan_ackme 0:836c9a6383e0 95 LOG_INFO("Enter up to %d bytes (%d bytes remaining,\r\n Issue $$$ terminate current write):", bytesToRead, info->bytesRemaining);
dan_ackme 0:836c9a6383e0 96
dan_ackme 0:836c9a6383e0 97 uint8_t *ptr = (uint8_t*)data;
dan_ackme 0:836c9a6383e0 98 int bytesRead = 0;
dan_ackme 0:836c9a6383e0 99 int terminateCount = 0;
dan_ackme 0:836c9a6383e0 100
dan_ackme 0:836c9a6383e0 101 while(bytesToRead > 0)
dan_ackme 0:836c9a6383e0 102 {
dan_ackme 0:836c9a6383e0 103 int c = consoleSerial.getc();
dan_ackme 0:836c9a6383e0 104 consoleSerial.putc(c);
dan_ackme 0:836c9a6383e0 105 terminateCount = (c == '$') ? terminateCount+1 : 0;
dan_ackme 0:836c9a6383e0 106 if(terminateCount >= 3)
dan_ackme 0:836c9a6383e0 107 {
dan_ackme 0:836c9a6383e0 108 break;
dan_ackme 0:836c9a6383e0 109 }
dan_ackme 0:836c9a6383e0 110 *ptr++ = (uint8_t)c;
dan_ackme 0:836c9a6383e0 111 ++bytesRead;
dan_ackme 0:836c9a6383e0 112 --bytesToRead;
dan_ackme 0:836c9a6383e0 113 }
dan_ackme 0:836c9a6383e0 114
dan_ackme 0:836c9a6383e0 115 // remove '$$' from data if we terminated
dan_ackme 0:836c9a6383e0 116 if(terminateCount == 3)
dan_ackme 0:836c9a6383e0 117 {
dan_ackme 0:836c9a6383e0 118 bytesRead -= 2;
dan_ackme 0:836c9a6383e0 119 }
dan_ackme 0:836c9a6383e0 120
dan_ackme 0:836c9a6383e0 121 info->bytesRemaining -= bytesRead;
dan_ackme 0:836c9a6383e0 122 *bytesReadPtr = bytesRead;
dan_ackme 0:836c9a6383e0 123 consoleSerial.write("\r\n");
dan_ackme 0:836c9a6383e0 124
dan_ackme 0:836c9a6383e0 125 return WICONNECT_SUCCESS;
dan_ackme 0:836c9a6383e0 126 }