ACKme
/
wiconnect-test-console
Test serial console demonstrating various API functions of WiConnect library.
main.cpp@16:d7e0d890426a, 2014-08-23 (annotated)
- Committer:
- dan_ackme
- Date:
- Sat Aug 23 05:42:36 2014 -0700
- Revision:
- 16:d7e0d890426a
- Parent:
- 15:a835e28308b6
- Parent:
- 14:4639147f2f42
- Child:
- 18:cec9e97cb9e0
Merge
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dan_ackme | 14:4639147f2f42 | 1 | /** |
dan_ackme | 14:4639147f2f42 | 2 | * ACKme WiConnect Host Library is licensed under the BSD licence: |
dan_ackme | 14:4639147f2f42 | 3 | * |
dan_ackme | 14:4639147f2f42 | 4 | * Copyright (c)2014 ACKme Networks. |
dan_ackme | 14:4639147f2f42 | 5 | * All rights reserved. |
dan_ackme | 14:4639147f2f42 | 6 | * |
dan_ackme | 14:4639147f2f42 | 7 | * Redistribution and use in source and binary forms, with or without modification, |
dan_ackme | 14:4639147f2f42 | 8 | * are permitted provided that the following conditions are met: |
dan_ackme | 14:4639147f2f42 | 9 | * |
dan_ackme | 14:4639147f2f42 | 10 | * 1. Redistributions of source code must retain the above copyright notice, |
dan_ackme | 14:4639147f2f42 | 11 | * this list of conditions and the following disclaimer. |
dan_ackme | 14:4639147f2f42 | 12 | * 2. Redistributions in binary form must reproduce the above copyright notice, |
dan_ackme | 14:4639147f2f42 | 13 | * this list of conditions and the following disclaimer in the documentation |
dan_ackme | 14:4639147f2f42 | 14 | * and/or other materials provided with the distribution. |
dan_ackme | 14:4639147f2f42 | 15 | * 3. The name of the author may not be used to endorse or promote products |
dan_ackme | 14:4639147f2f42 | 16 | * derived from this software without specific prior written permission. |
dan_ackme | 14:4639147f2f42 | 17 | * |
dan_ackme | 14:4639147f2f42 | 18 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED |
dan_ackme | 14:4639147f2f42 | 19 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
dan_ackme | 14:4639147f2f42 | 20 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT |
dan_ackme | 14:4639147f2f42 | 21 | * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
dan_ackme | 14:4639147f2f42 | 22 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT |
dan_ackme | 14:4639147f2f42 | 23 | * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
dan_ackme | 14:4639147f2f42 | 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
dan_ackme | 14:4639147f2f42 | 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING |
dan_ackme | 14:4639147f2f42 | 26 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY |
dan_ackme | 14:4639147f2f42 | 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 | 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 | } |