Test serial console demonstrating various API functions of WiConnect library.

Dependencies:   WiConnect mbed

Committer:
dan_ackme
Date:
Tue Aug 26 16:35:09 2014 -0700
Revision:
18:cec9e97cb9e0
Parent:
16:d7e0d890426a
fixed warning

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dan_ackme 18:cec9e97cb9e0 1 /**
dan_ackme 18:cec9e97cb9e0 2 * ACKme WiConnect Host Library is licensed under the BSD licence:
dan_ackme 18:cec9e97cb9e0 3 *
dan_ackme 18:cec9e97cb9e0 4 * Copyright (c)2014 ACKme Networks.
dan_ackme 18:cec9e97cb9e0 5 * All rights reserved.
dan_ackme 18:cec9e97cb9e0 6 *
dan_ackme 18:cec9e97cb9e0 7 * Redistribution and use in source and binary forms, with or without modification,
dan_ackme 18:cec9e97cb9e0 8 * are permitted provided that the following conditions are met:
dan_ackme 18:cec9e97cb9e0 9 *
dan_ackme 18:cec9e97cb9e0 10 * 1. Redistributions of source code must retain the above copyright notice,
dan_ackme 18:cec9e97cb9e0 11 * this list of conditions and the following disclaimer.
dan_ackme 18:cec9e97cb9e0 12 * 2. Redistributions in binary form must reproduce the above copyright notice,
dan_ackme 18:cec9e97cb9e0 13 * this list of conditions and the following disclaimer in the documentation
dan_ackme 18:cec9e97cb9e0 14 * and/or other materials provided with the distribution.
dan_ackme 18:cec9e97cb9e0 15 * 3. The name of the author may not be used to endorse or promote products
dan_ackme 18:cec9e97cb9e0 16 * derived from this software without specific prior written permission.
dan_ackme 18:cec9e97cb9e0 17 *
dan_ackme 18:cec9e97cb9e0 18 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
dan_ackme 18:cec9e97cb9e0 19 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
dan_ackme 18:cec9e97cb9e0 20 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
dan_ackme 18:cec9e97cb9e0 21 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
dan_ackme 18:cec9e97cb9e0 22 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
dan_ackme 18:cec9e97cb9e0 23 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
dan_ackme 18:cec9e97cb9e0 24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
dan_ackme 18:cec9e97cb9e0 25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
dan_ackme 18:cec9e97cb9e0 26 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
dan_ackme 18:cec9e97cb9e0 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 18:cec9e97cb9e0 69 {
dan_ackme 14:4639147f2f42 70 WiconnectResult result = WICONNECT_SUCCESS;
dan_ackme 0:836c9a6383e0 71 consoleSerial.setBaud(CONSOLE_BAUD);
dan_ackme 0:836c9a6383e0 72
dan_ackme 3:dddd476d5967 73 wiconnectIfc.setAssertLogger(LogFunc(wiconnectLogAssert));
dan_ackme 3:dddd476d5967 74 wiconnectIfc.setCommandDefaultTimeout(5000);
dan_ackme 0:836c9a6383e0 75 #ifdef ENABLE_WICONNECT_DEBUG
dan_ackme 0:836c9a6383e0 76 wiconnectIfc.setDebugLogger(LogFunc(wiconnectLogDebug));
dan_ackme 0:836c9a6383e0 77 #endif
dan_ackme 0:836c9a6383e0 78
dan_ackme 0:836c9a6383e0 79 initialize_loop:
dan_ackme 0:836c9a6383e0 80 {
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 2:2f222449973a 92 if(!WICONNECT_FAILED(result, wiconnectIfc.getVersion()))
dan_ackme 0:836c9a6383e0 93 {
dan_ackme 2:2f222449973a 94 LOG_INFO("Version: %s", wiconnectIfc.getResponseBuffer());
dan_ackme 0:836c9a6383e0 95 }
dan_ackme 0:836c9a6383e0 96 }
dan_ackme 0:836c9a6383e0 97
dan_ackme 0:836c9a6383e0 98 LOG_INFO("WiConnect test app ready...");
dan_ackme 0:836c9a6383e0 99
dan_ackme 12:3dd3a1be40c1 100 for(;;)
dan_ackme 0:836c9a6383e0 101 {
dan_ackme 12:3dd3a1be40c1 102 WiconnectResult result;
dan_ackme 0:836c9a6383e0 103 Command cmd;
dan_ackme 0:836c9a6383e0 104 cmdProcessor.waitForCommand(&cmd);
dan_ackme 0:836c9a6383e0 105 if(WICONNECT_FAILED(result, cmd.execute()))
dan_ackme 0:836c9a6383e0 106 {
dan_ackme 0:836c9a6383e0 107 LOG_WICONNECT_ERROR(result, "Failed to execute command");
dan_ackme 0:836c9a6383e0 108 if(result == WICONNECT_CMD_RESPONSE_ERROR)
dan_ackme 0:836c9a6383e0 109 {
dan_ackme 0:836c9a6383e0 110 LOG_ERROR("WiConnect command response code: %s", wiconnectIfc.getLastCommandResponseCodeStr());
dan_ackme 0:836c9a6383e0 111 }
dan_ackme 0:836c9a6383e0 112 }
dan_ackme 0:836c9a6383e0 113 }
dan_ackme 0:836c9a6383e0 114
dan_ackme 0:836c9a6383e0 115 return 0;
dan_ackme 0:836c9a6383e0 116 }
dan_ackme 0:836c9a6383e0 117
dan_ackme 0:836c9a6383e0 118
dan_ackme 0:836c9a6383e0 119 /*************************************************************************************************/
dan_ackme 0:836c9a6383e0 120 int wiconnectLogDebug(const char *str)
dan_ackme 0:836c9a6383e0 121 {
dan_ackme 0:836c9a6383e0 122 logDebug(str);
dan_ackme 0:836c9a6383e0 123 return 0;
dan_ackme 0:836c9a6383e0 124 }
dan_ackme 0:836c9a6383e0 125
dan_ackme 3:dddd476d5967 126 /*************************************************************************************************/
dan_ackme 3:dddd476d5967 127 int wiconnectLogAssert(const char *str)
dan_ackme 3:dddd476d5967 128 {
dan_ackme 3:dddd476d5967 129 logWrite("\r\n\r\n[ASSERT] ", 13);
dan_ackme 3:dddd476d5967 130 logWrite(str, strlen(str));
dan_ackme 3:dddd476d5967 131 return 0;
dan_ackme 3:dddd476d5967 132 }