Test serial console demonstrating various API functions of WiConnect library.

Dependencies:   WiConnect mbed

Committer:
dan_ackme
Date:
Mon Aug 11 13:55:39 2014 -0700
Revision:
3:dddd476d5967
Parent:
2:2f222449973a
Child:
9:dddf6ed7e992
use static buffers instead of malloc since default heap is so small

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 "Wiconnect.h"
dan_ackme 0:836c9a6383e0 12 #include "util/log/log.h"
dan_ackme 0:836c9a6383e0 13 #include "util/CommandProcessor/CommandProcessor.h"
dan_ackme 0:836c9a6383e0 14 #include "tests/Tests.h"
dan_ackme 0:836c9a6383e0 15 #include "target_config.h"
dan_ackme 0:836c9a6383e0 16
dan_ackme 0:836c9a6383e0 17
dan_ackme 0:836c9a6383e0 18 #if TEST_NONBLOCKING_API
dan_ackme 0:836c9a6383e0 19 #error 'TEST_NONBLOCKING_API = true' NOT currently supported for the mbed sdk
dan_ackme 0:836c9a6383e0 20 #endif
dan_ackme 0:836c9a6383e0 21
dan_ackme 0:836c9a6383e0 22
dan_ackme 0:836c9a6383e0 23 int wiconnectLogDebug(const char *str);
dan_ackme 3:dddd476d5967 24 int wiconnectLogAssert(const char *str);
dan_ackme 0:836c9a6383e0 25
dan_ackme 0:836c9a6383e0 26
dan_ackme 0:836c9a6383e0 27 static const CommandListEntry commandList[] =
dan_ackme 0:836c9a6383e0 28 {
dan_ackme 0:836c9a6383e0 29 CMD_HELP_ENTRY,
dan_ackme 0:836c9a6383e0 30 WICONNECT_TEST_CMD_LIST,
dan_ackme 0:836c9a6383e0 31 NETWORK_TEST_CMD_LIST,
dan_ackme 0:836c9a6383e0 32 SOCKET_TEST_CMD_LIST,
dan_ackme 0:836c9a6383e0 33 FILE_TEST_CMD_LIST,
dan_ackme 0:836c9a6383e0 34 CMD_LIST_TERMINATOR
dan_ackme 0:836c9a6383e0 35 };
dan_ackme 0:836c9a6383e0 36
dan_ackme 3:dddd476d5967 37 char testBuffer[TEST_BUFFER_LENGTH];
dan_ackme 3:dddd476d5967 38 static uint8_t wiconnectInternalBuffer[WICONNECT_INTERNAL_BUFFER_SIZE];
dan_ackme 3:dddd476d5967 39 static uint8_t wiconnectSerialRxBuffer[WICONNECT_SERIAL_RX_BUFFER_SIZE];
dan_ackme 3:dddd476d5967 40
dan_ackme 3:dddd476d5967 41 static const SerialConfig serialConfig(WICONNECT_RX_PIN, WICONNECT_TX_PIN, WICONNECT_CTS_PIN, WICONNECT_RTS_PIN, WICONNECT_DEFAULT_BAUD, wiconnectSerialRxBuffer, WICONNECT_SERIAL_RX_BUFFER_SIZE);
dan_ackme 3:dddd476d5967 42 static Wiconnect wiconnectIfc(serialConfig, wiconnectInternalBuffer, WICONNECT_INTERNAL_BUFFER_SIZE, WICONNECT_RESET_PIN, WICONNECT_WAKE_PIN, TEST_NONBLOCKING_API);
dan_ackme 0:836c9a6383e0 43
dan_ackme 0:836c9a6383e0 44 ConsoleSerial consoleSerial(SERIAL_TX, SERIAL_RX);
dan_ackme 0:836c9a6383e0 45 CommandProcessor cmdProcessor(&consoleSerial, commandList);
dan_ackme 3:dddd476d5967 46
dan_ackme 0:836c9a6383e0 47
dan_ackme 0:836c9a6383e0 48
dan_ackme 0:836c9a6383e0 49 /*************************************************************************************************/
dan_ackme 0:836c9a6383e0 50 int main(int argc, char *argv[])
dan_ackme 0:836c9a6383e0 51 {
dan_ackme 0:836c9a6383e0 52 WiconnectResult result;
dan_ackme 2:2f222449973a 53 bool running = true;
dan_ackme 0:836c9a6383e0 54
dan_ackme 0:836c9a6383e0 55 consoleSerial.setBaud(CONSOLE_BAUD);
dan_ackme 0:836c9a6383e0 56
dan_ackme 3:dddd476d5967 57 wiconnectIfc.setAssertLogger(LogFunc(wiconnectLogAssert));
dan_ackme 3:dddd476d5967 58 wiconnectIfc.setCommandDefaultTimeout(5000);
dan_ackme 0:836c9a6383e0 59 #ifdef ENABLE_WICONNECT_DEBUG
dan_ackme 0:836c9a6383e0 60 wiconnectIfc.setDebugLogger(LogFunc(wiconnectLogDebug));
dan_ackme 0:836c9a6383e0 61 #endif
dan_ackme 0:836c9a6383e0 62
dan_ackme 0:836c9a6383e0 63 initialize_loop:
dan_ackme 0:836c9a6383e0 64 {
dan_ackme 0:836c9a6383e0 65 LOG_INFO("\r\n\r\nInitializing WiConnect...");
dan_ackme 0:836c9a6383e0 66 if(WICONNECT_FAILED(result, wiconnectIfc.init(true)))
dan_ackme 0:836c9a6383e0 67 {
dan_ackme 0:836c9a6383e0 68 LOG_WICONNECT_ERROR(result, "Failed to initialize Wiconnect");
dan_ackme 0:836c9a6383e0 69 LOG_INFO("Press any key to retry initialization...");
dan_ackme 0:836c9a6383e0 70 int c = consoleSerial.getc();
dan_ackme 0:836c9a6383e0 71 goto initialize_loop;
dan_ackme 0:836c9a6383e0 72 }
dan_ackme 0:836c9a6383e0 73 }
dan_ackme 0:836c9a6383e0 74
dan_ackme 0:836c9a6383e0 75 {
dan_ackme 2:2f222449973a 76 if(!WICONNECT_FAILED(result, wiconnectIfc.getVersion()))
dan_ackme 0:836c9a6383e0 77 {
dan_ackme 2:2f222449973a 78 LOG_INFO("Version: %s", wiconnectIfc.getResponseBuffer());
dan_ackme 0:836c9a6383e0 79 }
dan_ackme 0:836c9a6383e0 80 }
dan_ackme 0:836c9a6383e0 81
dan_ackme 0:836c9a6383e0 82 LOG_INFO("WiConnect test app ready...");
dan_ackme 0:836c9a6383e0 83
dan_ackme 2:2f222449973a 84 while(running)
dan_ackme 0:836c9a6383e0 85 {
dan_ackme 0:836c9a6383e0 86 Command cmd;
dan_ackme 0:836c9a6383e0 87 cmdProcessor.waitForCommand(&cmd);
dan_ackme 0:836c9a6383e0 88 if(WICONNECT_FAILED(result, cmd.execute()))
dan_ackme 0:836c9a6383e0 89 {
dan_ackme 0:836c9a6383e0 90 LOG_WICONNECT_ERROR(result, "Failed to execute command");
dan_ackme 0:836c9a6383e0 91 if(result == WICONNECT_CMD_RESPONSE_ERROR)
dan_ackme 0:836c9a6383e0 92 {
dan_ackme 0:836c9a6383e0 93 LOG_ERROR("WiConnect command response code: %s", wiconnectIfc.getLastCommandResponseCodeStr());
dan_ackme 0:836c9a6383e0 94 }
dan_ackme 0:836c9a6383e0 95 }
dan_ackme 0:836c9a6383e0 96 }
dan_ackme 0:836c9a6383e0 97
dan_ackme 0:836c9a6383e0 98 return 0;
dan_ackme 0:836c9a6383e0 99 }
dan_ackme 0:836c9a6383e0 100
dan_ackme 0:836c9a6383e0 101
dan_ackme 0:836c9a6383e0 102 /*************************************************************************************************/
dan_ackme 0:836c9a6383e0 103 int wiconnectLogDebug(const char *str)
dan_ackme 0:836c9a6383e0 104 {
dan_ackme 0:836c9a6383e0 105 logDebug(str);
dan_ackme 0:836c9a6383e0 106 return 0;
dan_ackme 0:836c9a6383e0 107 }
dan_ackme 0:836c9a6383e0 108
dan_ackme 3:dddd476d5967 109 /*************************************************************************************************/
dan_ackme 3:dddd476d5967 110 int wiconnectLogAssert(const char *str)
dan_ackme 3:dddd476d5967 111 {
dan_ackme 3:dddd476d5967 112 logWrite("\r\n\r\n[ASSERT] ", 13);
dan_ackme 3:dddd476d5967 113 logWrite(str, strlen(str));
dan_ackme 3:dddd476d5967 114 return 0;
dan_ackme 3:dddd476d5967 115 }