Test serial console demonstrating various API functions of WiConnect library.

Dependencies:   WiConnect mbed

Committer:
dan_ackme
Date:
Wed Aug 13 04:42:11 2014 -0700
Revision:
12:3dd3a1be40c1
Parent:
9:dddf6ed7e992
Child:
14:4639147f2f42
Child:
15:a835e28308b6
updated copyright

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dan_ackme 12:3dd3a1be40c1 1 /**
dan_ackme 12:3dd3a1be40c1 2 * ACKme WiConnect Host Library is licensed under the BSD licence:
dan_ackme 12:3dd3a1be40c1 3 *
dan_ackme 12:3dd3a1be40c1 4 * Copyright (c)2014 ACKme Networks.
dan_ackme 12:3dd3a1be40c1 5 * All rights reserved.
dan_ackme 12:3dd3a1be40c1 6 *
dan_ackme 12:3dd3a1be40c1 7 * Redistribution and use in source and binary forms, with or without modification,
dan_ackme 12:3dd3a1be40c1 8 * are permitted provided that the following conditions are met:
dan_ackme 12:3dd3a1be40c1 9 *
dan_ackme 12:3dd3a1be40c1 10 * 1. Redistributions of source code must retain the above copyright notice,
dan_ackme 12:3dd3a1be40c1 11 * this list of conditions and the following disclaimer.
dan_ackme 12:3dd3a1be40c1 12 * 2. Redistributions in binary form must reproduce the above copyright notice,
dan_ackme 12:3dd3a1be40c1 13 * this list of conditions and the following disclaimer in the documentation
dan_ackme 12:3dd3a1be40c1 14 * and/or other materials provided with the distribution.
dan_ackme 12:3dd3a1be40c1 15 * 3. The name of the author may not be used to endorse or promote products
dan_ackme 12:3dd3a1be40c1 16 * derived from this software without specific prior written permission.
dan_ackme 12:3dd3a1be40c1 17 *
dan_ackme 12:3dd3a1be40c1 18 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
dan_ackme 12:3dd3a1be40c1 19 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
dan_ackme 12:3dd3a1be40c1 20 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
dan_ackme 12:3dd3a1be40c1 21 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
dan_ackme 12:3dd3a1be40c1 22 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
dan_ackme 12:3dd3a1be40c1 23 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
dan_ackme 12:3dd3a1be40c1 24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
dan_ackme 12:3dd3a1be40c1 25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
dan_ackme 12:3dd3a1be40c1 26 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
dan_ackme 12:3dd3a1be40c1 27 * OF SUCH DAMAGE.
dan_ackme 0:836c9a6383e0 28 */
dan_ackme 0:836c9a6383e0 29 #include "Wiconnect.h"
dan_ackme 0:836c9a6383e0 30 #include "util/log/log.h"
dan_ackme 0:836c9a6383e0 31 #include "util/CommandProcessor/CommandProcessor.h"
dan_ackme 0:836c9a6383e0 32 #include "tests/Tests.h"
dan_ackme 0:836c9a6383e0 33 #include "target_config.h"
dan_ackme 0:836c9a6383e0 34
dan_ackme 0:836c9a6383e0 35
dan_ackme 0:836c9a6383e0 36 #if TEST_NONBLOCKING_API
dan_ackme 0:836c9a6383e0 37 #error 'TEST_NONBLOCKING_API = true' NOT currently supported for the mbed sdk
dan_ackme 0:836c9a6383e0 38 #endif
dan_ackme 0:836c9a6383e0 39
dan_ackme 0:836c9a6383e0 40
dan_ackme 0:836c9a6383e0 41 int wiconnectLogDebug(const char *str);
dan_ackme 3:dddd476d5967 42 int wiconnectLogAssert(const char *str);
dan_ackme 0:836c9a6383e0 43
dan_ackme 0:836c9a6383e0 44
dan_ackme 0:836c9a6383e0 45 static const CommandListEntry commandList[] =
dan_ackme 0:836c9a6383e0 46 {
dan_ackme 0:836c9a6383e0 47 CMD_HELP_ENTRY,
dan_ackme 0:836c9a6383e0 48 WICONNECT_TEST_CMD_LIST,
dan_ackme 0:836c9a6383e0 49 NETWORK_TEST_CMD_LIST,
dan_ackme 0:836c9a6383e0 50 SOCKET_TEST_CMD_LIST,
dan_ackme 0:836c9a6383e0 51 FILE_TEST_CMD_LIST,
dan_ackme 0:836c9a6383e0 52 CMD_LIST_TERMINATOR
dan_ackme 0:836c9a6383e0 53 };
dan_ackme 0:836c9a6383e0 54
dan_ackme 3:dddd476d5967 55 char testBuffer[TEST_BUFFER_LENGTH];
dan_ackme 3:dddd476d5967 56 static uint8_t wiconnectInternalBuffer[WICONNECT_INTERNAL_BUFFER_SIZE];
dan_ackme 3:dddd476d5967 57 static uint8_t wiconnectSerialRxBuffer[WICONNECT_SERIAL_RX_BUFFER_SIZE];
dan_ackme 3:dddd476d5967 58
dan_ackme 9:dddf6ed7e992 59 static const SerialConfig serialConfig(WICONNECT_RX_PIN, WICONNECT_TX_PIN, WICONNECT_CTS_PIN, WICONNECT_RTS_PIN, WICONNECT_DEFAULT_BAUD, WICONNECT_SERIAL_RX_BUFFER_SIZE, wiconnectSerialRxBuffer);
dan_ackme 12:3dd3a1be40c1 60 static Wiconnect wiconnectIfc(serialConfig, WICONNECT_INTERNAL_BUFFER_SIZE, wiconnectInternalBuffer, WICONNECT_RESET_PIN, WICONNECT_WAKE_PIN, TEST_NONBLOCKING_API);
dan_ackme 0:836c9a6383e0 61
dan_ackme 0:836c9a6383e0 62 ConsoleSerial consoleSerial(SERIAL_TX, SERIAL_RX);
dan_ackme 0:836c9a6383e0 63 CommandProcessor cmdProcessor(&consoleSerial, commandList);
dan_ackme 3:dddd476d5967 64
dan_ackme 0:836c9a6383e0 65
dan_ackme 0:836c9a6383e0 66
dan_ackme 0:836c9a6383e0 67 /*************************************************************************************************/
dan_ackme 12:3dd3a1be40c1 68 int main(int argc, char **argv)
dan_ackme 0:836c9a6383e0 69 {
dan_ackme 0:836c9a6383e0 70 consoleSerial.setBaud(CONSOLE_BAUD);
dan_ackme 0:836c9a6383e0 71
dan_ackme 3:dddd476d5967 72 wiconnectIfc.setAssertLogger(LogFunc(wiconnectLogAssert));
dan_ackme 3:dddd476d5967 73 wiconnectIfc.setCommandDefaultTimeout(5000);
dan_ackme 0:836c9a6383e0 74 #ifdef ENABLE_WICONNECT_DEBUG
dan_ackme 0:836c9a6383e0 75 wiconnectIfc.setDebugLogger(LogFunc(wiconnectLogDebug));
dan_ackme 0:836c9a6383e0 76 #endif
dan_ackme 0:836c9a6383e0 77
dan_ackme 0:836c9a6383e0 78 initialize_loop:
dan_ackme 0:836c9a6383e0 79 {
dan_ackme 12:3dd3a1be40c1 80 WiconnectResult result;
dan_ackme 0:836c9a6383e0 81 LOG_INFO("\r\n\r\nInitializing WiConnect...");
dan_ackme 0:836c9a6383e0 82 if(WICONNECT_FAILED(result, wiconnectIfc.init(true)))
dan_ackme 0:836c9a6383e0 83 {
dan_ackme 0:836c9a6383e0 84 LOG_WICONNECT_ERROR(result, "Failed to initialize Wiconnect");
dan_ackme 0:836c9a6383e0 85 LOG_INFO("Press any key to retry initialization...");
dan_ackme 0:836c9a6383e0 86 int c = consoleSerial.getc();
dan_ackme 0:836c9a6383e0 87 goto initialize_loop;
dan_ackme 0:836c9a6383e0 88 }
dan_ackme 0:836c9a6383e0 89 }
dan_ackme 0:836c9a6383e0 90
dan_ackme 0:836c9a6383e0 91 {
dan_ackme 12:3dd3a1be40c1 92 WiconnectResult result;
dan_ackme 2:2f222449973a 93 if(!WICONNECT_FAILED(result, wiconnectIfc.getVersion()))
dan_ackme 0:836c9a6383e0 94 {
dan_ackme 2:2f222449973a 95 LOG_INFO("Version: %s", wiconnectIfc.getResponseBuffer());
dan_ackme 0:836c9a6383e0 96 }
dan_ackme 0:836c9a6383e0 97 }
dan_ackme 0:836c9a6383e0 98
dan_ackme 0:836c9a6383e0 99 LOG_INFO("WiConnect test app ready...");
dan_ackme 0:836c9a6383e0 100
dan_ackme 12:3dd3a1be40c1 101 for(;;)
dan_ackme 0:836c9a6383e0 102 {
dan_ackme 12:3dd3a1be40c1 103 WiconnectResult result;
dan_ackme 0:836c9a6383e0 104 Command cmd;
dan_ackme 0:836c9a6383e0 105 cmdProcessor.waitForCommand(&cmd);
dan_ackme 0:836c9a6383e0 106 if(WICONNECT_FAILED(result, cmd.execute()))
dan_ackme 0:836c9a6383e0 107 {
dan_ackme 0:836c9a6383e0 108 LOG_WICONNECT_ERROR(result, "Failed to execute command");
dan_ackme 0:836c9a6383e0 109 if(result == WICONNECT_CMD_RESPONSE_ERROR)
dan_ackme 0:836c9a6383e0 110 {
dan_ackme 0:836c9a6383e0 111 LOG_ERROR("WiConnect command response code: %s", wiconnectIfc.getLastCommandResponseCodeStr());
dan_ackme 0:836c9a6383e0 112 }
dan_ackme 0:836c9a6383e0 113 }
dan_ackme 0:836c9a6383e0 114 }
dan_ackme 0:836c9a6383e0 115
dan_ackme 0:836c9a6383e0 116 return 0;
dan_ackme 0:836c9a6383e0 117 }
dan_ackme 0:836c9a6383e0 118
dan_ackme 0:836c9a6383e0 119
dan_ackme 0:836c9a6383e0 120 /*************************************************************************************************/
dan_ackme 0:836c9a6383e0 121 int wiconnectLogDebug(const char *str)
dan_ackme 0:836c9a6383e0 122 {
dan_ackme 0:836c9a6383e0 123 logDebug(str);
dan_ackme 0:836c9a6383e0 124 return 0;
dan_ackme 0:836c9a6383e0 125 }
dan_ackme 0:836c9a6383e0 126
dan_ackme 3:dddd476d5967 127 /*************************************************************************************************/
dan_ackme 3:dddd476d5967 128 int wiconnectLogAssert(const char *str)
dan_ackme 3:dddd476d5967 129 {
dan_ackme 3:dddd476d5967 130 logWrite("\r\n\r\n[ASSERT] ", 13);
dan_ackme 3:dddd476d5967 131 logWrite(str, strlen(str));
dan_ackme 3:dddd476d5967 132 return 0;
dan_ackme 3:dddd476d5967 133 }