Host library for controlling a WiConnect enabled Wi-Fi module.

Dependents:   wiconnect-ota_example wiconnect-web_setup_example wiconnect-test-console wiconnect-tcp_server_example ... more

Files at this revision

API Documentation at this revision

Comitter:
dan_ackme
Date:
Mon Oct 27 13:42:26 2014 -0700
Parent:
28:3c52f578708a
Child:
30:fe5d89951afb
Commit message:
refactored library layout

Changed in this revision

AsyncCommand.cpp Show annotated file Show diff for this revision Revisions of this file
Endpoint.cpp Show annotated file Show diff for this revision Revisions of this file
FileInterface.cpp Show annotated file Show diff for this revision Revisions of this file
FileList.cpp Show annotated file Show diff for this revision Revisions of this file
FileListing.cpp Show annotated file Show diff for this revision Revisions of this file
GhmInterface.cpp Show annotated file Show diff for this revision Revisions of this file
GhmMessage.cpp Show annotated file Show diff for this revision Revisions of this file
GhmMessageList.cpp Show annotated file Show diff for this revision Revisions of this file
GhmMessageProcessing.cpp Show annotated file Show diff for this revision Revisions of this file
Gpio.cpp Show annotated file Show diff for this revision Revisions of this file
NetworkInterface.cpp Show annotated file Show diff for this revision Revisions of this file
NetworkJoin.cpp Show annotated file Show diff for this revision Revisions of this file
NetworkScan.cpp Show annotated file Show diff for this revision Revisions of this file
NetworkSoftAp.cpp Show annotated file Show diff for this revision Revisions of this file
NetworkWebSetup.cpp Show annotated file Show diff for this revision Revisions of this file
PeriodicTimer.cpp Show annotated file Show diff for this revision Revisions of this file
PinIrqHandler.cpp Show annotated file Show diff for this revision Revisions of this file
ProcessCommand.cpp Show annotated file Show diff for this revision Revisions of this file
QueuedCommand.cpp Show annotated file Show diff for this revision Revisions of this file
ScanResult.cpp Show annotated file Show diff for this revision Revisions of this file
ScanResultList.cpp Show annotated file Show diff for this revision Revisions of this file
SendCommand.cpp Show annotated file Show diff for this revision Revisions of this file
Socket.cpp Show annotated file Show diff for this revision Revisions of this file
SocketInterface.cpp Show annotated file Show diff for this revision Revisions of this file
TCPSocketConnection.cpp Show annotated file Show diff for this revision Revisions of this file
TCPSocketServer.cpp Show annotated file Show diff for this revision Revisions of this file
TcpServer.cpp Show annotated file Show diff for this revision Revisions of this file
TimeoutTimer.cpp Show annotated file Show diff for this revision Revisions of this file
UDPSocket.cpp Show annotated file Show diff for this revision Revisions of this file
UdpServer.cpp Show annotated file Show diff for this revision Revisions of this file
Wiconnect.cpp Show annotated file Show diff for this revision Revisions of this file
Wiconnect.h Show annotated file Show diff for this revision Revisions of this file
WiconnectCommand.cpp Show annotated file Show diff for this revision Revisions of this file
WiconnectFile.cpp Show annotated file Show diff for this revision Revisions of this file
WiconnectModuleBusConfig.cpp Show annotated file Show diff for this revision Revisions of this file
WiconnectSerial.cpp Show annotated file Show diff for this revision Revisions of this file
WiconnectSettings.cpp Show annotated file Show diff for this revision Revisions of this file
WiconnectSocket.cpp Show annotated file Show diff for this revision Revisions of this file
WiconnectUdpServer.cpp Show annotated file Show diff for this revision Revisions of this file
api/FileInterface.h Show annotated file Show diff for this revision Revisions of this file
api/GhmInterface.h Show annotated file Show diff for this revision Revisions of this file
api/NetworkInterface.h Show annotated file Show diff for this revision Revisions of this file
api/README.h Show annotated file Show diff for this revision Revisions of this file
api/SocketInterface.h Show annotated file Show diff for this revision Revisions of this file
api/StringUtil.h Show annotated file Show diff for this revision Revisions of this file
api/WiconnectInterface.h Show annotated file Show diff for this revision Revisions of this file
api/WiconnectTypes.h Show annotated file Show diff for this revision Revisions of this file
api/sdk.h Show annotated file Show diff for this revision Revisions of this file
api/sdkTypes.h Show annotated file Show diff for this revision Revisions of this file
api/target_config.h Show annotated file Show diff for this revision Revisions of this file
api/types/Callback.h Show annotated file Show diff for this revision Revisions of this file
api/types/CommandQueue.h Show annotated file Show diff for this revision Revisions of this file
api/types/FileList.h Show annotated file Show diff for this revision Revisions of this file
api/types/FunctionPointer.h Show annotated file Show diff for this revision Revisions of this file
api/types/GhmMessage.h Show annotated file Show diff for this revision Revisions of this file
api/types/GhmMessageList.h Show annotated file Show diff for this revision Revisions of this file
api/types/Gpio.h Show annotated file Show diff for this revision Revisions of this file
api/types/LogFunc.h Show annotated file Show diff for this revision Revisions of this file
api/types/PeriodicTimer.h Show annotated file Show diff for this revision Revisions of this file
api/types/PinIrqHandler.h Show annotated file Show diff for this revision Revisions of this file
api/types/QueuedCommand.h Show annotated file Show diff for this revision Revisions of this file
api/types/ReaderFunc.h Show annotated file Show diff for this revision Revisions of this file
api/types/ScanResult.h Show annotated file Show diff for this revision Revisions of this file
api/types/ScanResultList.h Show annotated file Show diff for this revision Revisions of this file
api/types/Socket/Endpoint.h Show annotated file Show diff for this revision Revisions of this file
api/types/Socket/Socket.h Show annotated file Show diff for this revision Revisions of this file
api/types/Socket/TCPSocketConnection.h Show annotated file Show diff for this revision Revisions of this file
api/types/Socket/TCPSocketServer.h Show annotated file Show diff for this revision Revisions of this file
api/types/Socket/UDPSocket.h Show annotated file Show diff for this revision Revisions of this file
api/types/Socket/lwip/inet.h Show annotated file Show diff for this revision Revisions of this file
api/types/Socket/lwip/ip_addr.h Show annotated file Show diff for this revision Revisions of this file
api/types/Socket/lwip/netdb.h Show annotated file Show diff for this revision Revisions of this file
api/types/Socket/lwip/opt.h Show annotated file Show diff for this revision Revisions of this file
api/types/Socket/lwip/sockets.h Show annotated file Show diff for this revision Revisions of this file
api/types/Socket/mBedSocketApi.h Show annotated file Show diff for this revision Revisions of this file
api/types/SocketIrqHandlerMap.h Show annotated file Show diff for this revision Revisions of this file
api/types/TimeoutTimer.h Show annotated file Show diff for this revision Revisions of this file
api/types/WiconnectFile.h Show annotated file Show diff for this revision Revisions of this file
api/types/WiconnectSerial.h Show annotated file Show diff for this revision Revisions of this file
api/types/WiconnectSocket.h Show annotated file Show diff for this revision Revisions of this file
api/types/WiconnectUdpServer.h Show annotated file Show diff for this revision Revisions of this file
common.cpp Show annotated file Show diff for this revision Revisions of this file
doc/DoxygenLayout.xml Show annotated file Show diff for this revision Revisions of this file
doc/ackmelogo.png Show annotated file Show diff for this revision Revisions of this file
doc/favicon.ico Show annotated file Show diff for this revision Revisions of this file
doc/footer.html Show annotated file Show diff for this revision Revisions of this file
doc/header.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_callback_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_command_queue_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_file_interface_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_file_list_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_ghm_interface_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_ghm_message_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_ghm_message_list_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_gpio_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_log_func_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_network_interface_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_periodic_timer_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_pin_irq_handler_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_queued_command_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_r_e_a_d_m_e_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_reader_func_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_scan_result_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_scan_result_list_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_socket_interface_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_socket_irq_handler_map_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_string_util_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_timeout_timer_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_wiconnect_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_wiconnect_file_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_wiconnect_interface_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_wiconnect_serial_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_wiconnect_socket_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_wiconnect_types_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/_wiconnect_udp_server_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/annotated.html Show annotated file Show diff for this revision Revisions of this file
doc/html/class_string_util.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classes.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_callback.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_file_interface.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_file_list.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_function_pointer.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_ghm_interface-members.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_ghm_interface.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_ghm_interface.js Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_ghm_message-members.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_ghm_message.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_ghm_message_list-members.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_ghm_message_list.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_log_func.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_network_interface-members.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_network_interface.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_network_interface.js Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_queued_command.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_reader_func.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_scan_result.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_scan_result_list.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_serial_config.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_socket_interface-members.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_socket_interface.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_socket_interface.js Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_wiconnect-members.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_wiconnect.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_wiconnect.js Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_wiconnect_file.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_wiconnect_socket.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_wiconnect_udp_server-members.html Show annotated file Show diff for this revision Revisions of this file
doc/html/classwiconnect_1_1_wiconnect_udp_server.html Show annotated file Show diff for this revision Revisions of this file
doc/html/dir_27a7d49d62c4e820c816b3d69e277c43.html Show annotated file Show diff for this revision Revisions of this file
doc/html/dir_92f31fe2573a605ed03b946a310a299c.html Show annotated file Show diff for this revision Revisions of this file
doc/html/dir_a4ac87be2fd883a67ff853570f415ca4.html Show annotated file Show diff for this revision Revisions of this file
doc/html/functions.html Show annotated file Show diff for this revision Revisions of this file
doc/html/functions_func.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__core.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__core__macro.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__core__macro.js Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__core__send__command.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__core__send__command.js Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__core__settings.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__core__settings.js Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__core__types.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__core__types.js Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__file.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__file__methods.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__file__types.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__ghm.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__ghm.js Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__ghm__activate.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__ghm__activate.js Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__ghm__com.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__ghm__com.js Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__ghm__examples.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__ghm__macro.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__ghm__msg.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__ghm__msg.js Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__ghm__types.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__ghm__types.js Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__network.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__network__settings.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__network__settings.js Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__network__types.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__network__types.js Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__network__wlan.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__network__wlan.js Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__socket.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__socket__misc.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__socket__misc.js Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__socket__tcp.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__socket__tcp.js Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__socket__tls.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__socket__tls.js Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__socket__types.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__socket__types.js Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__socket__udp.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__api__socket__udp.js Show annotated file Show diff for this revision Revisions of this file
doc/html/group__conversion__util.html Show annotated file Show diff for this revision Revisions of this file
doc/html/group__conversion__util.js Show annotated file Show diff for this revision Revisions of this file
doc/html/hierarchy.html Show annotated file Show diff for this revision Revisions of this file
doc/html/hierarchy.js Show annotated file Show diff for this revision Revisions of this file
doc/html/http__get_2example_8cpp_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/join_2example_8cpp_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/modules.html Show annotated file Show diff for this revision Revisions of this file
doc/html/modules.js Show annotated file Show diff for this revision Revisions of this file
doc/html/namespacewiconnect.html Show annotated file Show diff for this revision Revisions of this file
doc/html/namespacewiconnect.js Show annotated file Show diff for this revision Revisions of this file
doc/html/navtree.js Show annotated file Show diff for this revision Revisions of this file
doc/html/navtreeindex0.js Show annotated file Show diff for this revision Revisions of this file
doc/html/navtreeindex1.js Show annotated file Show diff for this revision Revisions of this file
doc/html/ota_2example_8cpp-example.html Show annotated file Show diff for this revision Revisions of this file
doc/html/ota_2example_8cpp_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/sdk_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/sdk_types_8h_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/search/all_0.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/all_1.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/all_10.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/all_11.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/all_12.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/all_14.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/all_3.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/all_5.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/all_7.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/all_a.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/all_f.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/classes_2.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/classes_3.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/classes_4.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/classes_5.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/classes_6.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/classes_7.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/classes_8.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/classes_9.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/classes_a.html Show annotated file Show diff for this revision Revisions of this file
doc/html/search/classes_a.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/enums_1.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/enums_2.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/enums_3.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/enums_4.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/enums_5.html Show annotated file Show diff for this revision Revisions of this file
doc/html/search/enums_5.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/enumvalues_1.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/enumvalues_2.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/enumvalues_3.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/enumvalues_4.html Show annotated file Show diff for this revision Revisions of this file
doc/html/search/enumvalues_4.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/functions_0.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/functions_3.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/functions_5.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/functions_8.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/functions_c.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/functions_d.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/functions_e.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/functions_f.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/groups_0.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/groups_1.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/groups_2.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/groups_3.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/groups_4.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/groups_5.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/groups_6.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/groups_7.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/groups_8.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/groups_9.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/groups_a.html Show annotated file Show diff for this revision Revisions of this file
doc/html/search/groups_a.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/groups_b.html Show annotated file Show diff for this revision Revisions of this file
doc/html/search/groups_b.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/groups_c.html Show annotated file Show diff for this revision Revisions of this file
doc/html/search/groups_c.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/search.js Show annotated file Show diff for this revision Revisions of this file
doc/html/search/typedefs_4.html Show annotated file Show diff for this revision Revisions of this file
doc/html/search/typedefs_4.js Show annotated file Show diff for this revision Revisions of this file
doc/html/structwiconnect_1_1_ghm_element-members.html Show annotated file Show diff for this revision Revisions of this file
doc/html/structwiconnect_1_1_ghm_element.html Show annotated file Show diff for this revision Revisions of this file
doc/html/structwiconnect_1_1_ghm_element_array-members.html Show annotated file Show diff for this revision Revisions of this file
doc/html/structwiconnect_1_1_ghm_element_array.html Show annotated file Show diff for this revision Revisions of this file
doc/html/structwiconnect_1_1_http_socket_args.html Show annotated file Show diff for this revision Revisions of this file
doc/html/structwiconnect_1_1_mac_address.html Show annotated file Show diff for this revision Revisions of this file
doc/html/structwiconnect_1_1_ssid.html Show annotated file Show diff for this revision Revisions of this file
doc/html/tcp__server_2example_8cpp_source.html Show annotated file Show diff for this revision Revisions of this file
doc/html/web__setup_2example_8cpp_source.html Show annotated file Show diff for this revision Revisions of this file
doc/wiconnect_library.doxyfile Show annotated file Show diff for this revision Revisions of this file
internal/CommandCommon.h Show annotated file Show diff for this revision Revisions of this file
internal/WiconnectCommands.h Show annotated file Show diff for this revision Revisions of this file
internal/common.h Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/AsyncCommand.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,116 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+
+#include "internal/CommandCommon.h"
+
+#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+
+
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::enqueueCommand(QueuedCommand *command, const Callback &commandCompleteHandler)
+{
+    if(commandQueue.isFull())
+    {
+        return WICONNECT_OVERFLOW;
+    }
+    command->setCompletedCallback(commandCompleteHandler);
+    DEBUG_INFO("Queuing command: %s", command->getCommand());
+    commandQueue.push(command);
+    processNextQueuedCommand();
+    return WICONNECT_SUCCESS;
+}
+
+/*************************************************************************************************/
+void Wiconnect::processNextQueuedCommand()
+{
+    if(commandQueue.isEmpty())
+    {
+        return;
+    }
+    else if(commandExecuting)
+    {
+        return;
+    }
+
+    CommandContext *context = (CommandContext*)commandContext;
+    CommandHeader *header = (CommandHeader*)commandHeaderBuffer;
+
+    commandExecuting = true;
+    currentQueuedCommand = commandQueue.pop();
+
+    DEBUG_INFO("Processing next cmd in queue");
+
+    strcpy(commandFormatBuffer, currentQueuedCommand->command);
+
+    RESET_CMD_HEADER(header);
+
+    memset(context, 0, sizeof(CommandContext));
+    if(currentQueuedCommand->responseBufferLen > 0)
+    {
+        context->responseBuffer = currentQueuedCommand->responseBuffer;
+        context->responseBufferLen = currentQueuedCommand->responseBufferLen;
+    }
+    else
+    {
+        context->responseBuffer = internalBuffer;
+        context->responseBufferLen = internalBufferSize;
+    }
+
+    context->responseBufferPtr = context->responseBuffer;
+    context->commandLen = strlen(commandFormatBuffer);
+    context->commandPtr = commandFormatBuffer;
+    context->reader = currentQueuedCommand->reader;
+    context->user = currentQueuedCommand->userData;
+    context->timeoutMs = currentQueuedCommand->timeoutMs;
+    context->callback = currentQueuedCommand->completeCallback;
+    context->nonBlocking = true;
+
+    DEBUG_CMD_SEND(commandFormatBuffer);
+
+    commandExecuting = true;
+    timeoutTimer.reset();
+
+    commandProcessorTimer.start(this, &Wiconnect::commandProcessingTimerHandler, commandProcessingPeriod);
+}
+
+/*************************************************************************************************/
+void Wiconnect::setCommandProcessingPeriod(uint32_t periodMs)
+{
+    commandProcessingPeriod = periodMs;
+}
+
+/*************************************************************************************************/
+void Wiconnect::commandProcessingTimerHandler()
+{
+    checkCurrentCommand();
+}
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Endpoint.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,86 @@
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#include "api/types/Socket/Socket.h"
+#include "api/types/Socket/Endpoint.h"
+#include <cstring>
+#include <cstdio>
+
+
+
+/*************************************************************************************************/
+Endpoint::Endpoint()
+{
+    reset_address();
+}
+
+/*************************************************************************************************/
+Endpoint::~Endpoint() {}
+
+/*************************************************************************************************/
+void Endpoint::reset_address(void)
+{
+    std::memset(&_remoteHost, 0, sizeof(struct sockaddr_in));
+    _ipAddress[0] = '\0';
+}
+
+/*************************************************************************************************/
+int Endpoint::set_address(const char* host, const int port)
+{
+    reset_address();
+
+    // IP Address
+    char address[5];
+    char *p_address = address;
+
+    // Dot-decimal notation
+    int result = std::sscanf(host, "%3u.%3u.%3u.%3u",
+        (unsigned int*)&address[0], (unsigned int*)&address[1],
+        (unsigned int*)&address[2], (unsigned int*)&address[3]);
+
+    if (result != 4)
+    {
+        // Resolve address with DNS
+        struct hostent *host_address = gethostbyname(host);
+        if (host_address == NULL)
+            return -1; //Could not resolve address
+        p_address = (char*)host_address->h_addr_list[0];
+    }
+    std::memcpy((char*)&_remoteHost.sin_addr.s_addr, p_address, 4);
+
+    // Address family
+    _remoteHost.sin_family = AF_INET;
+
+    // Set port
+    _remoteHost.sin_port = htons(port);
+
+    return 0;
+}
+
+/*************************************************************************************************/
+char* Endpoint::get_address()
+{
+    if ((_ipAddress[0] == '\0') && (_remoteHost.sin_addr.s_addr != 0))
+            inet_ntoa_r(_remoteHost.sin_addr, _ipAddress, sizeof(_ipAddress));
+    return _ipAddress;
+}
+
+/*************************************************************************************************/
+int   Endpoint::get_port()
+{
+    return ntohs(_remoteHost.sin_port);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FileInterface.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,226 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+
+#include "Wiconnect.h"
+#include "internal/common.h"
+#include "api/StringUtil.h"
+
+
+/*************************************************************************************************/
+FileInterface::FileInterface(Wiconnect *wiconnect_)
+{
+    wiconnect = wiconnect_;
+}
+
+/*************************************************************************************************/
+WiconnectResult FileInterface::openFile(WiconnectFile &file, const char *name)
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("fop %s", name)))
+    {
+        int32_t handle;
+        if(!WICONNECT_FAILED(result, wiconnect->responseToInt32(&handle)))
+        {
+            file.openForRead(handle, name);
+        }
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult FileInterface::createFile(const ReaderFunc &reader, void *user, const char *name, uint32_t size, uint32_t version, FileType type, bool isEssential, int32_t checksum)
+{
+    WiconnectResult result;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+    if(WICONNECT_IS_IDLE())
+    {
+        char *ptr = cmdBuffer;
+
+        ptr += sprintf(cmdBuffer, "fcr %s%s %u", isEssential ? "-e " : "", name, (unsigned int)size);
+
+        if(version != 0)
+        {
+            *ptr = ' ';
+            ++ptr;
+            FileInterface::fileVersionIntToStr(version, true, ptr);
+            ptr = ptr + strlen(ptr);
+        }
+        if(type != FILE_TYPE_ANY)
+        {
+            ptr += sprintf(ptr, " %X", type);
+        }
+        if(checksum != -1)
+        {
+            ptr += sprintf(ptr, " %X", (unsigned int)checksum);
+        }
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand(reader, user, (const char *)cmdBuffer);
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+
+/*************************************************************************************************/
+WiconnectResult FileInterface::deleteFile(const char *name)
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand("fde %s", name);
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult FileInterface::deleteFile(const WiconnectFile &file)
+{
+    return deleteFile(file.getName());
+}
+
+
+/*************************************************************************************************/
+const char* FileInterface::fileVersionIntToStr(uint32_t version, bool verbose, char *buffer)
+{
+    SET_STR_BUFFER(buffer, 32);
+    const char *fmt = verbose ? "%u.%u.%u.%u" : "%u.%u.%u";
+    sprintf(ptr, fmt, FILE_VERSION_ARGS(version));
+    return ptr;
+}
+
+/*************************************************************************************************/
+bool FileInterface::fileVersionStrToInt(const char *versionStr, uint32_t *versionIntPtr)
+{
+    const uint8_t offsets[] = {27, 21, 8, 0};
+    char buffer[18];
+    char *tok, *ptr = buffer;
+    uint32_t version = 0;
+
+    strcpy(buffer, versionStr);
+
+    for(int i = 0; i < 4 && (tok = strtok(ptr, ".")) != NULL; ++i)
+    {
+        char *end;
+        const uint32_t value = strtol(tok, &end, 10);
+        if(*end != 0)
+        {
+            return false;
+        }
+        version |= (value << offsets[i]);
+        ptr = NULL;
+    }
+
+    *versionIntPtr = version;
+
+    return true;
+}
+
+/*************************************************************************************************/
+const char* FileInterface::fileTypeToStr(FileType type)
+{
+    switch(type)
+    {
+    case FILE_TYPE_UPGRADE_APP:
+        return "Upgrade App";
+    case FILE_TYPE_WIFI_FW:
+        return "Wifi Firmware";
+    case FILE_TYPE_REGULAR_APP:
+        return "Regular App";
+    case FILE_TYPE_TEMPORY:
+        return "Temporary";
+    case FILE_TYPE_GPIO_CONFIG:
+        return "GPIO Default Configuration";
+    case FILE_TYPE_COMMAND_HELP:
+        return "Command Help";
+    case FILE_TYPE_SDC_CAPS:
+        return "goHACK.me Capabilities";
+    case FILE_TYPE_SETUP_SCRIPT:
+        return "Setup Script";
+    case FILE_TYPE_MISC_FIX_LEN:
+        return "Miscellaneous";
+    default:
+        if(type >= FILE_TYPE_USER_RANGE_START && type <= FILE_TYPE_USER_RANGE_END)
+            return "User";
+        else
+            return "Unknown";
+    }
+}
+
+/*************************************************************************************************/
+const char* FileInterface::fileFlagsToStr(FileFlags flags, char *buffer)
+{
+    SET_STR_BUFFER(buffer, 64);
+    char *buf = ptr;
+
+    static const char* const flag_strings[] = {
+            "Valid",
+            "Executable",
+            "Encrypted",
+            "Internal",
+            "Bootable",
+            "User",
+            "Essential",
+    };
+
+    int i = 0;
+    *ptr = 0;
+
+    for(uint16_t f = flags; f != 0 && i < 7; f >>= 1, ++i)
+    {
+        if(f & 0x0001)
+        {
+            ptr += sprintf(ptr, "%s,", flag_strings[i]);
+        }
+    }
+
+    if(ptr == buffer)
+    {
+        strcpy(buffer, "None");
+    }
+    else
+    {
+        *(ptr-1) = 0;
+    }
+
+    return buf;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FileList.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,144 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+
+
+#include "Wiconnect.h"
+#include "api/types/FileList.h"
+
+
+
+/*************************************************************************************************/
+FileList::FileList(int bufferLen_, void *buffer_)
+{
+    count = 0;
+    listHead = listTail = NULL;
+    buffer = (uint8_t*)buffer_;
+    bufferPtr = buffer;
+    bufferLen = bufferLen_;
+}
+
+/*************************************************************************************************/
+FileList::~FileList()
+{
+    if(buffer == NULL)
+    {
+        WiconnectFile* result = listHead;
+        while(result != NULL)
+        {
+            WiconnectFile* tmp = result;
+            result = result->next;
+            delete tmp;
+        }
+    }
+}
+
+/*************************************************************************************************/
+WiconnectResult FileList::add(const char *typeStr, const char *flagsStr, const char* sizeStr, const char *versionStr, const char *nameStr)
+{
+    WiconnectResult result;
+    WiconnectFile *res;
+
+    if(buffer == NULL)
+    {
+#ifdef WICONNECT_ENABLE_MALLOC
+        res = new WiconnectFile();
+        if(res == NULL)
+#endif
+        {
+            return WICONNECT_NULL_BUFFER;
+        }
+    }
+    else
+    {
+        if(bufferLen < sizeof(WiconnectFile))
+        {
+            return WICONNECT_OVERFLOW;
+        }
+        res = (WiconnectFile*)bufferPtr;
+        memset(res, 0, sizeof(WiconnectFile));
+        bufferLen -= sizeof(WiconnectFile);
+        bufferPtr += sizeof(WiconnectFile);
+    }
+
+    if(WICONNECT_FAILED(result, res->initWithListing(typeStr, flagsStr, sizeStr, versionStr, nameStr)))
+    {
+        if(buffer == NULL)
+        {
+            delete res;
+        }
+    }
+    else
+    {
+        if(listHead == NULL)
+        {
+            listHead = listTail = res;
+        }
+        else
+        {
+            res->previous = listTail;
+            listTail->next = res;
+            listTail = res;
+        }
+        ++count;
+    }
+
+    return result;
+}
+
+/*************************************************************************************************/
+const WiconnectFile* FileList::getListHead() const
+{
+    return listHead;
+}
+
+/*************************************************************************************************/
+int FileList::getCount() const
+{
+    return count;
+}
+
+/*************************************************************************************************/
+const WiconnectFile* FileList::getResult(int i) const
+{
+    if(i >= count)
+        return NULL;
+
+    WiconnectFile* result = listHead;
+    while(i-- != 0)
+        result = result->next;
+
+    return result;
+}
+
+/*************************************************************************************************/
+const WiconnectFile* FileList::operator [](int i) const
+{
+    return getResult(i);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FileListing.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,129 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+
+#include "Wiconnect.h"
+#include "internal/common.h"
+#include "api/StringUtil.h"
+
+
+static bool nameMatches(const char *needle, const char* haystack);
+
+
+
+/*************************************************************************************************/
+WiconnectResult FileInterface::listFiles(FileList &list, const char *name, FileType type, uint32_t version)
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("ls -v")))
+    {
+        result = processFileList(wiconnect->internalBuffer, list, name, type, version);
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult FileInterface::processFileList(char *responseStr, FileList &list, const char *name, FileType type, uint32_t version)
+{
+    WiconnectResult result = WICONNECT_SUCCESS;
+    char *line, *savedLine;
+
+    for(savedLine = responseStr; (line = StringUtil::strtok_r(savedLine, "\r\n", &savedLine)) != NULL;)
+    {
+        uint32_t tmp;
+        char *toks[7], *savedTok;
+
+        if(*line != '#')
+        {
+            continue;
+        }
+        savedTok = line + 2;
+
+        for(int i = 0; i < 6 && (toks[i] = StringUtil::strtok_r(savedTok, " ", &savedTok)) != NULL; ++i)
+        {
+            if(toks[i] == NULL)
+            {
+                result = WICONNECT_RESPONSE_PARSE_ERROR;
+                goto exit;
+            }
+        }
+
+
+        if(name != NULL && !nameMatches(name, savedTok+1))
+        {
+            continue;
+        }
+        else if((type != FILE_TYPE_ANY) &&
+                StringUtil::strHexToUint32((const char*)&toks[1][2], &tmp) &&
+                (type != (FileType)tmp))
+        {
+            continue;
+        }
+        else if((version != 0) &&
+                FileInterface::fileVersionStrToInt(toks[5], &tmp) &&
+                (version != tmp))
+        {
+            continue;
+        }
+        else if(WICONNECT_FAILED(result, list.add(toks[1], toks[2], toks[4], toks[5], savedTok+1)))
+        {
+            goto exit;
+        }
+    }
+
+    exit:
+    return result;
+}
+
+
+/*************************************************************************************************/
+static bool nameMatches(const char *needle, const char* haystack)
+{
+    const int haystackLen = strlen(haystack);
+
+    if(*needle == '*')
+    {
+        const int n = strlen(needle + 1);
+
+        if(n > haystackLen)
+        {
+            return false;
+        }
+        return strcmp(needle+1, &haystack[haystackLen - n]) == 0;
+    }
+    else
+    {
+        return strcmp(needle, haystack) == 0;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GhmInterface.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,307 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence:
+ *
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ */
+
+#include "Wiconnect.h"
+#include "internal/common.h"
+#include "api/StringUtil.h"
+
+
+/*************************************************************************************************/
+GhmInterface::GhmInterface(Wiconnect *wiconnect_)
+{
+    wiconnect = wiconnect_;
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmDownloadCapabilities(const char *capsNameOrCustomUrl, uint32_t version)
+{
+    WiconnectResult result;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+    if(WICONNECT_IS_IDLE())
+    {
+        strcpy(cmdBuffer, "gca download ");
+        if(capsNameOrCustomUrl != NULL)
+        {
+            strcat(cmdBuffer, capsNameOrCustomUrl);
+            if(version > 0)
+            {
+                char temp[16];
+                char *ptr = cmdBuffer + strlen(cmdBuffer);
+                *ptr++ = ' ';
+                sprintf(ptr, "%s", Wiconnect::fileVersionIntToStr(version, true, temp));
+            }
+        }
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand(cmdBuffer);
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmActivate(const char *userName, const char *password, const char *capsFilename)
+{
+    WiconnectResult result;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+    if(WICONNECT_IS_IDLE())
+    {
+        sprintf(cmdBuffer, "gac %s %s %s", userName, password, (capsFilename == NULL) ? "" : capsFilename);
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand(cmdBuffer);
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmDeactivate(const char *userName, const char *password)
+{
+    WiconnectResult result;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+    if(WICONNECT_IS_IDLE())
+    {
+        sprintf(cmdBuffer, "gac %s %s", userName, password);
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand(cmdBuffer);
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmIsActivated(bool *statusPtr)
+{
+    WiconnectResult result;
+    uint32_t status;
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->getSetting("ghm.status", &status)))
+    {
+        *statusPtr = (bool)status;
+    }
+
+    return result;
+}
+
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmRead(const char *controlName, const char **valueStrPtr)
+{
+    WiconnectResult result;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+    if(WICONNECT_IS_IDLE())
+    {
+        sprintf(cmdBuffer, "gre %s", controlName);
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand(cmdBuffer)))
+    {
+        *valueStrPtr = wiconnect->internalBuffer;
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmRead(const char *controlName, uint32_t *valueIntPtr)
+{
+    WiconnectResult result;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+    if(WICONNECT_IS_IDLE())
+    {
+        sprintf(cmdBuffer, "gre %s", controlName);
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand(cmdBuffer)))
+    {
+        result = wiconnect->responseToUint32(valueIntPtr);
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmRead(const char *controlName, char *valueBuffer, uint16_t valueBufferLen)
+{
+    WiconnectResult result;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+    if(WICONNECT_IS_IDLE())
+    {
+        sprintf(cmdBuffer, "gre %s", controlName);
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand(valueBuffer, valueBufferLen, cmdBuffer);
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmWrite(const char *elementName, const char *strValue)
+{
+    WiconnectResult result;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+    if(WICONNECT_IS_IDLE())
+    {
+        sprintf(cmdBuffer, "gwr %s %s", elementName, strValue);
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand(cmdBuffer);
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmWrite(const char *elementName, uint32_t uintValue)
+{
+    WiconnectResult result;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+    if(WICONNECT_IS_IDLE())
+    {
+        sprintf(cmdBuffer, "gwr %s %lu", elementName, uintValue);
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand(cmdBuffer);
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmWrite(const char *elementName, int32_t intValue)
+{
+    WiconnectResult result;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+    if(WICONNECT_IS_IDLE())
+    {
+        sprintf(cmdBuffer, "gwr %s %ld", elementName, intValue);
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand(cmdBuffer);
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmWrite(const GhmElementArray *elementArray)
+{
+    WiconnectResult result;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+    if(WICONNECT_IS_IDLE())
+    {
+        char *ptr = &cmdBuffer[4];
+        sprintf(cmdBuffer, "gwr ");
+
+        const GhmElement *elEnd = &elementArray->elements[elementArray->count];
+        for(const GhmElement *el = &elementArray->elements[0]; el < elEnd; ++el)
+        {
+            if(el-> type == GHM_VALUE_INT)
+            {
+                ptr += sprintf(ptr, "%s,%lu|", el->elementName, el->u.intValue);
+            }
+            else
+            {
+                ptr += sprintf(ptr, "%s,%s|", el->elementName, el->u.strValue);
+            }
+        }
+        *(ptr-1) = 0;
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand(cmdBuffer);
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmSynchronize(GhmSyncType type)
+{
+    WiconnectResult result;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+    if(WICONNECT_IS_IDLE())
+    {
+        sprintf(cmdBuffer, "gsy %s", (type == GHM_SYNC_PUSH_ONLY) ? "push" :
+                                     (type == GHM_SYNC_PULL_ONLY) ? "pull" : "");
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand(cmdBuffer);
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GhmMessage.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,129 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#include "Wiconnect.h"
+#include "api/types/GhmMessage.h"
+#include "internal/common.h"
+
+
+
+
+/*************************************************************************************************/
+GhmMessage::GhmMessage()
+{
+    next = NULL;
+    previous = NULL;
+    messageId[0] = 0;
+    timestamp[0] = 0;
+    length = 0;
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmMessage::init(const char *msgIdStr, const char* timestampStr, const char *lengthStr)
+{
+    intmax_t r;
+    if(!StringUtil::parseHex(lengthStr, &r, 0, USHRT_MAX))
+    {
+        return WICONNECT_RESPONSE_PARSE_ERROR;
+    }
+    length = (uint16_t)r;
+
+    strncpy(messageId, msgIdStr, sizeof(messageId));
+    strncpy(timestamp, timestampStr, sizeof(timestamp));
+
+    return WICONNECT_SUCCESS;
+}
+
+#ifdef WICONNECT_ENABLE_MALLOC
+/*************************************************************************************************/
+void* GhmMessage::operator new(size_t size)
+{
+    Wiconnect *wiconnect = Wiconnect::getInstance();
+    wiconnect_assert(wiconnect, "GhmMessage:new, malloc not defined", wiconnect->_malloc != NULL);
+    return Wiconnect::getInstance()->_malloc(size);
+}
+
+/*************************************************************************************************/
+void GhmMessage::operator delete(void* ptr)
+{
+    Wiconnect *wiconnect = Wiconnect::getInstance();
+    wiconnect_assert(wiconnect, "GhmMessage:delete, free not defined", wiconnect->_free != NULL);
+    Wiconnect::getInstance()->_free(ptr);
+}
+#endif
+
+/*************************************************************************************************/
+const char* GhmMessage::getMessageId(char *buffer) const
+{
+    const char *ptr;
+    if(buffer != NULL)
+    {
+        strcpy(buffer, messageId);
+        ptr = buffer;
+    }
+    else
+    {
+        ptr = messageId;
+    }
+    return ptr;
+}
+
+/*************************************************************************************************/
+const char* GhmMessage::getTimestamp(char *buffer) const
+{
+    const char *ptr;
+    if(buffer != NULL)
+    {
+        strcpy(buffer, timestamp);
+        ptr = buffer;
+    }
+    else
+    {
+        ptr = timestamp;
+    }
+    return ptr;
+}
+
+/*************************************************************************************************/
+uint16_t GhmMessage::getLength() const
+{
+    return length;
+}
+
+/*************************************************************************************************/
+const GhmMessage* GhmMessage::getNext() const
+{
+    return next;
+}
+
+/*************************************************************************************************/
+const GhmMessage* GhmMessage::getPrevious() const
+{
+    return previous;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GhmMessageList.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,159 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#include "Wiconnect.h"
+#include "api/types/GhmMessageList.h"
+#include "internal/common.h"
+
+
+/*************************************************************************************************/
+GhmMessageList::GhmMessageList(int bufferLen_, void *buffer_)
+{
+    Wiconnect *wiconnect = Wiconnect::getInstance();
+    wiconnect_assert(wiconnect, "GhmMessageList(), bad buffer", (bufferLen_ == 0 && buffer_ == NULL) || (bufferLen_ != 0 && buffer_ != NULL));
+
+    buffer = (uint8_t*)buffer_;
+    bufferLen = bufferLen_;
+    reset();
+}
+
+/*************************************************************************************************/
+GhmMessageList::~GhmMessageList()
+{
+    reset();
+}
+
+/*************************************************************************************************/
+void GhmMessageList::reset(void)
+{
+#ifdef WICONNECT_ENABLE_MALLOC
+    if(buffer == NULL)
+    {
+        GhmMessage* result = listHead;
+        while(result != NULL)
+        {
+            GhmMessage* tmp = result;
+            result = result->next;
+            delete tmp;
+        }
+    }
+#endif
+    listHead = listTail = NULL;
+    bufferPtr = buffer;
+    bufferRemaining = bufferLen;
+    count = 0;
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmMessageList::add(const char *msgId, const char* timestamp, const char *length)
+{
+    WiconnectResult result;
+    GhmMessage *res;
+
+    if(buffer == NULL)
+    {
+#ifdef WICONNECT_ENABLE_MALLOC
+        res = new GhmMessage();
+        if(res == NULL)
+#endif
+        {
+            return WICONNECT_NULL_BUFFER;
+        }
+    }
+    else
+    {
+        if(bufferRemaining < sizeof(GhmMessage))
+        {
+            return WICONNECT_OVERFLOW;
+        }
+        res = (GhmMessage*)bufferPtr;
+        memset(res, 0, sizeof(GhmMessage));
+        bufferRemaining -= sizeof(GhmMessage);
+        bufferPtr += sizeof(GhmMessage);
+    }
+
+    if(WICONNECT_FAILED(result, res->init(msgId, timestamp, length)))
+    {
+        if(buffer == NULL)
+        {
+            delete res;
+        }
+    }
+    else
+    {
+        if(listHead == NULL)
+        {
+            listHead = listTail = res;
+        }
+        else
+        {
+            res->previous = listTail;
+            listTail->next = res;
+            listTail = res;
+        }
+        ++count;
+    }
+
+    return result;
+}
+
+/*************************************************************************************************/
+const GhmMessage* GhmMessageList::getListHead() const
+{
+    return listHead;
+}
+
+/*************************************************************************************************/
+int GhmMessageList::getCount() const
+{
+    return count;
+}
+
+/*************************************************************************************************/
+const GhmMessage* GhmMessageList::getResult(int i) const
+{
+    if(i >= count)
+        return NULL;
+
+    GhmMessage* result = listHead;
+    while(i-- != 0)
+        result = result->next;
+
+    return result;
+}
+
+/*************************************************************************************************/
+const GhmMessage* GhmMessageList::operator [](int i) const
+{
+    return getResult(i);
+}
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GhmMessageProcessing.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,235 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence:
+ *
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ */
+
+#include "Wiconnect.h"
+#include "internal/common.h"
+#include "api/StringUtil.h"
+
+
+#define GHM_HOST_URL "api.gohack.me"
+
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmPostMessage(WiconnectSocket &socket, bool jsonFormatted)
+{
+    WiconnectResult result;
+    int32_t handle;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+    if(WICONNECT_IS_IDLE())
+    {
+        strcpy(cmdBuffer, "gme post ");
+        if(jsonFormatted)
+        {
+            strcat(cmdBuffer, "json");
+        }
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand(cmdBuffer)))
+    {
+        if(!WICONNECT_FAILED(result, wiconnect->responseToInt32(&handle)))
+        {
+            socket.init(handle, SOCKET_TYPE_GHM, GHM_HOST_URL, 443, SOCKET_ANY_PORT);
+        }
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmGetMessage(WiconnectSocket &socket, GhmMessageGetType getType)
+{
+    return ghmGetMessage(socket, 255, NULL, getType);
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmGetMessage(WiconnectSocket &socket, uint8_t listIndex, GhmMessageGetType getType)
+{
+    return ghmGetMessage(socket, listIndex, NULL, getType);
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmGetMessage(WiconnectSocket &socket, const char *msgId, GhmMessageGetType getType)
+{
+    return ghmGetMessage(socket, 255, msgId, getType);
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmGetMessage(WiconnectSocket &socket, uint8_t listIndex, const char *msgId, GhmMessageGetType getType)
+{
+    WiconnectResult result;
+    int32_t handle;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+    if(WICONNECT_IS_IDLE())
+    {
+        char *ptr = &cmdBuffer[7];
+        strcpy(cmdBuffer, "gme get");
+        if(listIndex != 255)
+        {
+            sprintf(ptr, " %u", listIndex);
+        }
+        else if(msgId != NULL)
+        {
+            sprintf(ptr, " %s", msgId);
+        }
+
+        if(getType == GHM_MSG_GET_BODY)
+        {
+            strcat(cmdBuffer, " body");
+        }
+        else if(getType == GHM_MSG_GET_ALL)
+        {
+            strcat(cmdBuffer, " all");
+        }
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand(cmdBuffer)))
+    {
+        if(!WICONNECT_FAILED(result, wiconnect->responseToInt32(&handle)))
+        {
+            socket.init(handle, SOCKET_TYPE_GHM, GHM_HOST_URL, 443, SOCKET_ANY_PORT);
+        }
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmDeleteMessage(uint8_t listIndex)
+{
+    WiconnectResult result;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+    if(WICONNECT_IS_IDLE())
+    {
+        sprintf(cmdBuffer, "gme delete %u", listIndex);
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand(cmdBuffer);
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmDeleteMessage(const char *msgId)
+{
+    WiconnectResult result;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+    if(WICONNECT_IS_IDLE())
+    {
+        sprintf(cmdBuffer, "gme delete %s", msgId);
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand(cmdBuffer);
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::ghmListMessages(GhmMessageList &msgList, uint8_t maxCount)
+{
+    WiconnectResult result;
+    int32_t handle;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+    if(WICONNECT_IS_IDLE())
+    {
+        msgList.reset();
+        strcpy(cmdBuffer, "gme list");
+        if(maxCount != 0)
+        {
+            sprintf(&cmdBuffer[8], " -c %u", maxCount);
+        }
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand(cmdBuffer)))
+    {
+        result = processMessageList(wiconnect->internalBuffer, msgList);
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+
+/*************************************************************************************************/
+WiconnectResult GhmInterface::processMessageList(char *resultStr, GhmMessageList &resultList)
+{
+    WiconnectResult result = WICONNECT_SUCCESS;
+    char *line, *savedLine;
+
+    for(savedLine = resultStr; (line = StringUtil::strtok_r(savedLine, "\r\n", &savedLine)) != NULL;)
+    {
+        char *toks[4], *savedTok;
+
+        if(*line != '#')
+        {
+            continue;
+        }
+        savedTok = line + 2;
+
+        for(int i = 0; i < 4 && (toks[i] = StringUtil::strtok_r(savedTok, " ", &savedTok)) != NULL; ++i)
+        {
+            if(toks[i] == NULL)
+            {
+                result = WICONNECT_RESPONSE_PARSE_ERROR;
+                goto exit;
+            }
+        }
+
+        if(WICONNECT_FAILED(result, resultList.add(toks[1], toks[2], toks[3])))
+        {
+            goto exit;
+        }
+    }
+
+    exit:
+    return result;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Gpio.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,68 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+
+#include "Wiconnect.h"
+#include "internal/common.h"
+
+#include "platform.h"
+#include "gpio_api.h"
+
+
+
+/*************************************************************************************************/
+Gpio::Gpio(Pin pin) : DigitalOut(pin)
+{
+}
+
+/*************************************************************************************************/
+void Gpio::write(bool value)
+{
+    gpio_write(&gpio, (int)value);
+}
+
+/*************************************************************************************************/
+bool Gpio::read(void)
+{
+    const int v = gpio_read(&gpio);
+    return (bool)v;
+}
+
+/*************************************************************************************************/
+Gpio& Gpio::operator= (bool value)
+{
+    write(value);
+    return *this;
+}
+
+/*************************************************************************************************/
+Gpio& Gpio::operator= (const Gpio& other)
+{
+    memcpy((void*)&gpio, (void*)&other.gpio, sizeof(gpio));
+    return *this;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/NetworkInterface.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,659 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+
+#include "Wiconnect.h"
+#include "internal/common.h"
+#include "api/StringUtil.h"
+
+
+#define IPV4_FORMAT "%u.%u.%u.%u"
+#define IPV4_ARGS(ip) \
+    (int)(((ip) >>  0) & 0xff), \
+    (int)(((ip) >>  8) & 0xff), \
+    (int)(((ip) >> 16) & 0xff), \
+    (int)(((ip) >> 24) & 0xff)
+
+
+
+/*************************************************************************************************/
+NetworkInterface::NetworkInterface(Wiconnect *wiconnect_)
+{
+    wiconnect = wiconnect_;
+}
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::ping(const char *domain, uint32_t *timeMsPtr)
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("ping %s",  (domain == NULL) ? "-g" : domain)) &&
+            timeMsPtr != NULL)
+    {
+        if(sscanf(wiconnect->internalBuffer, "Ping reply in %ums", (unsigned int*)timeMsPtr) != 1)
+        {
+            result = WICONNECT_RESPONSE_PARSE_ERROR;
+        }
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::lookup(const char *domain, uint32_t *ipAddressPtr)
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("nlo %s", domain)))
+    {
+        if(!NetworkInterface::strToIp(wiconnect->internalBuffer, ipAddressPtr))
+        {
+            result = WICONNECT_RESPONSE_PARSE_ERROR;
+        }
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::setDhcpEnabled(bool enabled)
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand(CMD_SET_NETWORK_DHCP, enabled);
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::getDhcpEnabled(bool *enabledPtr)
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("get network.dhcp.enabled")))
+    {
+        int32_t enabled;
+        if(WICONNECT_SUCCEEDED(result, wiconnect->responseToInt32(&enabled)))
+        {
+            *enabledPtr = (bool)enabled;
+        }
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::setIpSettings(uint32_t ip, uint32_t netmask, uint32_t gateway)
+{
+    WiconnectResult result = WICONNECT_ERROR;
+
+    enum
+    {
+        FS_SET_IP,
+        FS_SET_NETMASK,
+        FS_SET_GATEWAY
+    };
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(wiconnect->internalProcessingState == FS_SET_IP)
+    {
+        if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand(CMD_SET_STATIC_IP, IPV4_ARGS(ip))))
+        {
+            wiconnect->internalProcessingState = FS_SET_NETMASK;
+        }
+    }
+
+    if(wiconnect->internalProcessingState == FS_SET_NETMASK)
+    {
+        if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand(CMD_SET_STATIC_NETMASK, IPV4_ARGS(netmask))))
+        {
+            wiconnect->internalProcessingState = FS_SET_GATEWAY;
+        }
+    }
+
+    if(wiconnect->internalProcessingState == FS_SET_GATEWAY)
+    {
+        if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand(CMD_SET_STATIC_GATEWAY, IPV4_ARGS(gateway))))
+        {
+        }
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::setIpSettings(const char* ipStr, const char* netmaskStr, const char* gatewayStr)
+{
+    uint32_t ip, nm, gw;
+
+    if( !NetworkInterface::strToIp(ipStr, &ip) ||
+        !NetworkInterface::strToIp(netmaskStr, &nm) ||
+        !NetworkInterface::strToIp(gatewayStr, &gw))
+    {
+        return WICONNECT_ERROR;
+    }
+    return setIpSettings(ip, nm, gw);
+}
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::getIpSettings(uint32_t *ip, uint32_t *netmask, uint32_t *gateway)
+{
+    WiconnectResult result = WICONNECT_ERROR;
+
+    enum
+    {
+        FS_GET_IP,
+        FS_GET_NETMASK,
+        FS_GET_GATEWAY
+    };
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(wiconnect->internalProcessingState == FS_GET_IP)
+    {
+        if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("get network.ip")))
+        {
+            if(!NetworkInterface::strToIp(wiconnect->internalBuffer, ip))
+            {
+                result = WICONNECT_RESPONSE_PARSE_ERROR;
+            }
+            else
+            {
+                wiconnect->internalProcessingState = FS_GET_NETMASK;
+            }
+        }
+    }
+
+    if(wiconnect->internalProcessingState == FS_GET_NETMASK)
+    {
+        if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("get network.netmask")))
+        {
+            if(!NetworkInterface::strToIp(wiconnect->internalBuffer, netmask))
+            {
+                result = WICONNECT_RESPONSE_PARSE_ERROR;
+            }
+            else
+            {
+                wiconnect->internalProcessingState = FS_GET_GATEWAY;
+            }
+        }
+    }
+
+    if(wiconnect->internalProcessingState == FS_GET_GATEWAY)
+    {
+        if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("get network.gateway")))
+        {
+            if(!NetworkInterface::strToIp(wiconnect->internalBuffer, gateway))
+            {
+                result = WICONNECT_RESPONSE_PARSE_ERROR;
+            }
+        }
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::setDnsAddress(uint32_t dnsAddress)
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand("set static.dns %d.%d.%d.%d", IPV4_ARGS(dnsAddress));
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::getDnsAddress(uint32_t *dnsAddress)
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("get static.dns")))
+    {
+        if(!NetworkInterface::strToIp(wiconnect->internalBuffer, dnsAddress))
+        {
+            result = WICONNECT_RESPONSE_PARSE_ERROR;
+        }
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::getRssi(int32_t *rssiPtr)
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    *rssiPtr = -999;
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("rssi")))
+    {
+        result = wiconnect->responseToInt32(rssiPtr);
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::getSignalStrength(NetworkSignalStrength *signalStrengthPtr)
+{
+    WiconnectResult result;
+    int32_t rssiDbm;
+
+    if(WICONNECT_SUCCEEDED(result, getRssi(&rssiDbm)))
+    {
+        *signalStrengthPtr = NetworkInterface::rssiToSignalStrength(rssiDbm);
+    }
+    else if(result == WICONNECT_CMD_RESPONSE_ERROR)
+    {
+        *signalStrengthPtr = NETWORK_RSSI_UNKNOWN;
+        result = WICONNECT_SUCCESS;
+    }
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::getMacAddress(MacAddress *macAddress)
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("get wlan.mac")))
+    {
+        if(!Wiconnect::strToMacAddress(wiconnect->internalBuffer, macAddress))
+        {
+            result = WICONNECT_RESPONSE_PARSE_ERROR;
+        }
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+
+/*************************************************************************************************/
+const char* NetworkInterface::getIpAddress(char *ipStrBuffer)
+{
+    SET_STR_BUFFER(ipStrBuffer, 17);
+
+    if(wiconnect->nonBlocking)
+    {
+        return "Err";
+    }
+
+    if(wiconnect->sendCommand(ptr, 17, "get network.ip") != WICONNECT_SUCCESS)
+    {
+        strcpy(ptr, "0.0.0.0");
+    }
+
+    return ptr;
+}
+
+
+//-----------------------------------------------------------------------------------------------
+
+
+/*************************************************************************************************/
+bool NetworkInterface::strToIp(const char *str, uint32_t *intPtr)
+{
+    if (!intPtr)
+    {
+        return false;
+    }
+    uint32_t ip = 0;
+    int i;
+    char *tok;
+
+    for(i = 0; i < 4; ++i, str = tok)
+    {
+        uint8_t nibble;
+
+        tok = strchr(str, '.');
+        if(tok == NULL)
+        {
+            if(i < 3)
+            {
+                return false;
+            }
+        }
+        else
+        {
+            *tok++ = 0;
+        }
+
+        if(!StringUtil::strToUint8(str, &nibble))
+        {
+            return false;
+        }
+        ip |= (((uint32_t)nibble) << 24);
+        if(i < 3)
+        {
+            ip = (ip >> 8UL);
+        }
+    }
+
+    if(i != 4)
+    {
+        return false;
+    }
+
+    *intPtr = ip;
+
+    return true;
+}
+
+/*************************************************************************************************/
+const char* NetworkInterface::ipToStr(uint32_t ip, char *ipStrBuffer)
+{
+    SET_STR_BUFFER(ipStrBuffer, 17);
+
+    sprintf(ptr, IPV4_FORMAT, IPV4_ARGS(ip));
+    return ptr;
+}
+
+/*************************************************************************************************/
+const char* NetworkInterface::networkStatusToStr(NetworkStatus status)
+{
+    switch(status)
+    {
+    case NETWORK_STATUS_DOWN:
+        return "Down";
+    case NETWORK_STATUS_WIFI_ONLY:
+        return "WiFi Only";
+    case NETWORK_STATUS_UP:
+        return "Up";
+    default:
+        return "Unknown";
+    }
+}
+
+/*************************************************************************************************/
+const char* NetworkInterface::networkJoinResultToStr(NetworkJoinResult joinResult)
+{
+    switch(joinResult)
+    {
+    case NETWORK_JOIN_RESULT_NONE:
+        return "None";
+    case NETWORK_JOIN_RESULT_SUCCESS:
+        return "Success";
+    case NETWORK_JOIN_RESULT_JOINING:
+        return "Joining";
+    case NETWORK_JOIN_RESULT_NO_SSID:
+        return "No SSID";
+    case NETWORK_JOIN_RESULT_NO_PASSWORD:
+        return "No Password";
+    case NETWORK_JOIN_RESULT_BAD_SECURITY:
+        return "Bad Security Setting";
+    case NETWORK_JOIN_RESULT_NOT_FOUND:
+        return "Network Not Found";
+    case NETWORK_JOIN_RESULT_FAILED:
+        return "Failed";
+    case NETWORK_JOIN_RESULT_ABORTED:
+        return "Aborted";
+    default:
+        return "Unknown";
+    }
+}
+
+
+/*************************************************************************************************/
+const char* NetworkInterface::signalStrengthToStr(NetworkSignalStrength signalStrenth)
+{
+    switch(signalStrenth)
+    {
+    case NETWORK_RSSI_EXCELLENT:
+        return "Excellent";
+    case NETWORK_RSSI_VERY_GOOD:
+        return "Very Good";
+    case NETWORK_RSSI_GOOD:
+        return "Good";
+    case NETWORK_RSSI_POOR:
+        return "Poor";
+    case NETWORK_RSSI_VERY_POOR:
+        return "Very Poor";
+    case NETWORK_RSSI_UNKNOWN:
+    default:
+        return "Unknown";
+    }
+}
+
+/*************************************************************************************************/
+NetworkSignalStrength NetworkInterface::rssiToSignalStrength(int rssi_dbm)
+{
+    if(rssi_dbm > -20)
+    {
+        return NETWORK_RSSI_EXCELLENT;
+    }
+    else if(rssi_dbm > -35)
+    {
+        return NETWORK_RSSI_VERY_GOOD;
+    }
+    else if(rssi_dbm > -50)
+    {
+        return NETWORK_RSSI_GOOD;
+    }
+    else if(rssi_dbm > -70)
+    {
+        return NETWORK_RSSI_POOR;
+    }
+    else
+    {
+        return NETWORK_RSSI_VERY_POOR;
+    }
+}
+
+
+typedef struct
+{
+    const char* key;
+    NetworkSecurity value;
+} NetworkSecurityTableEntry;
+
+static const NetworkSecurityTableEntry networkSecurityTable[] = {
+        {"Auto",       NETWORK_SECURITY_UNKNOWN},
+        {"Open",       NETWORK_SECURITY_OPEN},
+        {"Unknown",    NETWORK_SECURITY_UNKNOWN},
+        {"WEP",        NETWORK_SECURITY_WEP_PSK},
+        {"WPA-AES",    NETWORK_SECURITY_WPA_AES_PSK},
+        {"WPA-TKIP",   NETWORK_SECURITY_WPA_TKIP_PSK},
+        {"WPA2-AES",   NETWORK_SECURITY_WPA2_AES_PSK},
+        {"WPA2-Mixed", NETWORK_SECURITY_WPA2_MIXED_PSK},
+        {"WPA2-TKIP",  NETWORK_SECURITY_WPA2_TKIP_PSK},
+};
+
+
+/*************************************************************************************************/
+NetworkSecurity NetworkInterface::strToNetworkSecurity(const char *str)
+{
+    const NetworkSecurityTableEntry *end = &networkSecurityTable[ARRAY_COUNT(networkSecurityTable)];
+
+    for(const NetworkSecurityTableEntry *e = networkSecurityTable; e < end; ++e)
+    {
+        if(StringUtil::strcasecmp(e->key, str) == 0)
+        {
+            return e->value;
+        }
+    }
+    return NETWORK_SECURITY_UNKNOWN;
+}
+
+/*************************************************************************************************/
+const char* NetworkInterface::networkSecurityToStr(NetworkSecurity security)
+{
+    const NetworkSecurityTableEntry *end = &networkSecurityTable[ARRAY_COUNT(networkSecurityTable)];
+
+    for(const NetworkSecurityTableEntry *e = networkSecurityTable; e < end; ++e)
+    {
+        if(e->value == security)
+        {
+            return e->key;
+        }
+    }
+    return "Unknown";
+}
+
+/*************************************************************************************************/
+bool NetworkInterface::strToSsid(const char *str, Ssid *ssid)
+{
+#define ESCAPE_CHARACTER_DELIMITER '\\'
+#define HEX_ESCAPE_CHARACTER 'x'
+    int c;
+    uint8_t *ssidPtr = ssid->val;
+    uint32_t ssidLen = 0;
+
+    while((c = (int)(*str++)) != 0)
+    {
+        if(c == ESCAPE_CHARACTER_DELIMITER)
+        {
+            if(*str == HEX_ESCAPE_CHARACTER)
+            {
+                c = StringUtil::hexToInt(str+1);
+                if(c == -1)
+                    return false;
+                str += 3;
+            }
+            else
+            {
+                return false;
+            }
+        }
+        if(ssidLen >= sizeof(ssid->val))
+            return false;
+        ++ssidLen;
+        *ssidPtr++ = (uint8_t)c;
+    }
+
+    ssid->len = ssidLen;
+
+    return true;
+}
+
+/*************************************************************************************************/
+const char* NetworkInterface::ssidToStr(const Ssid *ssid, char *ssidStrBuffer)
+{
+    SET_STR_BUFFER(ssidStrBuffer, sizeof(SsidStrBuffer));
+    const char *src = (const char*)ssid->val;
+    int len = ssid->len;
+    char *buf = ptr;
+
+    while(len--)
+    {
+        if(*src >= 0x20 && *src <= 0x7E)
+        {
+            *ptr++ = *src;
+        }
+        else
+        {
+            ptr += sprintf(ptr, "\\x%02X", (*src) & 0xff);
+        }
+        ++src;
+    }
+    *ptr = 0;
+    return buf;
+}
+
+/*************************************************************************************************/
+bool NetworkInterface::strToMacAddress(const char *str, MacAddress *macAddress)
+{
+    const char* strPtr = str;
+    uint8_t *macPtr = (uint8_t*)macAddress->octet;
+
+    for(int count = 0; count < 6; ++count)
+    {
+        if(count < 5)
+        {
+            const char *idx = strchr(strPtr, ':');
+            if(idx == NULL)
+            {
+                return false;
+            }
+        }
+        int num = StringUtil::hexToInt(strPtr);
+        if(num == -1)
+        {
+            return false;
+        }
+        *macPtr++ = (uint8_t)num;
+        strPtr += 3;
+    }
+
+    return true;
+}
+
+/*************************************************************************************************/
+const char* NetworkInterface::macAddressToStr(const MacAddress *macAddress, char *macStrBuffer)
+{
+    SET_STR_BUFFER(macStrBuffer, sizeof(MacAddressStrBuffer));
+    const uint8_t *mac = macAddress->octet;
+
+    sprintf(ptr, "%02X:%02X:%02X:%02X:%02X:%02X",
+            (unsigned int)mac[0],
+            (unsigned int)mac[1],
+            (unsigned int)mac[2],
+            (unsigned int)mac[3],
+            (unsigned int)mac[4],
+            (unsigned int)mac[5]);
+
+    return ptr;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/NetworkJoin.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,251 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#include "Wiconnect.h"
+#include "internal/common.h"
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::join(const char* ssid, const char *password, const Callback &completeHandler_)
+{
+    WiconnectResult result = WICONNECT_ERROR;
+
+    enum
+    {
+        FS_SET_SSID,
+        FS_SET_PASSWORD,
+        FS_NETWORK_UP,
+        FS_GET_STATUS
+    };
+
+    CHECK_CALLBACK_AVAILABLE(completeHandler_);
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(wiconnect->internalProcessingState == FS_SET_SSID)
+    {
+        if(ssid == NULL ||
+           WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("set wlan.ssid %s", ssid)))
+        {
+            wiconnect->internalProcessingState = FS_SET_PASSWORD;
+        }
+    }
+
+    if(wiconnect->internalProcessingState == FS_SET_PASSWORD)
+    {
+        if(password == NULL || *password == 0 ||
+           WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("set wlan.passkey %s", password)))
+        {
+            wiconnect->internalProcessingState = FS_NETWORK_UP;
+        }
+    }
+
+    if(wiconnect->internalProcessingState == FS_NETWORK_UP)
+    {
+        if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("network_up")))
+        {
+            if(!completeHandler_.isValid())
+            {
+                wiconnect->internalProcessingState = FS_GET_STATUS;
+            }
+#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+            else
+            {
+                monitorTimer.stop();
+                completeHandler = completeHandler_;
+                monitorTimer.start(this, &NetworkInterface::joinStatusMonitor, 1000);
+            }
+#endif
+        }
+    }
+
+    if(wiconnect->internalProcessingState == FS_GET_STATUS)
+    {
+#define MAX_JOIN_TIME 30000
+        TimeoutTimer timeout;
+
+        status_loop:
+        if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("get wlan.join.result")))
+        {
+            int32_t status;
+            if(!WICONNECT_FAILED(result, wiconnect->responseToInt32(&status)))
+            {
+                if((NetworkJoinResult)status == NETWORK_JOIN_RESULT_JOINING)
+                {
+                    if(timeout.timedOut(MAX_JOIN_TIME))
+                    {
+                        result = WICONNECT_TIMEOUT;
+                    }
+                    else if(!wiconnect->nonBlocking)
+                    {
+                        goto status_loop;
+                    }
+                    else
+                    {
+                        result = WICONNECT_PROCESSING;
+                    }
+                }
+                else
+                {
+                    result = ((NetworkJoinResult)status == NETWORK_JOIN_RESULT_SUCCESS) ? WICONNECT_SUCCESS : WICONNECT_NOT_CONNECTED;
+                }
+            }
+        }
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::leave()
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+    monitorTimer.stop();
+#endif
+    result = wiconnect->sendCommand("network_down");
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::getNetworkStatus(NetworkStatus *statusPtr)
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("get network.status")))
+    {
+        int32_t status;
+        if(!WICONNECT_FAILED(result, wiconnect->responseToInt32(&status)))
+        {
+            if(status != NETWORK_STATUS_DOWN)
+            {
+#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+                monitorTimer.stop();
+#endif
+            }
+            *statusPtr = (NetworkStatus)status;
+        }
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::getNetworkJoinResult(NetworkJoinResult *joinResultPtr)
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("get wlan.join.result")))
+    {
+        int32_t status;
+        if(!WICONNECT_FAILED(result, wiconnect->responseToInt32(&status)))
+        {
+            if(status != NETWORK_JOIN_RESULT_JOINING)
+            {
+#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+                monitorTimer.stop();
+#endif
+            }
+            *joinResultPtr = (NetworkJoinResult)status;
+        }
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+
+
+/*************************************************************************************************/
+// this is called every 1s by the monitorTimer
+void NetworkInterface::joinStatusMonitor()
+{
+    static char responseBuffer[4];
+    static uint8_t cmdBuffer[sizeof(QueuedCommand)];
+    QueuedCommand *cmd = (QueuedCommand*)cmdBuffer;
+
+    monitorTimer.stop();
+
+   *cmd = QueuedCommand(sizeof(responseBuffer), responseBuffer, "get wlan.join.result");
+
+    wiconnect->enqueueCommand(cmd, Callback(this, &NetworkInterface::joinStatusCheckCallback));
+}
+
+/*************************************************************************************************/
+// this is called on the completion of the 'get'wlan.join.result' command above
+void NetworkInterface::joinStatusCheckCallback(WiconnectResult result, void *arg1, void *arg2)
+{
+    bool isComplete = false;
+    NetworkJoinResult joinResult = NETWORK_JOIN_RESULT_NONE;
+
+    QueuedCommand *cmd = (QueuedCommand*)arg1;
+
+    if(result == WICONNECT_SUCCESS)
+    {
+        int32_t status;
+        if(!StringUtil::strToInt32(cmd->responseBuffer, &status))
+        {
+            result = WICONNECT_RESPONSE_PARSE_ERROR;
+        }
+        else if((NetworkJoinResult)status != NETWORK_JOIN_RESULT_JOINING)
+        {
+            isComplete = true;
+            joinResult = (NetworkJoinResult)status;
+            result = (joinResult == NETWORK_JOIN_RESULT_SUCCESS) ? WICONNECT_SUCCESS : WICONNECT_NOT_CONNECTED;
+        }
+    }
+
+    if(isComplete || result != WICONNECT_SUCCESS)
+    {
+        completeHandler.call(result, (void*)joinResult, NULL);
+    }
+    else
+    {
+        monitorTimer.start(this, &NetworkInterface::joinStatusMonitor, 1000);
+    }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/NetworkScan.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,161 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#include "Wiconnect.h"
+#include "internal/common.h"
+
+
+#define SCAN_TIMEOUT 15000
+
+
+
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::scan(ScanResultList &resultList, const uint8_t *channelList, const char* ssid)
+{
+    WiconnectResult result;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+
+    if(WICONNECT_IS_IDLE())
+    {
+#define SCAN_CMD "scan -v "
+        char *cmdBufferPtr = cmdBuffer + sizeof(SCAN_CMD)-1;
+
+        strcpy(cmdBuffer, SCAN_CMD);
+
+        if(channelList != NULL)
+        {
+            for(const uint8_t *ch = (const uint8_t *)channelList; *ch != 0; ++ch)
+            {
+                cmdBufferPtr += sprintf(cmdBufferPtr, "%d,", *ch);
+            }
+            *(cmdBufferPtr-1) = ' ';
+        }
+        else
+        {
+            strcat(cmdBufferPtr, "all ");
+            cmdBufferPtr += 4;
+        }
+
+        if(ssid != NULL)
+        {
+            strcpy(cmdBufferPtr, ssid);
+        }
+
+        resultList.reset();
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    //if(!completeHandler_.isValid())
+    {
+        if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand(SCAN_TIMEOUT, cmdBuffer)))
+        {
+            result = processScanResults(wiconnect->internalBuffer, resultList);
+        }
+    }
+//#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+//    else
+//    {
+//        QueuedCommand *cmd = new QueuedCommand(NULL, 4096, SCAN_TIMEOUT, cmdBuffer);
+//        cmd->userData = (void*)resultList;
+//        completeHandler = completeHandler_;
+//        if(WICONNECT_FAILED(result, wiconnect->enqueueCommand(cmd, Callback(this, &NetworkInterface::scanCompleteCallback))))
+//        {
+//            delete cmd;
+//        }
+//        else
+//        {
+//            result = WICONNECT_PROCESSING;
+//        }
+//    }
+//#endif
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+
+
+
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::processScanResults(char *resultStr, ScanResultList &resultList)
+{
+    WiconnectResult result = WICONNECT_SUCCESS;
+    char *line, *savedLine;
+
+    for(savedLine = resultStr; (line = StringUtil::strtok_r(savedLine, "\r\n", &savedLine)) != NULL;)
+    {
+        char *toks[9], *savedTok;
+
+        if(*line != '#')
+        {
+            continue;
+        }
+        savedTok = line + 2;
+
+        for(int i = 0; i < 8 && (toks[i] = StringUtil::strtok_r(savedTok, " ", &savedTok)) != NULL; ++i)
+        {
+            if(toks[i] == NULL)
+            {
+                result = WICONNECT_RESPONSE_PARSE_ERROR;
+                goto exit;
+            }
+        }
+
+        if(WICONNECT_FAILED(result, resultList.add(toks[1], toks[2], toks[3], toks[4], toks[5], savedTok)))
+        {
+            goto exit;
+        }
+    }
+
+    exit:
+    return result;
+}
+
+//#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+//
+/*************************************************************************************************/
+//void NetworkInterface::scanCompleteCallback(WiconnectResult result, void *arg1, void *arg2)
+//{
+//    QueuedCommand *cmd = (QueuedCommand*)arg1;
+//    ScanResultList *listPtr = (ScanResultList*)cmd->userData;
+//
+//    if(result == WICONNECT_SUCCESS)
+//    {
+//        result = processScanResults(cmd->responseBuffer, listPtr);
+//    }
+//    delete cmd;
+//
+//    completeHandler.call(result, listPtr, NULL);
+//}
+//
+//#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/NetworkSoftAp.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,49 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#include "Wiconnect.h"
+
+
+
+///*************************************************************************************************/
+//WiconnectResult NetworkInterface::startSoftAp(const char* ssid, const char *password, WiconnectAsyncCallback *clientConnected)
+//{
+//    return WICONNECT_UNSUPPORTED;
+//}
+//
+///*************************************************************************************************/
+//WiconnectResult NetworkInterface::stopSoftAp()
+//{
+//    return WICONNECT_UNSUPPORTED;
+//}
+//
+///*************************************************************************************************/
+//WiconnectResult NetworkInterface::getSoftApClientList()
+//{
+//    return WICONNECT_UNSUPPORTED;
+//}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/NetworkWebSetup.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,181 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#include "Wiconnect.h"
+#include "internal/common.h"
+
+
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::startWebSetup(const char *ssid, const char *password, const Callback &completeHandler_)
+{
+    WiconnectResult result = WICONNECT_ERROR;;
+
+    enum
+    {
+        FS_SET_SSID,
+        FS_SET_PASSWORD,
+        FS_NETWORK_UP
+    };
+
+    CHECK_CALLBACK_AVAILABLE(completeHandler_);
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(wiconnect->internalProcessingState == FS_SET_SSID)
+    {
+        if(ssid == NULL ||
+           WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("set setup.web.ssid %s", ssid)))
+        {
+            wiconnect->internalProcessingState = FS_SET_PASSWORD;
+        }
+    }
+
+    if(wiconnect->internalProcessingState == FS_SET_PASSWORD)
+    {
+        if(password == NULL ||
+           WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("set setup.web.passkey %s", password)))
+        {
+            wiconnect->internalProcessingState = FS_NETWORK_UP;
+        }
+    }
+
+    if(wiconnect->internalProcessingState == FS_NETWORK_UP)
+    {
+        if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("setup web")))
+        {
+#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+            if(completeHandler_.isValid())
+            {
+#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+                monitorTimer.stop();
+#endif
+                completeHandler = completeHandler_;
+                monitorTimer.start(this, &NetworkInterface::webSetupStatusMonitor, 1000);
+            }
+#endif
+        }
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::stopWebSetup()
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    #ifdef WICONNECT_ASYNC_TIMER_ENABLED
+        monitorTimer.stop();
+    #endif
+    result = wiconnect->sendCommand("setup stop");
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+
+/*************************************************************************************************/
+WiconnectResult NetworkInterface::isWebSetupRunning(bool *isRunningPtr)
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("setup status")))
+    {
+        int32_t status;
+        if(!WICONNECT_FAILED(result, wiconnect->responseToInt32(&status)))
+        {
+            if(status)
+            {
+#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+                monitorTimer.stop();
+#endif
+            }
+            *isRunningPtr = (bool)status;
+        }
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+
+#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+
+/*************************************************************************************************/
+void NetworkInterface::webSetupStatusMonitor()
+{
+    static char responseBuffer[4];
+    static uint8_t cmdBuffer[sizeof(QueuedCommand)];
+    QueuedCommand *cmd = (QueuedCommand*)cmdBuffer;
+
+    monitorTimer.stop();
+
+    *cmd = QueuedCommand(sizeof(responseBuffer), responseBuffer, "setup status");
+
+    wiconnect->enqueueCommand(cmd, Callback(this, &NetworkInterface::webSetupStatusCheckCallback));
+}
+
+/*************************************************************************************************/
+void NetworkInterface::webSetupStatusCheckCallback(WiconnectResult result, void *arg1, void *arg2)
+{
+    bool isComplete = true;
+
+    QueuedCommand *cmd = (QueuedCommand*)arg1;
+
+    if(result == WICONNECT_SUCCESS)
+    {
+        int32_t status;
+        if(!StringUtil::strToInt32(cmd->responseBuffer, &status))
+        {
+            result = WICONNECT_RESPONSE_PARSE_ERROR;
+        }
+        else if(status > 0)
+        {
+            isComplete = false;
+        }
+    }
+
+    if(isComplete)
+    {
+        completeHandler.call(result, NULL, NULL);
+    }
+    else
+    {
+        monitorTimer.start(this, &NetworkInterface::webSetupStatusMonitor, 1000);
+    }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PeriodicTimer.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,65 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+
+#include "Wiconnect.h"
+#include "internal/common.h"
+
+#include "Ticker.h"
+
+
+/*************************************************************************************************/
+PeriodicTimer::PeriodicTimer()
+{
+    running = false;
+}
+
+/*************************************************************************************************/
+template<typename T>
+void PeriodicTimer::start(T* tptr, void (T::*mptr)(void), int timeoutMs)
+{
+    attach_us(tptr, mptr, timeoutMs*1000);
+    running = true;
+}
+template void PeriodicTimer::start<Wiconnect>(Wiconnect* tptr, void (Wiconnect::*mptr)(void), int timeoutMs);
+template void PeriodicTimer::start<NetworkInterface>(NetworkInterface* tptr, void (NetworkInterface::*mptr)(void), int timeoutMs);
+template void PeriodicTimer::start<SocketInterface>(SocketInterface* tptr, void (SocketInterface::*mptr)(void), int timeoutMs);
+template void PeriodicTimer::start<FileInterface>(FileInterface* tptr, void (FileInterface::*mptr)(void), int timeoutMs);
+
+/*************************************************************************************************/
+void PeriodicTimer::stop(void)
+{
+    detach();
+    running = false;
+}
+
+/*************************************************************************************************/
+bool PeriodicTimer::isRunning()
+{
+    return running;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PinIrqHandler.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,57 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+
+
+#include "Wiconnect.h"
+#include "api/types/PinIrqHandler.h"
+
+
+
+/*************************************************************************************************/
+PinIrqHandler::PinIrqHandler(PinName irqPin_, const Callback &callback_) : InterruptIn(irqPin_)
+{
+    irqPin = irqPin_;
+    callback = callback_;
+    mode(PullDown);
+    rise(this, &PinIrqHandler::irqHandler);
+    enable_irq();
+}
+
+/*************************************************************************************************/
+PinIrqHandler::~PinIrqHandler()
+{
+    disable_irq();
+}
+
+
+/*************************************************************************************************/
+void PinIrqHandler::irqHandler()
+{
+    callback.call(WICONNECT_SUCCESS, (void*)irqPin, NULL);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProcessCommand.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,356 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+
+#include "internal/CommandCommon.h"
+
+
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::checkCurrentCommand()
+{
+    WiconnectResult result;
+
+    start:
+    CHECK_INITIALIZED();
+    if(!commandExecuting)
+    {
+        return WICONNECT_IDLE;
+    }
+    CommandContext *context = (CommandContext*)commandContext;
+
+    if(context->commandLen > 0)
+    {
+        const TimerTimeout timeout = context->nonBlocking ? 0 : timeoutTimer.remainingMs(context->timeoutMs);
+        const int bytesToWrite = context->commandLen;
+        const int bytesWritten = serial.write(context->commandPtr, bytesToWrite, timeout);
+        context->commandPtr += bytesWritten;
+        context->commandLen -= bytesWritten;
+        if(bytesToWrite != bytesWritten)
+        {
+            if(timeoutTimer.timedOut(context->timeoutMs))
+            {
+                issueCommandCallback(WICONNECT_TIMEOUT);
+                return WICONNECT_TIMEOUT;
+            }
+            else
+            {
+                return WICONNECT_PROCESSING;
+            }
+        }
+    }
+
+    while(context->reader.isValid())
+    {
+        if(context->bytesToWrite == 0)
+        {
+            context->responseBufferPtr = context->responseBuffer;
+            if(WICONNECT_FAILED(result, context->reader.call(context->user, context->responseBuffer, context->responseBufferLen, &context->bytesToWrite)))
+            {
+                issueCommandCallback(result);
+                return result;
+            }
+            else if(context->bytesToWrite == EOF)
+            {
+                context->reader.setInvalid();
+                context->bytesToWrite = 0;
+                context->responseBufferPtr = context->responseBuffer;
+                break;
+            }
+            else
+            {
+                timeoutTimer.reset();
+            }
+        }
+        if(context->bytesToWrite > 0)
+        {
+            const TimerTimeout timeout = context->nonBlocking ? 0 : timeoutTimer.remainingMs(context->timeoutMs);
+            const int bytesToWrite = context->bytesToWrite;
+            const int bytesWritten = serial.write(context->responseBufferPtr, bytesToWrite, timeout);
+            context->responseBufferPtr += bytesWritten;
+            context->bytesToWrite -= bytesWritten;
+            if(bytesToWrite != bytesWritten)
+            {
+                if(timeoutTimer.timedOut(context->timeoutMs))
+                {
+                    issueCommandCallback(WICONNECT_TIMEOUT);
+                    return WICONNECT_TIMEOUT;
+                }
+                else
+                {
+                    return WICONNECT_PROCESSING;
+                }
+            }
+        }
+    }
+
+    result = receiveResponse();
+    if(result == WICONNECT_PROCESSING && !context->nonBlocking)
+    {
+        goto start;
+    }
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::receiveResponse()
+{
+loop:
+    WiconnectResult result = receivePacket();
+
+    if(result == WICONNECT_PROCESSING)
+    {
+    }
+    else if(result == WICONNECT_SUCCESS)
+    {
+        CommandHeader *header = (CommandHeader*)commandHeaderBuffer;
+        CommandContext *context = (CommandContext*)commandContext;
+
+        // TODO: need to notify safemode
+
+        if(header->response_type == WICONNECT_CMD_TYPE_REPLY || header->response_type == WICONNECT_CMD_TYPE_SAFEMODE)
+        {
+            if(header->response_code != WICONNECT_CMD_SUCCESS)
+            {
+                DEBUG_CMD_ERROR(header->response_code);
+                flush();
+                issueCommandCallback(WICONNECT_CMD_RESPONSE_ERROR);
+                return WICONNECT_CMD_RESPONSE_ERROR;
+            }
+            else if(header->response_len > 0)
+            {
+                DEBUG_CMD_RESPONSE(context->responseBuffer);
+
+                if(header->response_len < (uint16_t)context->responseBufferLen)
+                {
+                    context->responseBuffer[header->response_len] = 0;
+                }
+            }
+            else
+            {
+                *context->responseBuffer = 0;
+            }
+
+            issueCommandCallback(WICONNECT_SUCCESS);
+
+            return WICONNECT_SUCCESS;
+        }
+        else
+        {
+            DEBUG_CMD_LOG(context->responseBuffer);
+            RESET_CMD_HEADER(header);
+            context->responseBufferPtr = context->responseBuffer;
+            goto loop;
+        }
+    }
+    else
+    {
+        issueCommandCallback(result);
+    }
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::receivePacket()
+{
+    CommandHeader *header = (CommandHeader*)commandHeaderBuffer;
+    CommandContext *context = (CommandContext*)commandContext;
+    if(header->bytes_remaining > 0)
+    {
+        uint16_t bytesReceived;
+        static uint8_t buffer[WICONNECT_HEADER_LENGTH];
+
+        while(header->bytes_remaining > 0)
+        {
+            const TimerTimeout timeout = context->nonBlocking ? 0 : timeoutTimer.remainingMs(context->timeoutMs);
+            bytesReceived = serial.read((char*)buffer, header->bytes_remaining, timeout);
+            if(bytesReceived == 0)
+            {
+                return timeoutTimer.timedOut(context->timeoutMs) ? WICONNECT_TIMEOUT : WICONNECT_PROCESSING;
+            }
+
+            for(uint8_t *ptr = buffer; bytesReceived > 0; ++ptr)
+            {
+                if(header->response_type == WICONNECT_CMD_TYPE_NULL)
+                {
+                    if( *ptr == WICONNECT_CMD_TYPE_REPLY ||
+                        *ptr == WICONNECT_CMD_TYPE_LOG ||
+                        *ptr == WICONNECT_CMD_TYPE_SAFEMODE)
+                    {
+                        header->response_type = (ResponseType)*ptr;
+                        -- header->bytes_remaining;
+                    }
+                    --bytesReceived;
+                }
+                else if(header->response_code == WICONNECT_CMD_CODE_NULL)
+                {
+                    if(*ptr >= '0' && *ptr <= '7')
+                    {
+                        header->response_code = (ResponseCode)(*ptr - '0' + 1);
+                        --header->bytes_remaining;
+                        header->len_buffer_ptr = header->len_buffer;
+                    }
+                    else
+                    {
+                        RESET_CMD_HEADER(header);
+                    }
+                    --bytesReceived;
+                }
+                else if(header->bytes_remaining > 2)
+                {
+                    uint8_t len_chars = MIN((int)bytesReceived, (int)(header->bytes_remaining-2));
+                    header->bytes_remaining -= len_chars;
+                    bytesReceived -= len_chars;
+                    while(len_chars-- > 0)
+                    {
+                        *header->len_buffer_ptr++ = *ptr++;
+                    }
+                    --ptr; // need to decrement since the for loop increments
+                    if(header->bytes_remaining == 2)
+                    {
+                        uint32_t packetLen;
+                        *header->len_buffer_ptr = 0;
+                        if(!StringUtil::strToUint32((const char*)header->len_buffer, &packetLen))
+                        {
+                            RESET_CMD_HEADER(header);
+                        }
+                        else
+                        {
+                            if(packetLen > 0)
+                            {
+                                if(packetLen <= 2)
+                                {
+                                    return WICONNECT_CMD_RESPONSE_ERROR;
+                                }
+                                packetLen -= 2;
+                            }
+                            if((int)packetLen > context->responseBufferLen)
+                            {
+                                DEBUG_ERROR("Packet larger than response buffer: %d > %d", packetLen, context->responseBufferLen);
+                                return WICONNECT_OVERFLOW;
+                            }
+                            header->response_len = (uint16_t)packetLen;
+                            context->bytesToRead = packetLen;
+                        }
+                    }
+                }
+                else if(header->bytes_remaining == 2)
+                {
+                    --bytesReceived;
+                    if(*ptr == '\r')
+                    {
+                        header->bytes_remaining = 1;
+                    }
+                    else
+                    {
+                        RESET_CMD_HEADER(header);
+                    }
+                }
+                else
+                {
+                    --bytesReceived;
+                    if(*ptr == '\n')
+                    {
+                        header->bytes_remaining = 0;
+                        break;
+                    }
+                    else
+                    {
+                        RESET_CMD_HEADER(header);
+                    }
+                }
+            }
+        }
+    }
+
+    while(context->bytesToRead > 0)
+    {
+        const TimerTimeout timeout = context->nonBlocking ? 0 : timeoutTimer.remainingMs(context->timeoutMs);
+        const int bytesToRead = context->bytesToRead;
+        const int bytesReceived = serial.read(context->responseBufferPtr, bytesToRead, timeout);
+        context->responseBufferPtr += bytesReceived;
+        context->bytesToRead -= bytesReceived;
+
+        if(bytesReceived != bytesToRead)
+        {
+            return timeoutTimer.timedOut(context->timeoutMs) ? WICONNECT_TIMEOUT : WICONNECT_PROCESSING;
+        }
+        else if(context->bytesToRead == 0)
+        {
+            char buf[2];
+            int bytesRemaining = 2;
+            *context->responseBufferPtr = 0;
+
+            // read the trailing \r\n
+            while(bytesRemaining > 0)
+            {
+                const int bytesReceived = serial.read(buf, bytesRemaining, 0);
+                bytesRemaining -= bytesReceived;
+
+                if(bytesRemaining > 0 && timeoutTimer.timedOut(context->timeoutMs))
+                {
+                    return WICONNECT_TIMEOUT;
+                }
+            }
+        }
+    }
+
+    return (header->response_code != WICONNECT_CMD_CODE_NULL &&
+            header->response_type != WICONNECT_CMD_TYPE_NULL &&
+            context->bytesToRead == 0) ? WICONNECT_SUCCESS : WICONNECT_PROCESSING;
+}
+
+/*************************************************************************************************/
+void Wiconnect::issueCommandCallback(WiconnectResult result)
+{
+    CommandHeader *header = (CommandHeader*)commandHeaderBuffer;
+    CommandContext *context = (CommandContext*)commandContext;
+#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+    void *returnPtr = (currentQueuedCommand != NULL) ? (void*)currentQueuedCommand : (void*)context->responseBuffer;
+    currentQueuedCommand = NULL;
+    commandProcessorTimer.stop();
+#else
+    void *returnPtr = (void*)context->responseBuffer;
+#endif
+
+    context->callback.call(result, returnPtr, (void*)(uint32_t)header->response_len);
+    commandExecuting = false;
+
+#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+    processNextQueuedCommand();
+#endif
+}
+
+/*************************************************************************************************/
+void Wiconnect::stopCurrentCommand()
+{
+    internalProcessingState = 0;
+    issueCommandCallback(WICONNECT_ABORTED);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QueuedCommand.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,196 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+
+#include "Wiconnect.h"
+#include "internal/common.h"
+
+#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+
+/*************************************************************************************************/
+QueuedCommand::QueuedCommand(int responseBufferLen_, char *responseBuffer_, int timeoutMs_, const ReaderFunc &reader_, void *user_, const char *cmd_, va_list vaList)
+{
+    initialize(responseBufferLen_, responseBuffer_, timeoutMs_, reader_, user_, cmd_, vaList);
+}
+
+/*************************************************************************************************/
+QueuedCommand::QueuedCommand(int responseBufferLen_, char* responseBuffer_, int timeoutMs_, const char *cmd_, ...)
+{
+    va_list args;
+    va_start(args, cmd_);
+    initialize(responseBufferLen_, responseBuffer_, timeoutMs_, ReaderFunc(), NULL, cmd_, args);
+    va_end(args);
+}
+
+/*************************************************************************************************/
+QueuedCommand::QueuedCommand(int responseBufferLen_, char *responseBuffer_, const char *cmd_, ...)
+{
+    va_list args;
+    va_start(args, cmd_);
+    initialize(responseBufferLen_, responseBuffer_, WICONNECT_DEFAULT_TIMEOUT, ReaderFunc(), NULL, cmd_, args);
+    va_end(args);
+}
+
+/*************************************************************************************************/
+QueuedCommand::QueuedCommand(int timeoutMs_, const char *cmd_, ...)
+{
+    va_list args;
+    va_start(args, cmd_);
+    initialize(0, NULL, timeoutMs_, ReaderFunc(), NULL, cmd_, args);
+    va_end(args);
+}
+
+/*************************************************************************************************/
+QueuedCommand::QueuedCommand(const char *cmd_, ...)
+{
+    va_list args;
+    va_start(args, cmd_);
+    initialize(0, NULL, WICONNECT_DEFAULT_TIMEOUT, ReaderFunc(), NULL, cmd_, args);
+    va_end(args);
+}
+
+/*************************************************************************************************/
+QueuedCommand::~QueuedCommand()
+{
+#ifdef WICONNECT_ENABLE_MALLOC
+    if(allocatedBuffer)
+    {
+        Wiconnect::getInstance()->_free(responseBuffer);
+    }
+#endif
+}
+
+/*************************************************************************************************/
+char *QueuedCommand::getResponseBuffer()
+{
+    return responseBuffer;
+}
+/*************************************************************************************************/
+int QueuedCommand::getResponseBufferLen()
+{
+    return responseBufferLen;
+}
+/*************************************************************************************************/
+int QueuedCommand::getTimeoutMs()
+{
+    return timeoutMs;
+}
+/*************************************************************************************************/
+ReaderFunc QueuedCommand::getReader()
+{
+    return reader;
+}
+/*************************************************************************************************/
+void * QueuedCommand::getReaderUserData()
+{
+    return user;
+}
+/*************************************************************************************************/
+char* QueuedCommand::getCommand()
+{
+    return command;
+}
+/*************************************************************************************************/
+Callback QueuedCommand::getCompletedCallback()
+{
+    return completeCallback;
+}
+/*************************************************************************************************/
+void QueuedCommand::setCompletedCallback(const Callback &cb)
+{
+    completeCallback = cb;
+}
+
+/*************************************************************************************************/
+QueuedCommand& QueuedCommand::operator=( const QueuedCommand& other )
+{
+    responseBuffer = other.responseBuffer;
+    responseBufferLen = other.responseBufferLen;
+    timeoutMs = other.timeoutMs;
+    reader = other.reader;
+    user = other.user;
+    completeCallback = other.completeCallback;
+    memcpy(command, other.command, sizeof(command));
+    return *this;
+}
+
+/*************************************************************************************************/
+void* QueuedCommand::operator new(size_t size)
+{
+    Wiconnect *wiconnect = Wiconnect::getInstance();
+    wiconnect_assert(wiconnect, "QueuedCommand:new malloc not defined", wiconnect->_malloc != NULL);
+    return Wiconnect::getInstance()->_malloc(size);
+}
+
+/*************************************************************************************************/
+void QueuedCommand::operator delete(void* ptr)
+{
+    Wiconnect *wiconnect = Wiconnect::getInstance();
+    wiconnect_assert(wiconnect, "QueuedCommand:delete free not defined", wiconnect->_free != NULL);
+    Wiconnect::getInstance()->_free(ptr);
+}
+
+/*************************************************************************************************/
+void QueuedCommand::initialize(int responseBufferLen_, char *responseBuffer_, int timeoutMs_, const ReaderFunc &reader_, void *user_, const char *cmd_, va_list vaList)
+{
+    if(responseBufferLen_ > 0)
+    {
+#ifdef WICONNECT_ENABLE_MALLOC
+        Wiconnect *wiconnect = Wiconnect::getInstance();
+        allocatedBuffer = false;
+        if(responseBuffer_ == NULL)
+        {
+            wiconnect_assert(wiconnect, "QueuedCommand() malloc not defined", wiconnect->_malloc != NULL);
+            responseBuffer = (char*)wiconnect->_malloc(responseBufferLen_);
+            wiconnect_assert(wiconnect, "QueuedCommand() responseBuffer malloc failed", responseBuffer != NULL);
+            allocatedBuffer = true;
+        }
+        else
+#endif
+        {
+            wiconnect_assert(wiconnect, "QueuedCommand(), null buffer", responseBuffer_ != NULL);
+            responseBuffer = responseBuffer_;
+        }
+    }
+    responseBufferLen = responseBufferLen_;
+    timeoutMs = timeoutMs_;
+    reader = reader_;
+    user = user_;
+    userData = NULL;
+
+    if(cmd_ != NULL)
+    {
+        int len = vsnprintf(command, sizeof(command)-3, cmd_, vaList);
+        command[len++] = '\r';
+        command[len++] = '\n';
+        command[len] = 0;
+    }
+}
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ScanResult.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,186 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#include "Wiconnect.h"
+#include "api/types/ScanResult.h"
+#include "api/NetworkInterface.h"
+#include "internal/common.h"
+
+
+static inline bool floatToFixedPointInt(const char *str, uint32_t *res);
+
+
+
+/*************************************************************************************************/
+ScanResult::ScanResult()
+{
+    next = NULL;
+    previous = NULL;
+    channel = 0xff;
+    rssi = -9999;
+    rate = 0;
+    security = NETWORK_SECURITY_UNKNOWN;
+    memset(&mac, 0, (uint32_t)sizeof(mac));
+    memset(&ssid, 0, (uint32_t)sizeof(ssid));
+}
+
+/*************************************************************************************************/
+WiconnectResult ScanResult::init(const char *channelStr, const char *rssiStr, const char* macStr, const char *rateStr, const char *secStr, const char *ssidStr)
+{
+    intmax_t r;
+    if(!StringUtil::parseInt(channelStr, &r, 0, 15))
+    {
+        return WICONNECT_RESPONSE_PARSE_ERROR;
+    }
+    channel = (int)r;
+    if(!StringUtil::parseInt(rssiStr, &r, -200, 100))
+    {
+        return WICONNECT_RESPONSE_PARSE_ERROR;
+    }
+    rssi = (int)r;
+
+    if(!Wiconnect::strToMacAddress(macStr, &mac))
+    {
+        return WICONNECT_RESPONSE_PARSE_ERROR;
+    }
+
+    if(!floatToFixedPointInt(rateStr, &rate))
+    {
+        return WICONNECT_RESPONSE_PARSE_ERROR;
+    }
+    security = Wiconnect::strToNetworkSecurity(secStr);
+
+    if(!Wiconnect::strToSsid(ssidStr, &ssid))
+    {
+        return WICONNECT_RESPONSE_PARSE_ERROR;
+    }
+
+    return WICONNECT_SUCCESS;
+}
+
+#ifdef WICONNECT_ENABLE_MALLOC
+/*************************************************************************************************/
+void* ScanResult::operator new(size_t size)
+{
+    Wiconnect *wiconnect = Wiconnect::getInstance();
+    wiconnect_assert(wiconnect, "ScanResult:new, malloc not defined", wiconnect->_malloc != NULL);
+    return Wiconnect::getInstance()->_malloc(size);
+}
+
+/*************************************************************************************************/
+void ScanResult::operator delete(void* ptr)
+{
+    Wiconnect *wiconnect = Wiconnect::getInstance();
+    wiconnect_assert(wiconnect, "ScanResult:delete, free not defined", wiconnect->_free != NULL);
+    Wiconnect::getInstance()->_free(ptr);
+}
+#endif
+
+/*************************************************************************************************/
+uint8_t ScanResult::getChannel() const
+{
+    return channel;
+}
+/*************************************************************************************************/
+NetworkSignalStrength ScanResult::getSignalStrength() const
+{
+    return Wiconnect::rssiToSignalStrength(rssi);
+}
+/*************************************************************************************************/
+const MacAddress* ScanResult::getMacAddress() const
+{
+    return &mac;
+}
+/*************************************************************************************************/
+uint32_t ScanResult::getRate() const
+{
+    return rate;
+}
+/*************************************************************************************************/
+const char* ScanResult::getRateStr(char *buffer) const
+{
+    SET_STR_BUFFER(buffer, 16);
+    uint32_t i = rate / 10;
+    uint32_t f = rate % 10;
+    sprintf(ptr, "%u.%u", (unsigned int)i, (unsigned int)f);
+    return ptr;
+}
+/*************************************************************************************************/
+NetworkSecurity ScanResult::getSecurityType() const
+{
+    return security;
+}
+/*************************************************************************************************/
+const Ssid* ScanResult::getSsid() const
+{
+    return &ssid;
+}
+
+/*************************************************************************************************/
+const ScanResult* ScanResult::getNext() const
+{
+    return next;
+}
+
+/*************************************************************************************************/
+const ScanResult* ScanResult::getPrevious() const
+{
+    return previous;
+}
+
+
+/*************************************************************************************************/
+static inline bool floatToFixedPointInt(const char *str, uint32_t *res)
+{
+    intmax_t i;
+    intmax_t f = 0;
+    char buffer[32];
+
+    strcpy(buffer, str);
+
+    char* frac = strchr(buffer, '.');
+    if(frac != NULL)
+    {
+        *frac = 0;
+        ++frac;
+    }
+
+    if(!StringUtil::parseInt(buffer, &i, 0, 1000))
+    {
+        return false;
+    }
+    if(frac != NULL && !StringUtil::parseInt(frac, &f, 0, 9))
+    {
+        return false;
+    }
+
+    *res = (((uint32_t)i) * 10) + (uint32_t)f;
+
+    return true;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ScanResultList.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,159 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#include "Wiconnect.h"
+#include "api/types/ScanResult.h"
+#include "internal/common.h"
+
+
+/*************************************************************************************************/
+ScanResultList::ScanResultList(int bufferLen_, void *buffer_)
+{
+    Wiconnect *wiconnect = Wiconnect::getInstance();
+    wiconnect_assert(wiconnect, "ScanResultList(), bad buffer", (bufferLen_ == 0 && buffer_ == NULL) || (bufferLen_ != 0 && buffer_ != NULL));
+    buffer = (uint8_t*)buffer_;
+    bufferLen = bufferLen_;
+    reset();
+}
+
+/*************************************************************************************************/
+ScanResultList::~ScanResultList()
+{
+    reset();
+}
+
+/*************************************************************************************************/
+void ScanResultList::reset(void)
+{
+#ifdef WICONNECT_ENABLE_MALLOC
+    if(buffer == NULL)
+    {
+        ScanResult* result = listHead;
+        while(result != NULL)
+        {
+            ScanResult* tmp = result;
+            result = result->next;
+            delete tmp;
+        }
+    }
+#endif
+    listHead = listTail = NULL;
+    bufferPtr = buffer;
+    bufferRemaining = bufferLen;
+    count = 0;
+}
+
+
+/*************************************************************************************************/
+WiconnectResult ScanResultList::add(const char *channelStr, const char *rssiStr, const char* macStr, const char *rateStr, const char *secStr, const char *ssidStr)
+{
+    WiconnectResult result;
+    ScanResult *res;
+
+    if(buffer == NULL)
+    {
+#ifdef WICONNECT_ENABLE_MALLOC
+        res = new ScanResult();
+        if(res == NULL)
+#endif
+        {
+            return WICONNECT_NULL_BUFFER;
+        }
+    }
+    else
+    {
+        if(bufferRemaining < sizeof(ScanResult))
+        {
+            return WICONNECT_OVERFLOW;
+        }
+        res = (ScanResult*)bufferPtr;
+        memset(res, 0, sizeof(ScanResult));
+        bufferRemaining -= sizeof(ScanResult);
+        bufferPtr += sizeof(ScanResult);
+    }
+
+    if(WICONNECT_FAILED(result, res->init(channelStr, rssiStr, macStr, rateStr, secStr, ssidStr)))
+    {
+        if(buffer == NULL)
+        {
+            delete res;
+        }
+    }
+    else
+    {
+        if(listHead == NULL)
+        {
+            listHead = listTail = res;
+        }
+        else
+        {
+            res->previous = listTail;
+            listTail->next = res;
+            listTail = res;
+        }
+        ++count;
+    }
+
+    return result;
+}
+
+/*************************************************************************************************/
+const ScanResult* ScanResultList::getListHead() const
+{
+    return listHead;
+}
+
+/*************************************************************************************************/
+int ScanResultList::getCount() const
+{
+    return count;
+}
+
+/*************************************************************************************************/
+const ScanResult* ScanResultList::getResult(int i) const
+{
+    if(i >= count)
+        return NULL;
+
+    ScanResult* result = listHead;
+    while(i-- != 0)
+        result = result->next;
+
+    return result;
+}
+
+/*************************************************************************************************/
+const ScanResult* ScanResultList::operator [](int i) const
+{
+    return getResult(i);
+}
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SendCommand.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,209 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+
+#include "internal/CommandCommon.h"
+
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::sendCommand(const Callback &completeCallback, char *responseBuffer,
+                                       int responseBufferLen, TimerTimeout timeoutMs, const ReaderFunc &reader, void *user,
+                                       const char *cmd, va_list vaList)
+{
+    // preprocessor assertion
+    ct_assert(sizeof(commandContext) >=sizeof(CommandContext));
+    CHECK_INITIALIZED();
+    CHECK_NULL_BUFFER(responseBuffer);
+    if(commandExecuting)
+    {
+        return checkCurrentCommand();
+    }
+
+    CommandContext *context = (CommandContext*)commandContext;
+    CommandHeader *header = (CommandHeader*)commandHeaderBuffer;
+
+    int len = vsnprintf(commandFormatBuffer, sizeof(commandFormatBuffer)-3, cmd, vaList);
+
+    if(len > (int)(sizeof(commandFormatBuffer)-3))
+    {
+        DEBUG_ERROR("Command overflowed: %d > %d", len, sizeof(commandFormatBuffer)-3);
+        return WICONNECT_OVERFLOW;
+    }
+
+    commandFormatBuffer[len++] = '\r';
+    commandFormatBuffer[len++] = '\n';
+    commandFormatBuffer[len] = 0;
+
+    RESET_CMD_HEADER(header);
+
+    memset(context, 0, sizeof(CommandContext));
+    context->responseBuffer = responseBuffer;
+    context->responseBufferPtr = context->responseBuffer;
+    context->responseBufferLen = responseBufferLen;
+    context->commandLen = len;
+    context->commandPtr = commandFormatBuffer;
+    context->reader = reader;
+    context->user = user;
+    context->timeoutMs = timeoutMs;
+    context->callback = completeCallback;
+    context->nonBlocking = nonBlocking;
+
+    DEBUG_CMD_SEND(commandFormatBuffer);
+
+    commandExecuting = true;
+    flush(0);
+    timeoutTimer.reset();
+
+    return checkCurrentCommand();
+}
+
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs,
+                                       const ReaderFunc &reader, void *user, const char *cmd, va_list vaList)
+{
+    return sendCommand(Callback(), responseBuffer, responseBufferLen, timeoutMs, reader, user, cmd, vaList);
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen,  TimerTimeout timeoutMs,
+                                       const ReaderFunc &reader, void *user, const char *cmd, ...)
+{
+    WiconnectResult result;
+    va_list args;
+    va_start(args, cmd);
+    result = sendCommand(Callback(), responseBuffer, responseBufferLen, timeoutMs, reader, user, cmd, args);
+    va_end(args);
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::sendCommand(TimerTimeout timeoutMs, const ReaderFunc &reader, void *user, const char *cmd, ...)
+{
+    WiconnectResult result;
+    va_list args;
+    va_start(args, cmd);
+    result = sendCommand(Callback(), internalBuffer, internalBufferSize, timeoutMs, reader, user, cmd, args);
+    va_end(args);
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::sendCommand(const ReaderFunc &reader, void *user, const char *cmd, ...)
+{
+    WiconnectResult result;
+    va_list args;
+    va_start(args, cmd);
+    result = sendCommand(Callback(), internalBuffer, internalBufferSize, defaultTimeoutMs, reader, user, cmd, args);
+    va_end(args);
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen,  TimerTimeout timeoutMs, const char *cmd, ...)
+{
+    WiconnectResult result;
+    va_list args;
+    va_start(args, cmd);
+    result = sendCommand(Callback(), responseBuffer, responseBufferLen, timeoutMs, ReaderFunc(), NULL, cmd, args);
+    va_end(args);
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::sendCommand(const Callback &completeCallback, char *responseBuffer, int responseBufferLen, const char *cmd, ...)
+{
+    WiconnectResult result;
+    va_list args;
+    va_start(args, cmd);
+    result = sendCommand(completeCallback, responseBuffer, responseBufferLen, defaultTimeoutMs, ReaderFunc(), NULL, cmd, args);
+    va_end(args);
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen, const char *cmd, ...)
+{
+    WiconnectResult result;
+    va_list args;
+    va_start(args, cmd);
+    result = sendCommand(Callback(), responseBuffer, responseBufferLen, defaultTimeoutMs, ReaderFunc(), NULL, cmd, args);
+    va_end(args);
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::sendCommand(const Callback &completeCallback, const char *cmd, ...)
+{
+    WiconnectResult result;
+    va_list args;
+    va_start(args, cmd);
+    result = sendCommand(completeCallback, internalBuffer, internalBufferSize, defaultTimeoutMs, ReaderFunc(), NULL, cmd, args);
+    va_end(args);
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::sendCommand(const char *cmd, ...)
+{
+    WiconnectResult result;
+    va_list args;
+    va_start(args, cmd);
+    result = sendCommand(Callback(), internalBuffer, internalBufferSize, defaultTimeoutMs, ReaderFunc(), NULL, cmd, args);
+    va_end(args);
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::sendCommand(const Callback &completeCallback, TimerTimeout timeoutMs, const char *cmd, ...)
+{
+    WiconnectResult result;
+    va_list args;
+    va_start(args, cmd);
+    result = sendCommand(completeCallback, internalBuffer, internalBufferSize, timeoutMs, ReaderFunc(), NULL, cmd, args);
+    va_end(args);
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::sendCommand(TimerTimeout timeoutMs, const char *cmd, ...)
+{
+    WiconnectResult result;
+    va_list args;
+    va_start(args, cmd);
+    result = sendCommand(Callback(), internalBuffer, internalBufferSize, timeoutMs, ReaderFunc(), NULL, cmd, args);
+    va_end(args);
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::sendCommand(const char *cmd, va_list vaList)
+{
+    return sendCommand(Callback(), internalBuffer, internalBufferSize, defaultTimeoutMs, ReaderFunc(), NULL, cmd, vaList);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Socket.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,80 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence:
+ *
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ */
+
+
+#include "api/types/Socket/Socket.h"
+#include "common.h"
+
+
+
+
+/*************************************************************************************************/
+Socket::Socket() : _blocking(true), _timeout(1500)
+{
+}
+
+/*************************************************************************************************/
+Socket::Socket(int rxBufferLen, void *rxBuffer, int txBufferLen, void *txBuffer) :
+        _blocking(true), _timeout(1500), socket(rxBufferLen, rxBuffer, txBufferLen, txBuffer)
+{
+
+}
+
+/*************************************************************************************************/
+Socket::~Socket()
+{
+    close(true);
+}
+
+/*************************************************************************************************/
+void Socket::set_blocking(bool blocking, unsigned int timeout)
+{
+    _blocking = blocking;
+     _timeout = timeout;
+}
+
+/*************************************************************************************************/
+int Socket::set_option(int level, int optname, const void *optval, socklen_t optlen)
+{
+    return -1;
+}
+
+/*************************************************************************************************/
+int Socket::get_option(int level, int optname, void *optval, socklen_t *optlen)
+{
+    return -1;
+}
+
+/*************************************************************************************************/
+int Socket::close(bool shutdown)
+{
+    return (socket.close() == WICONNECT_SUCCESS) ? 0 : -1;
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SocketInterface.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,304 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+
+#include <string.h>
+#include "Wiconnect.h"
+#include "internal/common.h"
+#include "api/StringUtil.h"
+
+#ifdef WICONNECT_GPIO_IRQ_ENABLED
+#include "api/types/SocketIrqHandlerMap.h"
+#endif
+
+
+/*************************************************************************************************/
+SocketInterface::SocketInterface(Wiconnect *wiconnect_)
+{
+    wiconnect = wiconnect_;
+    serverConnectedClientList = 0;
+}
+
+/*************************************************************************************************/
+SocketInterface::~SocketInterface()
+{
+}
+
+/*************************************************************************************************/
+WiconnectResult SocketInterface::connect(WiconnectSocket &socket, SocketType type, const char *host, uint16_t remortPort, uint16_t localPort, const void *args GPIO_IRQ_ARG)
+{
+    WiconnectResult result;
+    int32_t handle;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+    if(WICONNECT_IS_IDLE())
+    {
+        char gpioOption[8] = "";
+
+#ifdef WICONNECT_GPIO_IRQ_ENABLED
+        if(irqPin != PIN_NC)
+        {
+            PinToGpioMapper mapper = wiconnect->pinToGpioMapper;
+            if(mapper == NULL)
+            {
+                return WICONNECT_PINNAME_TO_GPIO_MAPPER_NULL;
+            }
+            int8_t gpio = mapper(irqPin);
+            if(gpio == -1)
+            {
+                return WICONNECT_PINNAME_TO_GPIO_NO_MAPPING;
+            }
+            else if(!irqHandlers.pinIsRegistered(irqPin))
+            {
+                return WICONNECT_NOT_FOUND;
+            }
+
+            sprintf(gpioOption, "-g %d ", gpio);
+        }
+#endif
+
+        switch(type)
+        {
+        case SOCKET_TYPE_TCP:
+            sprintf(cmdBuffer, "tcpc %s%s %d", gpioOption, host, remortPort);
+            break;
+
+        case SOCKET_TYPE_UDP: {
+            char tmp[16];
+            sprintf(cmdBuffer, "udpc %s%s %d %s", gpioOption, host, remortPort,
+                                                (localPort != SOCKET_ANY_PORT) ? StringUtil::uint32ToStr(tmp, localPort) : "");
+        } break;
+
+        case SOCKET_TYPE_TLS:
+            sprintf(cmdBuffer, "tlsc %s%s %d %s", gpioOption, host, remortPort,
+                                                (args != NULL) ? (char*)args : "");
+            break;
+
+        case SOCKET_TYPE_HTTP: {
+            const HttpSocketArgs *httpArgs = (const HttpSocketArgs*)args;
+            switch(httpArgs->type)
+            {
+            case SOCKET_HTTP_GET:
+                sprintf(cmdBuffer, "http_get %s%s %s", httpArgs->openOnly ? "-o " : "",
+                                            host,
+                                            (httpArgs->certName != NULL) ? httpArgs->certName : "");
+                break;
+
+            case SOCKET_HTTP_HEAD:
+                sprintf(cmdBuffer, "http_head %s%s %s", httpArgs->openOnly ? "-o " : "",
+                                            host,
+                                            (httpArgs->certName != NULL) ? httpArgs->certName : "");
+                break;
+
+            case SOCKET_HTTP_POST:
+                sprintf(cmdBuffer, "http_post %s%s %s %s", httpArgs->openOnly ? "-o " : "",
+                                               host,
+                                               httpArgs->contextType,
+                                              (httpArgs->certName != NULL) ? httpArgs->certName : "");
+                break;
+
+            default:
+                return WICONNECT_BAD_ARG;
+            }
+
+        } break;
+        default:
+            return WICONNECT_BAD_ARG;
+        }
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand(cmdBuffer)))
+    {
+        if(!WICONNECT_FAILED(result, wiconnect->responseToInt32(&handle)))
+        {
+            socket.init(handle, type, host, remortPort, localPort);
+        }
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult SocketInterface::tcpConnect(WiconnectSocket &socket, const char *host, uint16_t remortPort GPIO_IRQ_ARG)
+{
+    return connect(socket, SOCKET_TYPE_TCP, host, remortPort, SOCKET_ANY_PORT, NULL GPIO_IRQ_PARAM);
+}
+
+/*************************************************************************************************/
+WiconnectResult SocketInterface::tlsConnect(WiconnectSocket &socket, const char *host, uint16_t remortPort, const char *certFilename GPIO_IRQ_ARG)
+{
+    return connect(socket, SOCKET_TYPE_TLS, host, remortPort, SOCKET_ANY_PORT, certFilename GPIO_IRQ_PARAM);
+}
+
+/*************************************************************************************************/
+WiconnectResult SocketInterface::udpConnect(WiconnectSocket &socket, const char *host, uint16_t remortPort, uint16_t localPort GPIO_IRQ_ARG)
+{
+    return connect(socket, SOCKET_TYPE_UDP, host, remortPort, localPort, NULL GPIO_IRQ_PARAM);
+}
+
+/*************************************************************************************************/
+WiconnectResult SocketInterface::httpConnect(WiconnectSocket &socket, const char *url, const HttpSocketArgs *args)
+{
+#ifdef WICONNECT_GPIO_IRQ_ENABLED
+#define IRQ_NC ,NC
+#else
+#define IRQ_NC
+#endif
+    return connect(socket, SOCKET_TYPE_HTTP, url, SOCKET_ANY_PORT, SOCKET_ANY_PORT, args IRQ_NC);
+}
+
+/*************************************************************************************************/
+WiconnectResult SocketInterface::httpGet(WiconnectSocket &socket, const char *url, bool openOnly, const char *certFilename)
+{
+    const HttpSocketArgs args =
+    {
+        NULL,
+        certFilename,
+        openOnly,
+        SOCKET_HTTP_GET
+    };
+    return httpConnect(socket, url, &args);
+}
+
+/*************************************************************************************************/
+WiconnectResult SocketInterface::httpPost(WiconnectSocket &socket, const char *url, const char *contextType, bool openOnly, const char *certFilename)
+{
+    const HttpSocketArgs args =
+    {
+        contextType,
+        certFilename,
+        openOnly,
+        SOCKET_HTTP_POST
+    };
+    return httpConnect(socket, url, &args);
+}
+
+/*************************************************************************************************/
+WiconnectResult SocketInterface::httpHead(WiconnectSocket &socket, const char *url, const char *certFilename)
+{
+    const HttpSocketArgs args =
+    {
+        NULL,
+        certFilename,
+        false,
+        SOCKET_HTTP_HEAD
+    };
+    return httpConnect(socket, url, &args);
+}
+
+/*************************************************************************************************/
+WiconnectResult SocketInterface::httpAddHeader(WiconnectSocket &socket, const char *key, const char *value)
+{
+    WiconnectResult result;
+    char *cmdBuffer = wiconnect->internalBuffer;
+
+    if(WICONNECT_IS_IDLE())
+    {
+        sprintf(cmdBuffer, "http_add_header %d %s %s", socket.getHandle(), key, value);
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand(cmdBuffer);
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult SocketInterface::httpGetStatus(WiconnectSocket &socket, uint32_t *statusCodePtr)
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand("http_read_status %d", socket.getHandle());
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult SocketInterface::closeAllSockets()
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand("close all");
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+
+#ifdef WICONNECT_GPIO_IRQ_ENABLED
+/*************************************************************************************************/
+WiconnectResult SocketInterface::registerSocketIrqHandler(Pin irqPin, const Callback &handler)
+{
+    PinToGpioMapper mapper = wiconnect->pinToGpioMapper;
+    if(irqHandlers.pinIsRegistered(irqPin))
+    {
+        return WICONNECT_DUPLICATE;
+    }
+    else  if(mapper == NULL)
+    {
+        return WICONNECT_PINNAME_TO_GPIO_MAPPER_NULL;
+    }
+    int8_t gpio = mapper(irqPin);
+    if(gpio == -1)
+    {
+        return WICONNECT_PINNAME_TO_GPIO_NO_MAPPING;
+    }
+
+    return irqHandlers.registerHandler(irqPin, handler);
+}
+
+/*************************************************************************************************/
+WiconnectResult SocketInterface::unregisterSocketIrqHandler(Pin irqPin)
+{
+    return irqHandlers.unregisterHandler(irqPin);
+}
+#endif
+
+/*************************************************************************************************/
+void SocketInterface::socketClosedCallback(const WiconnectSocket *socket)
+{
+    const uint32_t handleMask = (1 << socket->handle);
+    if(serverConnectedClientList & handleMask)
+    {
+        serverConnectedClientList &= ~handleMask;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TCPSocketConnection.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,141 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence:
+ *
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ */
+
+
+#include "api/types/Socket/TCPSocketConnection.h"
+#include "common.h"
+
+
+
+/*************************************************************************************************/
+TCPSocketConnection::TCPSocketConnection(int rxBufferLen, void *rxBuffer, int txBufferLen, void *txBuffer)
+: Socket(rxBufferLen, rxBuffer, txBufferLen, txBuffer)
+{
+}
+
+/*************************************************************************************************/
+int TCPSocketConnection::connect(const char* host, const int port)
+{
+    return (Wiconnect::getInstance()->tcpConnect(socket, host, (uint16_t)port) == WICONNECT_SUCCESS) ? 0 : -1;
+}
+
+/*************************************************************************************************/
+bool TCPSocketConnection::is_connected(void)
+{
+    return socket.isConnected();
+}
+
+/*************************************************************************************************/
+// currently there's no way to timeout writing data to WiConnect, so we just have to try and send it all.
+// NOTE: this WILL be fixed in the next version
+int TCPSocketConnection::send(char* data, int length)
+{
+    return send_all(data, length);
+}
+
+/*************************************************************************************************/
+// -1 if unsuccessful, else number of bytes written
+int TCPSocketConnection::send_all(char* data, int length)
+{
+    return (socket.write(data, length, true) == WICONNECT_SUCCESS) ? length : -1;
+}
+
+/*************************************************************************************************/
+int TCPSocketConnection::receive(char* data, int length)
+{
+    uint16_t bytesRead;
+
+    if (!_blocking)
+    {
+        if(socket.getRxBufferSize() == 0 || socket.getRxBufferBytesPending() == 0)
+        {
+            TimeoutTimer timer;
+
+            for(;;)
+            {
+                bool hasData;
+
+                if(socket.poll(&hasData) != WICONNECT_SUCCESS)
+                {
+                    return -1;
+                }
+                else if(hasData)
+                {
+                    break;
+                }
+                else if(timer.timedOut(_timeout))
+                {
+                    return -1;
+                }
+            }
+        }
+    }
+
+    if(length == 1 && socket.getRxBufferSize() > 0)
+    {
+        return (socket.getc((uint8_t*)data) == WICONNECT_SUCCESS) ? 1 : -1;
+    }
+    else
+    {
+        for(;;)
+        {
+            if(socket.read(data, length, &bytesRead) != WICONNECT_SUCCESS)
+            {
+                return -1;
+            }
+            else if(bytesRead > 0)
+            {
+                return bytesRead;
+            }
+        }
+    }
+}
+
+/*************************************************************************************************/
+// -1 if unsuccessful, else number of bytes received
+int TCPSocketConnection::receive_all(char* data, int length)
+{
+    char *ptr = data;
+    int totReadSize = length;
+
+    while(length > 0)
+    {
+        int bytesRead = receive(ptr, length);
+        if(bytesRead == -1)
+        {
+            return -1;
+        }
+        ptr += bytesRead;
+        length -= bytesRead;
+    }
+
+    return totReadSize;
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TCPSocketServer.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,56 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence:
+ *
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ */
+
+#include "api/types/Socket/TCPSocketServer.h"
+#include "common.h"
+
+
+/*************************************************************************************************/
+TCPSocketServer::TCPSocketServer()
+{
+}
+
+
+/*************************************************************************************************/
+int TCPSocketServer::bind(int port)
+{
+    return -1;
+}
+
+/*************************************************************************************************/
+int TCPSocketServer::listen(int max)
+{
+    return -1;
+}
+
+/*************************************************************************************************/
+int TCPSocketServer::accept(TCPSocketConnection& connection)
+{
+    return -1;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TcpServer.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,275 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence:
+ *
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ */
+
+#include "Wiconnect.h"
+#include "internal/common.h"
+#include "api/StringUtil.h"
+
+#ifdef WICONNECT_GPIO_IRQ_ENABLED
+#include "api/types/SocketIrqHandlerMap.h"
+#endif
+
+#define TCP_SERVER_MONITOR_PERIOD 250 //ms
+
+
+
+static WiconnectResult parseIpPortStr(char *str, uint32_t *ipAddress, uint16_t *port);
+
+
+
+
+/*************************************************************************************************/
+WiconnectResult SocketInterface::tcpListen(uint16_t listeningPort, int maxClients GPIO_IRQ_ARG)
+{
+    WiconnectResult result = WICONNECT_ERROR;
+
+    enum
+    {
+        FS_SET_MAX_CLIENTS,
+        FS_SET_DATA_GPIO,
+        FS_START_SERVER,
+    };
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(wiconnect->internalProcessingState == FS_SET_MAX_CLIENTS)
+    {
+        if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("set tcp.server.max_clients", maxClients)))
+        {
+            wiconnect->internalProcessingState = FS_SET_DATA_GPIO;
+        }
+        else if(result == WICONNECT_CMD_RESPONSE_ERROR)
+        {
+            // if there was a module error, then the wiconnect version probably doesn't support this option
+            // just continue to the next state
+            wiconnect->internalProcessingState = FS_SET_DATA_GPIO;
+        }
+    }
+
+    if(wiconnect->internalProcessingState == FS_SET_DATA_GPIO)
+    {
+#ifdef WICONNECT_GPIO_IRQ_ENABLED
+        if(irqPin == PIN_NC)
+        {
+            wiconnect->internalProcessingState = FS_START_SERVER;
+        }
+        else
+        {
+            PinToGpioMapper mapper = wiconnect->pinToGpioMapper;
+            if(mapper == NULL)
+            {
+                return WICONNECT_PINNAME_TO_GPIO_MAPPER_NULL;
+            }
+            int8_t gpio = mapper(irqPin);
+            if(gpio == -1)
+            {
+                return WICONNECT_PINNAME_TO_GPIO_NO_MAPPING;
+            }
+            else if(!irqHandlers.pinIsRegistered(irqPin))
+            {
+                return WICONNECT_NOT_FOUND;
+            }
+            else if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("set tcp.server.data_gpio %d", gpio)))
+            {
+                wiconnect->internalProcessingState = FS_START_SERVER;
+            }
+        }
+#else
+        wiconnect->internalProcessingState = FS_START_SERVER;
+#endif
+    }
+
+    if(wiconnect->internalProcessingState == FS_START_SERVER)
+    {
+        if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("tcps start %d", listeningPort)))
+        {
+//#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+//            if(clientConnectedCallback.isValid() && !wiconnect->nonBlocking)
+//            {
+//                serverClientConnectedCallback = clientConnectedCallback;
+//                serverMonitorTimer.start(this, &SocketInterface::serverClientMonitor, TCP_SERVER_MONITOR_PERIOD);
+//            }
+//#endif
+        }
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult SocketInterface::tcpAccept(WiconnectSocket &socket, uint32_t timeoutMs)
+{
+    TimeoutTimer timer;
+
+    do
+    {
+        uint8_t handle;
+        uint16_t local, remote;
+        uint32_t ipAddress;
+        WiconnectResult result;
+
+        if(WICONNECT_SUCCEEDED(result, pollForServerClient(&handle, &local, &remote, &ipAddress)))
+        {
+            char ipBuffer[17];
+            if(WICONNECT_FAILED(result, socket.init(handle, SOCKET_TYPE_TCP, Wiconnect::ipToStr(ipAddress, ipBuffer), remote, local)))
+            {
+                return result;
+            }
+            serverConnectedClientList |= (1 << handle);
+            return WICONNECT_SUCCESS;
+        }
+        else if(!(result == WICONNECT_PROCESSING || result == WICONNECT_NOT_FOUND))
+        {
+            return result;
+        }
+
+    } while(timeoutMs == WICONNECT_WAIT_FOREVER || !timer.timedOut(timeoutMs));
+
+    return WICONNECT_TIMEOUT;
+}
+
+/*************************************************************************************************/
+WiconnectResult SocketInterface::tcpServerStop(void)
+{
+    WiconnectResult result = WICONNECT_ERROR;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand("tcps stop");
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult SocketInterface::pollForServerClient(uint8_t *handlePtr, uint16_t *localPort, uint16_t *remotePort, uint32_t *ipAddress)
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("list")))
+    {
+        uint32_t connectedClients = 0;
+        char *line, *savedLine;
+        result = WICONNECT_NOT_FOUND;
+
+        for(savedLine = wiconnect->internalBuffer; (line = StringUtil::strtok_r(savedLine, "\r\n", &savedLine)) != NULL;)
+        {
+            char *toks[4], *savedTok;
+
+            if(*line != '#')
+            {
+                continue;
+            }
+            savedTok = line + 2;
+
+            for(int i = 0; i < 4 && (toks[i] = StringUtil::strtok_r(savedTok, " ", &savedTok)) != NULL; ++i)
+            {
+                if(toks[i] == NULL)
+                {
+                    result = WICONNECT_RESPONSE_PARSE_ERROR;
+                    goto exit;
+                }
+            }
+
+            if(strcmp(toks[1], "TCPS") != 0)
+            {
+                continue;
+            }
+
+            uint8_t handle = (uint8_t)(*toks[0] - '0');
+            if(handle >= WICONNECT_MAX_SOCKETS)
+            {
+                result = WICONNECT_RESPONSE_PARSE_ERROR;
+                goto exit;
+            }
+            const uint32_t handleMask = (1 << handle);
+            connectedClients |= handleMask;
+
+            if(result == WICONNECT_SUCCESS)
+            {
+                continue;
+            }
+            else if(serverConnectedClientList & handleMask)
+            {
+                continue;
+            }
+
+            result = WICONNECT_SUCCESS;
+
+            if(handlePtr != NULL)
+            {
+                *handlePtr = handle;
+                parseIpPortStr(toks[2], NULL, localPort);
+                parseIpPortStr(toks[3], ipAddress, remotePort);
+            }
+        }
+
+        uint32_t mask = 1;
+        for(int i = 0; i < WICONNECT_MAX_SOCKETS; ++i, mask <<= 1)
+        {
+            if(!(connectedClients & mask))
+            {
+                serverConnectedClientList &= ~mask;
+            }
+        }
+    }
+
+
+exit:
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+static WiconnectResult parseIpPortStr(char *str, uint32_t *ipAddress, uint16_t *port)
+{
+    char *colon = strchr(str, ':');
+    if(colon == NULL)
+    {
+        return WICONNECT_RESPONSE_PARSE_ERROR;
+    }
+    *colon++ = 0;
+
+    if(ipAddress != NULL && !Wiconnect::strToIp(str, ipAddress))
+    {
+        return WICONNECT_RESPONSE_PARSE_ERROR;
+    }
+    else if(!StringUtil::strToUint16(colon, port))
+    {
+        return WICONNECT_RESPONSE_PARSE_ERROR;
+    }
+
+    return WICONNECT_SUCCESS;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TimeoutTimer.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,66 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+
+#include "Wiconnect.h"
+#include "us_ticker_api.h"
+
+/*************************************************************************************************/
+TimeoutTimer::TimeoutTimer()
+{
+    _start = 0;
+    us_ticker_init();
+}
+
+/*************************************************************************************************/
+void TimeoutTimer::reset(void)
+{
+    _start = us_ticker_read();
+}
+
+/*************************************************************************************************/
+TimerTimeout TimeoutTimer::remainingMs(TimerTimeout timeoutMs)
+{
+    volatile TimerTimeout diff = readMs();
+    return (timeoutMs > diff) ? (timeoutMs - diff) : 0;
+}
+
+/*************************************************************************************************/
+TimerTimeout TimeoutTimer::readMs()
+{
+    volatile TimerTimeout now = us_ticker_read();
+    TimerTimeout remaining = (now > _start) ? (now - _start) : ((ULONG_MAX - _start) + now);
+    return remaining / 1000;
+}
+
+/*************************************************************************************************/
+bool TimeoutTimer::timedOut(TimerTimeout timeoutMs)
+{
+    volatile TimerTimeout now = us_ticker_read();
+    return ((now - _start) / 1000) > timeoutMs;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/UDPSocket.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,140 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence:
+ *
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ */
+
+
+#include "api/types/Socket/UDPSocket.h"
+#include "common.h"
+
+
+/*************************************************************************************************/
+UDPSocket::UDPSocket(int rxBufferLen, void *rxBuffer, int txBufferLen, void *txBuffer)
+: Socket(rxBufferLen, rxBuffer, txBufferLen, txBuffer), localPort(SOCKET_ANY_PORT)
+{
+}
+
+/*************************************************************************************************/
+int UDPSocket::init(void)
+{
+    return 0;
+}
+
+/*************************************************************************************************/
+// Server initialization
+int UDPSocket::bind(int port)
+{
+    localPort = port;
+    return 0;
+}
+
+/*************************************************************************************************/
+int UDPSocket::join_multicast_group(const char* address)
+{
+    return -1;
+}
+
+/*************************************************************************************************/
+int UDPSocket::set_broadcasting(bool broadcast)
+{
+    return 0;
+}
+
+/*************************************************************************************************/
+// -1 if unsuccessful, else number of bytes written
+int UDPSocket::sendTo(Endpoint &remote, char *packet, int length)
+{
+    if(!socket.isConnected())
+    {
+        if(Wiconnect::getInstance()->udpConnect(socket, remote.get_address(), remote.get_port(), localPort) != WICONNECT_SUCCESS)
+        {
+            return -1;
+        }
+    }
+    return (socket.write(packet, length, true) == WICONNECT_SUCCESS) ? length : -1;
+}
+
+/*************************************************************************************************/
+// -1 if unsuccessful, else number of bytes received
+int UDPSocket::receiveFrom(Endpoint &remote, char *buffer, int length)
+{
+    uint16_t bytesRead;
+
+    if(!socket.isConnected())
+    {
+        if(Wiconnect::getInstance()->udpConnect(socket, remote._ipAddress, remote.get_port(), localPort) != WICONNECT_SUCCESS)
+        {
+            return -1;
+        }
+    }
+
+    if (!_blocking)
+    {
+        if(socket.getRxBufferSize() == 0 || socket.getRxBufferBytesPending() == 0)
+        {
+            TimeoutTimer timer;
+
+            for(;;)
+            {
+                bool hasData;
+
+                if(socket.poll(&hasData) != WICONNECT_SUCCESS)
+                {
+                    return -1;
+                }
+                else if(hasData)
+                {
+                    break;
+                }
+                else if(timer.timedOut(_timeout))
+                {
+                    return -1;
+                }
+            }
+        }
+    }
+
+    if(length == 1 && socket.getRxBufferSize() > 0)
+    {
+        return (socket.getc((uint8_t*)buffer) == WICONNECT_SUCCESS) ? 1 : -1;
+    }
+    else
+    {
+        for(;;)
+        {
+            if(socket.read(buffer, length, &bytesRead) != WICONNECT_SUCCESS)
+            {
+                return -1;
+            }
+            else if(bytesRead > 0)
+            {
+                return bytesRead;
+            }
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/UdpServer.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,53 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence:
+ *
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ */
+
+#include "Wiconnect.h"
+#include "internal/common.h"
+#include "api/StringUtil.h"
+
+
+
+/*************************************************************************************************/
+WiconnectResult SocketInterface::udpListen(WiconnectUdpServer &udpServer, uint16_t listeningPort)
+{
+    WiconnectResult result;
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("udps start %d", listeningPort)))
+    {
+        // FIXME: the firmware had a bug, the above command should return the handle of the udp server stream,
+        //        just default to 0 for now
+        udpServer.init(0, SOCKET_TYPE_UDPS, 0, 0, listeningPort);
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Wiconnect.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,398 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#include <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+
+#include "api/WiconnectInterface.h"
+#include "internal/common.h"
+#include "internal/CommandCommon.h"
+
+
+
+
+using namespace wiconnect;
+
+
+
+
+
+#ifdef WICONNECT_ENABLE_MALLOC
+#define MALLOC_ARGS , void* (*mallocPtr)(size_t), void (*freePtr)(void*)
+#define MALLOC_CONSTRUCTORS   _malloc(mallocPtr), _free(freePtr),
+#else
+#define MALLOC_ARGS
+#define MALLOC_CONSTRUCTORS
+#endif
+
+
+static Wiconnect* instance = NULL;
+
+
+
+
+/*************************************************************************************************/
+void Wiconnect::prepare(void *internalBuffer_, int internalBufferSize_, bool nonBlocking_)
+{
+    instance = this;
+    internalBufferAlloc = false;
+#ifdef WICONNECT_ENABLE_MALLOC
+    if(internalBufferSize_ > 0 && internalBuffer_ == NULL)
+    {
+        wiconnect_assert(this, "Wiconnect(), malloc not defined", _malloc != NULL);
+        internalBuffer = (char*)_malloc(internalBufferSize_);
+        internalBufferAlloc = true;
+    }
+    else
+#endif
+    {
+        internalBuffer = (char*)internalBuffer_;
+    }
+
+    internalProcessingState = 0;
+    currentCommandId = NULL;
+    internalBufferSize = internalBufferSize_;;
+    nonBlocking = nonBlocking_;
+    commandExecuting = false;
+    initialized = false;
+    pinToGpioMapper = NULL;
+    defaultTimeoutMs = WICONNECT_DEFAULT_TIMEOUT;
+
+    memset(commandContext, 0, sizeof(commandContext));
+
+#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+    commandProcessingPeriod = WICONNECT_DEFAULT_COMMAND_PROCESSING_PERIOD;
+    currentQueuedCommand = NULL;
+#endif
+}
+
+
+/*************************************************************************************************/
+Wiconnect::Wiconnect(const SerialConfig &serialConfig, int internalBufferSize, void *internalBuffer, Pin reset, Pin wake, bool nonBlocking MALLOC_ARGS) :
+        NetworkInterface(this), SocketInterface(this), FileInterface(this), GhmInterface(this),
+        MALLOC_CONSTRUCTORS serial(serialConfig, this), resetGpio(reset), wakeGpio(wake)
+{
+#ifdef WICONNECT_ENABLE_MALLOC
+    wiconnect_assert(this, "Wiconnect(), bad malloc/free", (mallocPtr == NULL && freePtr == NULL) || (mallocPtr != NULL && freePtr != NULL));
+#endif
+    prepare(internalBuffer, internalBufferSize, nonBlocking);
+}
+
+/*************************************************************************************************/
+Wiconnect::Wiconnect(const SerialConfig &serialConfig, Pin reset, Pin wake, bool nonBlocking MALLOC_ARGS) :
+    NetworkInterface(this), SocketInterface(this), FileInterface(this), GhmInterface(this),
+    MALLOC_CONSTRUCTORS serial(serialConfig, this), resetGpio(reset), wakeGpio(wake)
+{
+#ifdef WICONNECT_ENABLE_MALLOC
+    wiconnect_assert(this, "Wiconnect(), bad malloc/free", (mallocPtr == NULL && freePtr == NULL) || (mallocPtr != NULL && freePtr != NULL));
+#endif
+    prepare(NULL, 0, nonBlocking);
+}
+
+/*************************************************************************************************/
+Wiconnect::~Wiconnect()
+{
+#ifdef WICONNECT_ENABLE_MALLOC
+    if(internalBufferAlloc)
+    {
+        _free(internalBuffer);
+    }
+#endif
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::init(bool bringNetworkUp)
+{
+    WiconnectResult result;
+    int retries;
+    bool configuredBus = false;
+    bool savedNonBlocking = nonBlocking;
+
+    DEBUG_INFO("Initializing wiconnect");
+
+    serial.initialize();
+
+    if(WICONNECT_FAILED(result, reset()))
+    {
+        return result;
+    }
+
+    delayMs(1000);
+
+    initialized = true;
+    nonBlocking = false;
+
+
+    loop:
+    for(retries = 3; retries > 0; --retries)
+    {
+        result = sendCommand(1000, CMD_SET_SYSTEM_COMMAND_MODE, "machine");
+        if(result != WICONNECT_SUCCESS)
+        {
+            delayMs(100);
+        }
+        else
+        {
+            break;
+        }
+    }
+
+    if(result != WICONNECT_SUCCESS && !configuredBus)
+    {
+        configuredBus = true;
+        if(configureModuleDataBus())
+        {
+            goto loop;
+        }
+    }
+
+    if(result == WICONNECT_SUCCESS)
+    {
+        sendCommand("set stream.auto_close 0");
+    }
+    if(result == WICONNECT_SUCCESS && bringNetworkUp)
+    {
+        sendCommand(15000, "ping -g");
+    }
+
+    nonBlocking = savedNonBlocking;
+    if(result != WICONNECT_SUCCESS)
+    {
+        initialized = false;
+    }
+
+
+    return result;
+}
+
+/*************************************************************************************************/
+void Wiconnect::deinit(void)
+{
+    initialized = false;
+}
+
+/*************************************************************************************************/
+Wiconnect* Wiconnect::getInstance()
+{
+    return instance;
+}
+
+/*************************************************************************************************/
+bool Wiconnect::isInitialized()
+{
+    return initialized;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::reset()
+{
+    resetGpio = 0;
+    delayMs(10);
+    resetGpio = 1;
+    delayMs(1000);
+    return WICONNECT_SUCCESS;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::wakeup()
+{
+    wakeGpio = 1;
+    delayMs(1);
+    wakeGpio = 0;
+    return WICONNECT_SUCCESS;
+}
+
+/*************************************************************************************************/
+void Wiconnect::flush(int delayMs)
+{
+//    if(delayMs != 0)
+//    {
+//        serial.write("\r\n\r\n", 4, 0);
+//    }
+//    delayMs(delayMs);
+//    serial.flush();
+}
+
+/*************************************************************************************************/
+void Wiconnect::setPinToGpioMapper(PinToGpioMapper mapper)
+{
+    pinToGpioMapper = mapper;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::getVersion(char *versionBuffer, int versionBufferSize, const Callback &completeCallback)
+{
+    WiconnectResult result;
+
+    if(versionBuffer != NULL && versionBufferSize == 0)
+    {
+        return WICONNECT_BAD_ARG;
+    }
+
+    _CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(versionBuffer == NULL)
+    {
+        result = sendCommand(completeCallback, CMD_GET_VERSION);
+    }
+    else
+    {
+        result = sendCommand(completeCallback, versionBuffer, versionBufferSize, CMD_GET_VERSION);
+    }
+
+    _CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::updateFirmware(bool forced, const char *versionStr, const Callback &completeCallback)
+{
+    WiconnectResult result;
+    char *cmdBuffer = internalBuffer;
+
+    if(_WICONNECT_IS_IDLE())
+    {
+        strcpy(cmdBuffer, "ota ");
+        if(versionStr != NULL)
+        {
+            strcat(cmdBuffer, "-b wiconnect-");
+            strcat(cmdBuffer, versionStr);
+        }
+        else if(forced)
+        {
+            strcat(cmdBuffer, "-f");
+        }
+    }
+
+    _CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = sendCommand(completeCallback, WICONNECT_FIRMWARE_UPDATE_TIMEOUT, cmdBuffer);
+
+    _CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+const char* Wiconnect::getWiconnectResultStr(WiconnectResult wiconnectResult)
+{
+    static const char* const wiconnectSuccessStrTable[] = {
+            "Success",                              // WICONNECT_SUCCESS
+            "Processing command",                   // WICONNECT_PROCESSING
+            "Idle",                                 // WICONNECT_IDLE
+            "Aborted",                              // WICONNECT_ABORTED
+    };
+    static const char* const wiconnectErrorStrTable[] = {
+            "",
+            "General error",                        // WICONNECT_ERROR
+            "WiConnect command code error",         // WICONNECT_CMD_RESPONSE_ERROR
+            "Null buffer",                          // WICONNECT_NULL_BUFFER
+            "Not initialized",                      // WICONNECT_NOT_INITIALIZED
+            "Overflow",                             // WICONNECT_OVERFLOW
+            "Timeout",                              // WICONNECT_TIMEOUT
+            "Response handler null",                // WICONNECT_RESPONSE_HANDLER_NULL
+            "Response parse error",                 // WICONNECT_RESPONSE_PARSE_ERROR
+            "Another command is executing",         // WICONNECT_ANOTHER_CMD_EXECUTING
+            "Bad argument(s)",                      // WICONNECT_BAD_ARG
+            "Unsupported",                          // WICONNECT_UNSUPPORTED
+            "Pin name to GPIO mapper null",         // WICONNECT_PINNAME_TO_GPIO_MAPPER_NULL
+            "Duplicate",                            // WICONNECT_DUPLICATE
+            "Not found",                            // WICONNECT_NOT_FOUND
+            "No mapping for pinname to GPIO",       // WICONNECT_PINNAME_TO_GPIO_NO_MAPPING
+            "Not connected",                        // WICONNECT_NOT_CONNECTED
+            "Underflow",                            // WICONNECT_UNDERFLOW
+            "A monitor is not available",           // WICONNECT_MONITOR_NOT_AVAILABLE
+            "Not opened for reading",               // WICONNECT_NOT_OPENED_FOR_READING
+    };
+
+    if((int)wiconnectResult >= (int)WICONNECT_SUCCESS)
+    {
+        return wiconnectSuccessStrTable[wiconnectResult];
+    }
+    else
+    {
+        wiconnectResult = (WiconnectResult)(-((int)wiconnectResult));
+        return wiconnectErrorStrTable[wiconnectResult];
+    }
+}
+
+
+/*************************************************************************************************/
+void Wiconnect::setDebugLogger(LogFunc logFunc)
+{
+#ifdef WICONNECT_ENABLE_DEBUGGING
+    debugLogger = logFunc;
+#endif
+}
+
+/*************************************************************************************************/
+void Wiconnect::setAssertLogger(LogFunc assertLogFunc)
+{
+    assertLogger = assertLogFunc;
+}
+
+#ifdef WICONNECT_ENABLE_DEBUGGING
+/*************************************************************************************************/
+void Wiconnect::debugLog(const char *msg, ...)
+{
+    if(!debugLogger.isValid())
+    {
+        return;
+    }
+
+    static char buffer[96];
+    va_list args;
+    va_start(args, msg);
+    int len = vsnprintf(buffer, sizeof(buffer)-1, msg, args);
+    va_end(args);
+
+    if(len > (int)(sizeof(buffer)-6))
+    {
+        char *p = &buffer[sizeof(buffer)-6];
+        *p++ = '.';
+        *p++ = '.';
+        *p++ = '.';
+        *p++ = '\r';
+        *p++ = '\n';
+        *p = 0;
+    }
+    else
+    {
+        if(buffer[len-2] != '\r')
+        {
+            char *p = &buffer[len];
+            *p++ = '\r';
+            *p++ = '\n';
+            *p = 0;
+        }
+    }
+    debugLogger.call(buffer);
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Wiconnect.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,35 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+#include "api/WiconnectInterface.h"
+
+
+using namespace wiconnect;
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WiconnectCommand.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,111 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+
+#include "internal/CommandCommon.h"
+#include "api/StringUtil.h"
+
+
+
+/*************************************************************************************************/
+void Wiconnect::setCommandDefaultTimeout(TimerTimeout timeoutMs)
+{
+    defaultTimeoutMs = timeoutMs;
+}
+
+/*************************************************************************************************/
+TimerTimeout Wiconnect::getCommandDefaultTimeout()
+{
+    return defaultTimeoutMs;
+}
+
+/*************************************************************************************************/
+void Wiconnect::setBlockingEnabled(bool blockingEnabled)
+{
+    nonBlocking = !blockingEnabled;
+}
+
+/*************************************************************************************************/
+bool Wiconnect::getBlockingEnabled(void)
+{
+    return !nonBlocking;
+}
+
+/*************************************************************************************************/
+char* Wiconnect::getResponseBuffer()
+{
+    return internalBuffer;
+}
+
+/*************************************************************************************************/
+uint16_t Wiconnect::getLastCommandResponseLength()
+{
+    CommandHeader *header = (CommandHeader*)commandHeaderBuffer;
+    return header->response_len;
+}
+
+/*************************************************************************************************/
+const char* Wiconnect::getLastCommandResponseCodeStr()
+{
+    if(!initialized)
+    {
+        return NULL;
+    }
+    static const char* const response_error_strings[] ={
+            "Null",
+            "Success",
+            "Failed",
+            "Parse error",
+            "Unknown command",
+            "Too few arguments",
+            "Too many arguments",
+            "Unknown command option",
+            "Bad command arguments"
+    };
+    CommandHeader *header = (CommandHeader*)commandHeaderBuffer;
+
+    return response_error_strings[header->response_code];
+}
+
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::responseToUint32(uint32_t *uint32Ptr)
+{
+    CHECK_INITIALIZED();
+    return StringUtil::strToUint32(internalBuffer, uint32Ptr) ? WICONNECT_SUCCESS : WICONNECT_RESPONSE_PARSE_ERROR;
+}
+
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::responseToInt32(int32_t *int32Ptr)
+{
+    CHECK_INITIALIZED();
+    return StringUtil::strToInt32(internalBuffer, int32Ptr) ? WICONNECT_SUCCESS : WICONNECT_RESPONSE_PARSE_ERROR;
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WiconnectFile.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,346 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+
+#include "Wiconnect.h"
+#include "internal/common.h"
+
+#define CHECK_OPENED_FOR_READING() if(!readEnabled) return WICONNECT_NOT_OPENED_FOR_READING
+
+
+
+
+/*************************************************************************************************/
+WiconnectFile::WiconnectFile(int rxBufferLen, void *rxBuffer_)
+{
+    wiconnect = Wiconnect::getInstance();
+
+    memset(&rxBuffer, 0, sizeof(Buffer));
+
+    rxBuffer.size = rxBufferLen - 4;
+    rxBuffer.buffer = (uint8_t*)rxBuffer_;
+
+    if(rxBuffer.size > 0)
+    {
+        if(rxBuffer_ == NULL)
+        {
+#ifdef WICONNECT_ENABLE_MALLOC
+            wiconnect_assert(wiconnect, "File(), malloc not defined", wiconnect->_malloc != NULL);
+            rxBuffer.buffer = (uint8_t*)wiconnect->_malloc(rxBufferLen);
+            wiconnect_assert(wiconnect, "File(), failed to malloc buffer", rxBuffer.buffer != NULL);
+            rxBuffer.allocated = true;
+#else
+            wiconnect_assert(wiconnect, "must specify buffer", 0);
+#endif
+        }
+        rxBuffer.size -= 4;
+    }
+
+    previous = next = NULL;
+    handle = 0xff;
+    readEnabled = false;
+    *name = 0;
+    size = 0;
+    type = FILE_TYPE_UNKNOWN;
+    version = 0;
+    flags = FILE_FLAG_NONE;
+}
+
+/*************************************************************************************************/
+WiconnectFile::~WiconnectFile()
+{
+    while(close() == WICONNECT_PROCESSING)
+    {
+    }
+
+#ifdef WICONNECT_ENABLE_MALLOC
+    if(rxBuffer.allocated && rxBuffer.size > 0)
+    {
+        wiconnect_assert(wiconnect, "~File(), free not defined", wiconnect->_free != NULL);
+        wiconnect->_free(rxBuffer.buffer);
+    }
+#endif
+}
+
+/*************************************************************************************************/
+WiconnectResult WiconnectFile::openForRead(uint8_t handle_, const char *filename)
+{
+    handle = handle_;
+    readEnabled = true;
+    strcpy(name, filename);
+
+    return WICONNECT_SUCCESS;
+}
+
+/*************************************************************************************************/
+WiconnectResult WiconnectFile::initWithListing(const char *typeStr, const char *flagsStr, const char* sizeStr, const char *versionStr, const char *nameStr)
+{
+    uint32_t tmp;
+
+    if(!StringUtil::strHexToUint32(&typeStr[2], &tmp))
+    {
+        return WICONNECT_RESPONSE_PARSE_ERROR;
+    }
+    type = (FileType)tmp;
+
+    if(!StringUtil::strHexToUint32(flagsStr, &tmp))
+    {
+        return WICONNECT_RESPONSE_PARSE_ERROR;
+    }
+    flags = (FileFlags)tmp;
+
+    if(!StringUtil::strToUint32(sizeStr, &tmp))
+    {
+        return WICONNECT_RESPONSE_PARSE_ERROR;
+    }
+    size = (uint32_t)tmp;
+
+    if(!FileInterface::fileVersionStrToInt(versionStr, &version))
+    {
+        return WICONNECT_RESPONSE_PARSE_ERROR;
+    }
+
+    strcpy(name, nameStr);
+
+    return WICONNECT_SUCCESS;
+}
+
+#ifdef WICONNECT_ENABLE_MALLOC
+/*************************************************************************************************/
+void* WiconnectFile::operator new(size_t size)
+{
+    Wiconnect *wiconnect = Wiconnect::getInstance();
+    wiconnect_assert(wiconnect, "File:new, malloc not defined", wiconnect->_malloc != NULL);
+    return Wiconnect::getInstance()->_malloc(size);
+}
+
+/*************************************************************************************************/
+void WiconnectFile::operator delete(void* ptr)
+{
+    Wiconnect *wiconnect = Wiconnect::getInstance();
+    wiconnect_assert(wiconnect, "File:delete, free not defined", wiconnect->_free != NULL);
+    Wiconnect::getInstance()->_free(ptr);
+}
+#endif
+
+/*************************************************************************************************/
+WiconnectResult WiconnectFile::close()
+{
+    WiconnectResult result;
+    CHECK_OPENED_FOR_READING();
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("close %d", handle)))
+    {
+        readEnabled = false;
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+const char* WiconnectFile::getName() const
+{
+    return name;
+}
+
+/*************************************************************************************************/
+uint32_t WiconnectFile::getSize() const
+{
+    return size;
+}
+
+/*************************************************************************************************/
+FileType WiconnectFile::getType() const
+{
+    return type;
+}
+
+/*************************************************************************************************/
+FileFlags WiconnectFile::getFlags() const
+{
+    return flags;
+}
+
+/*************************************************************************************************/
+uint32_t WiconnectFile::getVersion() const
+{
+    return version;
+}
+
+/*************************************************************************************************/
+const char* WiconnectFile::getVersionStr(char *buffer) const
+{
+    return FileInterface::fileVersionIntToStr(version, true, buffer);
+}
+
+/*************************************************************************************************/
+const WiconnectFile* WiconnectFile::getNext() const
+{
+    return next;
+}
+
+/*************************************************************************************************/
+const WiconnectFile* WiconnectFile::getPrevious() const
+{
+    return previous;
+}
+
+
+/*************************************************************************************************/
+WiconnectResult WiconnectFile::read(void* buffer, uint16_t maxLength, uint16_t *bytesReadPtr)
+{
+    WiconnectResult result;
+
+    CHECK_OPENED_FOR_READING();
+
+    if(rxBuffer.size > 0)
+    {
+        uint16_t bytesToRead = 0;
+        const uint16_t bufferedBytes = (&rxBuffer.buffer[rxBuffer.bytesPending] - rxBuffer.ptr);
+        if(bufferedBytes > 0)
+        {
+            bytesToRead = MIN(bufferedBytes, maxLength);
+            memcpy(buffer, rxBuffer.ptr, bytesToRead);
+            rxBuffer.ptr += bytesToRead;
+            *bytesReadPtr = bytesToRead;
+        }
+        if(rxBuffer.ptr >= &rxBuffer.buffer[rxBuffer.bytesPending])
+        {
+            clearRxBuffer();
+        }
+        if(bytesToRead > 0)
+        {
+            return WICONNECT_SUCCESS;
+        }
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand((char*)buffer, maxLength, "read %d %d", handle, maxLength)))
+    {
+        *bytesReadPtr = wiconnect->getLastCommandResponseLength();
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult WiconnectFile::read(uint8_t **bufferPtr, uint16_t *bytesReadPtr)
+{
+    WiconnectResult result = WICONNECT_SUCCESS;
+
+    CHECK_OPENED_FOR_READING();
+
+    if(rxBuffer.size == 0)
+    {
+        return WICONNECT_UNSUPPORTED;
+    }
+    else if(bufferPtr != NULL && bytesReadPtr == NULL)
+    {
+        return WICONNECT_BAD_ARG;
+    }
+
+    if(rxBuffer.ptr >= &rxBuffer.buffer[rxBuffer.bytesPending])
+    {
+        clearRxBuffer();
+    }
+
+
+    if(rxBuffer.bytesPending < rxBuffer.size)
+    {
+        const int bytesToRead = rxBuffer.size - rxBuffer.bytesPending;
+        char* ptr = (char*)&rxBuffer.buffer[rxBuffer.bytesPending];
+
+        CHECK_OTHER_COMMAND_EXECUTING();
+
+        loop:
+        if(bytesToRead > 0 && WICONNECT_SUCCEEDED(result, wiconnect->sendCommand(ptr, bytesToRead, "read %d %d", handle, bytesToRead)))
+        {
+            const uint16_t bytesRead = wiconnect->getLastCommandResponseLength();
+            rxBuffer.bytesPending += bytesRead;
+        }
+
+        // if still processing and in non-blocking mode,
+        // then this api call must block until the command completes
+        if(result == WICONNECT_PROCESSING && wiconnect->nonBlocking)
+        {
+            goto loop;
+        }
+
+        CHECK_CLEANUP_COMMAND();
+    }
+
+    if(bufferPtr != NULL)
+    {
+        *bufferPtr = rxBuffer.buffer;
+        *bytesReadPtr = rxBuffer.bytesPending;
+        clearRxBuffer();
+    }
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult WiconnectFile::getc(uint8_t *c)
+{
+    WiconnectResult result;
+
+    if(rxBuffer.size == 0)
+    {
+        return WICONNECT_UNSUPPORTED;
+    }
+
+    if(rxBuffer.bytesPending == 0 &&
+      WICONNECT_FAILED(result, read()))
+    {
+        return result;
+    }
+    else if(rxBuffer.ptr < &rxBuffer.buffer[rxBuffer.bytesPending])
+    {
+        *c = *rxBuffer.ptr;
+        ++rxBuffer.ptr;
+        return WICONNECT_SUCCESS;
+    }
+    else
+    {
+        clearRxBuffer();
+        return WICONNECT_ERROR;
+    }
+}
+
+/*************************************************************************************************/
+void WiconnectFile::clearRxBuffer()
+{
+    rxBuffer.bytesPending = 0;
+    rxBuffer.ptr = rxBuffer.buffer;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WiconnectModuleBusConfig.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2014, ACKme Networks
+ * All Rights Reserved.
+ *
+ * This is UNPUBLISHED PROPRIETARY SOURCE CODE of ACKme Networks;
+ * the contents of this file may not be disclosed to third parties, copied
+ * or duplicated in any form, in whole or in part, without the prior
+ * written permission of ACKme Networks.
+ */
+
+
+#include "Wiconnect.h"
+#include "internal/common.h"
+
+
+
+
+/*************************************************************************************************/
+// attempt to configure the module data bus for the uart the wiconnect library was configured
+bool Wiconnect::configureModuleDataBus(void)
+{
+    return false;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WiconnectSerial.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,202 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+
+#include "Wiconnect.h"
+#include "internal/common.h"
+
+#ifndef WICONNECT_SERIAL_RX_BUFFER
+#error WICONNECT_SERIAL_RX_BUFFER NOT defined NOT currently supported
+#endif
+
+
+
+
+typedef struct
+{
+    uint16_t size;
+    volatile uint16_t count;
+    uint8_t *start, *end;
+    volatile uint8_t *head;
+    volatile uint8_t *tail;
+} SerialRxBuffer;
+
+
+/*************************************************************************************************/
+WiconnectSerial::WiconnectSerial(const SerialConfig  &config, Wiconnect *wiconnect) : RawSerial(config.tx, config.rx)
+{
+    ct_assert(sizeof(ringBuffer) >= sizeof(SerialRxBuffer));
+
+    baud(config.baud);
+
+    SerialRxBuffer *rxBuffer = (SerialRxBuffer*)ringBuffer;
+    memset(rxBuffer, 0, sizeof(SerialRxBuffer));
+    bufferAlloc = false;
+    if(config.serialRxBufferSize > 0)
+    {
+        if(config.serialRxBuffer != NULL)
+        {
+            rxBuffer->start = (uint8_t*)config.serialRxBuffer;
+        }
+#ifdef WICONNECT_ENABLE_MALLOC
+        else
+        {
+            wiconnect_assert(wiconnect, "WiconnectSerial(), malloc not defined", wiconnect->_malloc != NULL);
+            rxBuffer->start = (uint8_t*)wiconnect->_malloc(config.serialRxBufferSize);
+            wiconnect_assert(wiconnect, "WiconnectSerial(), malloc failed", rxBuffer->start != NULL);
+            bufferAlloc = true;
+        }
+#endif
+        rxBuffer->head = rxBuffer->tail = (volatile uint8_t*)rxBuffer->start;
+        rxBuffer->end = (uint8_t*)rxBuffer->head + config.serialRxBufferSize;
+        rxBuffer->size = config.serialRxBufferSize;
+        attach(this, &WiconnectSerial::rxIrqHandler, SerialBase::RxIrq);
+    }
+}
+
+/*************************************************************************************************/
+WiconnectSerial::~WiconnectSerial()
+{
+#ifdef WICONNECT_ENABLE_MALLOC
+    if(bufferAlloc)
+    {
+        SerialRxBuffer *rxBuffer = (SerialRxBuffer*)ringBuffer;
+        Wiconnect::getInstance()->_free(rxBuffer->start);
+    }
+#endif
+}
+
+/*************************************************************************************************/
+void WiconnectSerial::initialize(void)
+{
+}
+
+/*************************************************************************************************/
+void WiconnectSerial::flush(void)
+{
+    while (readable())
+    {
+        int c = getc();
+    }
+
+    SerialRxBuffer *rxBuffer = (SerialRxBuffer*)ringBuffer;
+    rxBuffer->tail = rxBuffer->head = rxBuffer->start;
+    rxBuffer->count = 0;
+}
+
+/*************************************************************************************************/
+int WiconnectSerial::write(const void *data, int bytesToWrite, TimerTimeout timeoutMs)
+{
+    uint8_t *ptr = (uint8_t*)data;
+    int remaining = bytesToWrite;
+
+    while(remaining > 0)
+    {
+        if(!writeable())
+        {
+            timeoutTimer.reset();
+            while(!writeable())
+            {
+                if(timeoutMs == 0)
+                {
+                    if(timeoutTimer.readMs() > 0)
+                    {
+                        goto exit;
+                    }
+                }
+                else
+                {
+                    if(timeoutTimer.readMs() >= timeoutMs)
+                    {
+                        goto exit;
+                    }
+                }
+            }
+        }
+
+        putc(*ptr);
+        ++ptr;
+        --remaining;
+    }
+
+    exit:
+    return bytesToWrite - remaining;
+}
+
+/*************************************************************************************************/
+int WiconnectSerial::read(void *data, int bytesToRead, TimerTimeout timeoutMs)
+{
+    SerialRxBuffer *rxBuffer = (SerialRxBuffer*)ringBuffer;
+    uint8_t *ptr = (uint8_t*)data;
+    int remaining = bytesToRead;
+
+    while(remaining > 0)
+    {
+        if(rxBuffer->count == 0)
+        {
+            if(timeoutMs == 0)
+            {
+                break;
+            }
+            else
+            {
+                timeoutTimer.reset();
+                while(rxBuffer->count == 0)
+                {
+                    if(timeoutTimer.readMs() >= timeoutMs)
+                    {
+                        goto exit;
+                    }
+                }
+            }
+        }
+
+        *ptr++ = *rxBuffer->tail++;
+        --remaining;
+        --rxBuffer->count;
+        if(rxBuffer->tail >= rxBuffer->end)
+            rxBuffer->tail = rxBuffer->start;
+    }
+
+exit:
+    return bytesToRead - remaining;
+}
+
+/*************************************************************************************************/
+void WiconnectSerial::rxIrqHandler(void)
+{
+    SerialRxBuffer *rxBuffer = (SerialRxBuffer*)ringBuffer;
+
+    while (readable() && rxBuffer->count < rxBuffer->size)
+    {
+        *rxBuffer->head++ = (uint8_t)getc();
+        ++rxBuffer->count;
+        if(rxBuffer->head >= rxBuffer->end)
+            rxBuffer->head = rxBuffer->start;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WiconnectSettings.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,113 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence:
+ *
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ */
+
+#include "Wiconnect.h"
+#include "internal/common.h"
+
+
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::setSetting(const char *settingStr, uint32_t value)
+{
+	WiconnectResult result;
+
+	_CHECK_OTHER_COMMAND_EXECUTING();
+
+	result = sendCommand("set %s %u", settingStr, value);
+
+    _CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::setSetting(const char *settingStr, const char *value)
+{
+	WiconnectResult result;
+
+	_CHECK_OTHER_COMMAND_EXECUTING();
+
+	result = sendCommand("set %s %s", settingStr, value);
+
+    _CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::getSetting(const char *settingStr, uint32_t *valuePtr)
+{
+    WiconnectResult result = WICONNECT_ERROR;
+
+
+	_CHECK_OTHER_COMMAND_EXECUTING();
+
+	if(WICONNECT_SUCCEEDED(result, sendCommand("get %s", settingStr)))
+	{
+		result = responseToUint32(valuePtr);
+	}
+
+    _CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::getSetting(const char *settingStr, char **valuePtr)
+{
+    WiconnectResult result = WICONNECT_ERROR;
+
+
+	_CHECK_OTHER_COMMAND_EXECUTING();
+
+	if(WICONNECT_SUCCEEDED(result, sendCommand("get %s", settingStr)))
+	{
+		*valuePtr = internalBuffer;
+	}
+
+    _CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult Wiconnect::getSetting(const char *settingStr, char *valueBuffer, uint16_t valueBufferLen)
+{
+    WiconnectResult result = WICONNECT_ERROR;
+
+
+	_CHECK_OTHER_COMMAND_EXECUTING();
+
+	result = sendCommand(valueBuffer, valueBufferLen, "get %s", settingStr);
+
+    _CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WiconnectSocket.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,615 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#include <stdarg.h>
+#include "Wiconnect.h"
+#include "internal/common.h"
+#include "api/StringUtil.h"
+
+
+#define CHECK_CONNECTED() if(!isConnected()) return WICONNECT_NOT_CONNECTED
+
+
+WiconnectResult readerCallback(void *user, void *data, int maxReadSize, int *bytesRead);
+
+
+
+/*************************************************************************************************/
+WiconnectSocket::WiconnectSocket(int rxBufferLen_, void *rxBuffer_, int txBufferLen_, void *txBuffer_)
+{
+    wiconnect = Wiconnect::getInstance();
+
+    memset((void*)&txBuffer, 0, sizeof(Buffer));
+    memset((void*)&rxBuffer, 0, sizeof(Buffer));
+
+    txBuffer.size = txBufferLen_;
+    txBuffer.buffer = (uint8_t*)txBuffer_;
+
+    rxBuffer.size = rxBufferLen_;
+    rxBuffer.buffer = (uint8_t*)rxBuffer_;
+
+    if(txBuffer.size > 0)
+    {
+        if(txBuffer_ == NULL)
+        {
+#ifdef WICONNECT_ENABLE_MALLOC
+            wiconnect_assert(wiconnect, "Socket(), malloc not defined", wiconnect->_malloc != NULL);
+            txBuffer.buffer = (uint8_t*)wiconnect->_malloc(txBufferLen_);
+            wiconnect_assert(wiconnect, "Socket(), txBuffer malloc failed", txBuffer.buffer != NULL);
+            txBuffer.allocated = true;
+#else
+            wiconnect_assert(wiconnect, "must specify buffer", 0);
+#endif
+        }
+        txBuffer.size -= 4;
+    }
+
+    if(rxBuffer.size > 0)
+    {
+        if(rxBuffer_ == NULL)
+        {
+#ifdef WICONNECT_ENABLE_MALLOC
+            wiconnect_assert(wiconnect, "Socket(), malloc not defined", wiconnect->_malloc != NULL);
+            rxBuffer.buffer = (uint8_t*)wiconnect->_malloc(rxBufferLen_);
+            wiconnect_assert(wiconnect, "Socket(), rxBuffer malloc failed", rxBuffer.buffer != NULL);
+            rxBuffer.allocated = true;
+#else
+            wiconnect_assert(wiconnect, "must specify buffer", 0);
+#endif
+        }
+        rxBuffer.size -= 4;
+    }
+
+    handle = SOCKET_INVALID_HANDLE;
+    type = SOCKET_TYPE_UNKNOWN;
+    remotePort = 0;
+    localPort = 0;
+    connected = false;
+    enableAutoClose = false;
+    host[0] = 0;
+}
+
+
+/*************************************************************************************************/
+WiconnectResult WiconnectSocket::init(uint8_t handle_, SocketType type_, const char *host_, uint16_t remotePort_, uint16_t localPort_)
+{
+    handle = handle_;
+    type = type_;
+    remotePort = remotePort_;
+    localPort = localPort_;
+    connected = true;
+    enableAutoClose = false;
+
+    rxBuffer.ptr = rxBuffer.buffer;
+    rxBuffer.bytesPending = 0;
+    txBuffer.ptr = txBuffer.buffer;
+    txBuffer.bytesPending = 0;
+
+    strncpy(host, host_, sizeof(host)-1);
+
+    return WICONNECT_SUCCESS;
+}
+
+/*************************************************************************************************/
+WiconnectSocket::~WiconnectSocket()
+{
+    while((handle != SOCKET_INVALID_HANDLE) && (close() == WICONNECT_PROCESSING))
+    {
+    }
+
+#ifdef WICONNECT_ENABLE_MALLOC
+    if(txBuffer.allocated && txBuffer.size > 0)
+    {
+        wiconnect_assert(wiconnect, "~Socket(), free not defined", wiconnect->_free != NULL);
+        wiconnect->_free(txBuffer.buffer);
+    }
+    if(rxBuffer.allocated && rxBuffer.size > 0)
+    {
+        wiconnect_assert(wiconnect, "~Socket(), free not defined", wiconnect->_free != NULL);
+        wiconnect->_free(rxBuffer.buffer);
+    }
+#endif
+}
+
+/*************************************************************************************************/
+bool WiconnectSocket::isConnected()
+{
+    return connected;
+}
+
+/*************************************************************************************************/
+SocketType WiconnectSocket::getType()
+{
+    return type;
+}
+
+/*************************************************************************************************/
+const char* WiconnectSocket::getHost()
+{
+    return host;
+}
+
+/*************************************************************************************************/
+uint16_t WiconnectSocket::getLocalPort()
+{
+    return localPort;
+}
+
+/*************************************************************************************************/
+uint16_t WiconnectSocket::getRemotePort()
+{
+    return remotePort;
+}
+
+/*************************************************************************************************/
+uint8_t WiconnectSocket::getHandle()
+{
+    return handle;
+}
+
+
+/*************************************************************************************************/
+WiconnectResult WiconnectSocket::close()
+{
+    WiconnectResult result;
+    CHECK_CONNECTED();
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    result = wiconnect->sendCommand("close %d", handle);
+
+    if(result != WICONNECT_PROCESSING)
+    {
+        connected = false;
+        wiconnect->socketClosedCallback(this);
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult WiconnectSocket::poll(bool *rxDataAvailablePtr, bool autoClose)
+{
+    WiconnectResult result;
+    int32_t status;
+    bool autoClosed = false;
+
+    *rxDataAvailablePtr = false;
+
+    CHECK_CONNECTED();
+
+    if(rxBuffer.size > 0 && WICONNECT_IS_IDLE())
+    {
+        if(rxBuffer.ptr < &rxBuffer.buffer[rxBuffer.bytesPending])
+        {
+            *rxDataAvailablePtr = true;
+            return WICONNECT_SUCCESS;
+        }
+        else if(read() == WICONNECT_SUCCESS && (rxBuffer.ptr < &rxBuffer.buffer[rxBuffer.bytesPending]))
+        {
+            *rxDataAvailablePtr = true;
+            return WICONNECT_SUCCESS;
+        }
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("poll %d", handle)))
+    {
+        if(!WICONNECT_FAILED(result, wiconnect->responseToInt32(&status)))
+        {
+            if(status > 0)
+            {
+                if(status == 2 && enableAutoClose)
+                {
+                    autoClosed = autoClose;
+                    *rxDataAvailablePtr = false;
+                }
+                else
+                {
+                    *rxDataAvailablePtr = true;
+                }
+            }
+        }
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    // if we auto-closed, then block until everything is cleaned-up
+    if(autoClosed)
+    {
+        while(WICONNECT_IS_PROCESSING(result, close()))
+        {
+        }
+    }
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult WiconnectSocket::write(int length, bool flush)
+{
+    CHECK_CONNECTED();
+
+    if( txBuffer.size == 0)
+    {
+        return WICONNECT_UNSUPPORTED;
+    }
+    else if(length > txBuffer.size)
+    {
+        return WICONNECT_OVERFLOW;
+    }
+    txBuffer.bytesPending = length;
+
+    return flush ? flushTxBuffer() : WICONNECT_SUCCESS;
+}
+
+/*************************************************************************************************/
+WiconnectResult WiconnectSocket::write(const void* buffer, int length, bool flush)
+{
+    WiconnectResult result = WICONNECT_SUCCESS;
+    CHECK_CONNECTED();
+
+    if(txBuffer.size > 0)
+    {
+        const uint8_t *src = (const uint8_t *)buffer;
+
+        while(length > 0)
+        {
+            int bytesToWrite = MIN(length, txBuffer.size - txBuffer.bytesPending);
+            uint8_t *dst = (uint8_t*)&txBuffer.buffer[txBuffer.bytesPending];
+            memcpy(dst, src, bytesToWrite);
+            txBuffer.bytesPending += bytesToWrite;
+            length -= bytesToWrite;
+            src += bytesToWrite;
+
+            if((txBuffer.bytesPending >= txBuffer.size) &&
+                WICONNECT_FAILED(result, flushTxBuffer()))
+            {
+                 break;
+            }
+        }
+
+        if(flush && txBuffer.bytesPending > 0)
+        {
+            result = flushTxBuffer();
+        }
+    }
+    else
+    {
+        if(WICONNECT_IS_IDLE())
+        {
+            txBuffer.ptr = (uint8_t*)buffer;
+            txBuffer.bytesPending = length;
+        }
+
+        result = flushTxBuffer();
+    }
+
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult WiconnectSocket::read(void* buffer, uint16_t maxLength, uint16_t *bytesReadPtr)
+{
+    WiconnectResult result;
+
+    CHECK_CONNECTED();
+
+    if(rxBuffer.size > 0)
+    {
+        uint16_t bytesToRead = 0;
+        const uint16_t bufferedBytes = (&rxBuffer.buffer[rxBuffer.bytesPending] - rxBuffer.ptr);
+        if(bufferedBytes > 0)
+        {
+            bytesToRead = MIN(bufferedBytes, maxLength);
+            memcpy(buffer, rxBuffer.ptr, bytesToRead);
+            rxBuffer.ptr += bytesToRead;
+            *bytesReadPtr = bytesToRead;
+        }
+        if(rxBuffer.ptr >= &rxBuffer.buffer[rxBuffer.bytesPending])
+        {
+            clearRxBuffer();
+        }
+        if(bytesToRead > 0)
+        {
+            return WICONNECT_SUCCESS;
+        }
+    }
+
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand((char*)buffer, maxLength, "read %d %d", handle, maxLength)))
+    {
+        const uint16_t bytesRead = wiconnect->getLastCommandResponseLength();
+        enableAutoClose = (bytesRead == 0);
+        *bytesReadPtr = bytesRead;
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult WiconnectSocket::read(uint8_t **bufferPtr, uint16_t *bytesReadPtr)
+{
+    WiconnectResult result = WICONNECT_SUCCESS;
+
+    CHECK_CONNECTED();
+
+    if(rxBuffer.size == 0)
+    {
+        return WICONNECT_UNSUPPORTED;
+    }
+    else if(bufferPtr != NULL && bytesReadPtr == NULL)
+    {
+        return WICONNECT_BAD_ARG;
+    }
+
+    if(rxBuffer.ptr >= &rxBuffer.buffer[rxBuffer.bytesPending])
+    {
+        clearRxBuffer();
+    }
+
+    if(rxBuffer.bytesPending < rxBuffer.size)
+    {
+        const int bytesToRead = rxBuffer.size - rxBuffer.bytesPending;
+        char* ptr = (char*)&rxBuffer.buffer[rxBuffer.bytesPending];
+
+        CHECK_OTHER_COMMAND_EXECUTING();
+
+        loop:
+        if(bytesToRead > 0 && WICONNECT_SUCCEEDED(result, wiconnect->sendCommand(ptr, bytesToRead, "read %d %d", handle, bytesToRead)))
+        {
+            const uint16_t bytesRead = wiconnect->getLastCommandResponseLength();
+            enableAutoClose = (bytesRead == 0);
+            rxBuffer.bytesPending += bytesRead;
+        }
+
+        // if still processing and in non-blocking mode,
+        // then this api call must block until the command completes
+        if(result == WICONNECT_PROCESSING && wiconnect->nonBlocking)
+        {
+            goto loop;
+        }
+
+        CHECK_CLEANUP_COMMAND();
+    }
+
+    if(bufferPtr != NULL)
+    {
+        *bufferPtr = rxBuffer.buffer;
+        *bytesReadPtr = rxBuffer.bytesPending;
+        clearRxBuffer();
+    }
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult WiconnectSocket::getc(uint8_t *c)
+{
+    WiconnectResult result;
+
+    if(rxBuffer.size == 0)
+    {
+        return WICONNECT_UNSUPPORTED;
+    }
+
+    if(rxBuffer.bytesPending == 0 &&
+      WICONNECT_FAILED(result, read()))
+    {
+        return result;
+    }
+    else if(rxBuffer.ptr < &rxBuffer.buffer[rxBuffer.bytesPending])
+    {
+        *c = *rxBuffer.ptr;
+        ++rxBuffer.ptr;
+        return WICONNECT_SUCCESS;
+    }
+    else
+    {
+        clearRxBuffer();
+        return WICONNECT_ERROR;
+    }
+}
+
+/*************************************************************************************************/
+WiconnectResult WiconnectSocket::putc(uint8_t c, bool flush)
+{
+    WiconnectResult result = WICONNECT_SUCCESS;
+    CHECK_CONNECTED();
+
+    if(txBuffer.size == 0)
+    {
+        return WICONNECT_UNSUPPORTED;
+    }
+    else if(txBuffer.bytesPending < txBuffer.size)
+    {
+        uint8_t *ptr = (uint8_t*)&txBuffer.buffer[txBuffer.bytesPending];
+        *ptr = c;
+        ++txBuffer.bytesPending;
+
+        if(flush || txBuffer.bytesPending >= txBuffer.size)
+        {
+            result = flushTxBuffer();
+        }
+    }
+    else
+    {
+        result = WICONNECT_OVERFLOW;
+    }
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult WiconnectSocket::puts(const char *s, bool flush)
+{
+    const int len = strlen(s);
+    return write(s, len, flush);
+}
+
+/*************************************************************************************************/
+WiconnectResult WiconnectSocket::printf(const char* format, ...)
+{
+    WiconnectResult result = WICONNECT_SUCCESS;
+
+    CHECK_CONNECTED();
+    if(txBuffer.size == 0)
+    {
+        return WICONNECT_UNSUPPORTED;
+    }
+
+    const int available = txBuffer.size - txBuffer.bytesPending;
+    char *ptr = (char*)&txBuffer.buffer[txBuffer.bytesPending];
+    va_list args;
+    va_start(args, format);
+    const int len = vsnprintf(ptr, available, format, args);
+    if(len > available)
+    {
+        return WICONNECT_OVERFLOW;
+    }
+    else
+    {
+        txBuffer.bytesPending += len;
+    }
+
+    if(txBuffer.bytesPending >= txBuffer.size)
+    {
+        result = flushTxBuffer();
+    }
+
+    return result;
+}
+
+
+/*************************************************************************************************/
+WiconnectResult WiconnectSocket::flushTxBuffer()
+{
+    WiconnectResult result = WICONNECT_SUCCESS;
+
+    CHECK_CONNECTED();
+
+    if(txBuffer.size == 0)
+    {
+        CHECK_OTHER_COMMAND_EXECUTING();
+    }
+
+    if(txBuffer.bytesPending > 0)
+    {
+        loop:
+        result = wiconnect->sendCommand(ReaderFunc(readerCallback), &this->txBuffer, "write %u %u", handle, txBuffer.bytesPending);
+
+        // if still processing and in non-blocking mode and using a txtBuffer,
+        // then this api call must block until the command completes
+        if(result == WICONNECT_PROCESSING && wiconnect->nonBlocking && txBuffer.size > 0)
+        {
+            goto loop;
+        }
+    }
+
+    if(txBuffer.size == 0)
+    {
+        CHECK_CLEANUP_COMMAND();
+    }
+
+    if(result != WICONNECT_PROCESSING)
+    {
+        txBuffer.ptr = txBuffer.buffer;
+        txBuffer.bytesPending = 0;
+    }
+
+    return result;
+}
+
+
+
+/*************************************************************************************************/
+void WiconnectSocket::clearRxBuffer()
+{
+    rxBuffer.bytesPending = 0;
+    rxBuffer.ptr = rxBuffer.buffer;
+}
+
+/*************************************************************************************************/
+uint8_t* WiconnectSocket::getTxBuffer()
+{
+    return txBuffer.buffer;
+}
+/*************************************************************************************************/
+int WiconnectSocket::getTxBufferSize()
+{
+    return txBuffer.size;
+}
+/*************************************************************************************************/
+int WiconnectSocket::getTxBufferBytesPending()
+{
+    return txBuffer.bytesPending;
+}
+/*************************************************************************************************/
+uint8_t* WiconnectSocket::getRxBuffer()
+{
+    return rxBuffer.buffer;
+}
+/*************************************************************************************************/
+int WiconnectSocket::getRxBufferSize()
+{
+    return rxBuffer.size;
+}
+/*************************************************************************************************/
+int WiconnectSocket::getRxBufferBytesPending()
+{
+    return rxBuffer.bytesPending;
+}
+
+
+/*************************************************************************************************/
+WiconnectResult readerCallback(void *user, void *data, int maxReadSize, int *bytesRead)
+{
+    Buffer *txBuffer = (Buffer*)user;
+
+    if(txBuffer->bytesPending == 0)
+    {
+        *bytesRead = EOF;
+    }
+    else
+    {
+        const int bytesToWrite = MIN(maxReadSize, txBuffer->bytesPending);
+        memcpy(data, txBuffer->ptr, bytesToWrite);
+        txBuffer->ptr += bytesToWrite;
+        txBuffer->bytesPending -= bytesToWrite;
+        *bytesRead = bytesToWrite;
+    }
+
+    return WICONNECT_SUCCESS;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WiconnectUdpServer.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,145 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence:
+ *
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ */
+#include <stdarg.h>
+
+#include "Wiconnect.h"
+#include "internal/common.h"
+#include "api/StringUtil.h"
+
+
+#define CHECK_CONNECTED() if(!isConnected()) return WICONNECT_NOT_CONNECTED
+
+extern WiconnectResult readerCallback(void *user, void *data, int maxReadSize, int *bytesRead);
+
+
+/*************************************************************************************************/
+WiconnectUdpServer::WiconnectUdpServer(int rxBufferLen_, void *rxBuffer_, int txBufferLen_, void *txBuffer_) :
+WiconnectSocket(rxBufferLen_, rxBuffer_, txBufferLen_, txBuffer_)
+{
+}
+
+/*************************************************************************************************/
+WiconnectResult WiconnectUdpServer::getRemoteClient(uint32_t *ipAddress, uint16_t *port)
+{
+    WiconnectResult result;
+
+    CHECK_CONNECTED();
+    CHECK_OTHER_COMMAND_EXECUTING();
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->sendCommand("udps read -q")))
+    {
+        char *portStr = strchr(wiconnect->internalBuffer, ',');
+        if(portStr == NULL)
+        {
+            result = WICONNECT_RESPONSE_PARSE_ERROR;
+        }
+        else
+        {
+            *portStr++ = 0;
+            Wiconnect::strToIp(wiconnect->internalBuffer, ipAddress);
+            StringUtil::strToUint16(portStr, port);
+        }
+    }
+
+    CHECK_CLEANUP_COMMAND();
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult WiconnectUdpServer::setRemoteClient(const char* _host, uint16_t port)
+{
+    WiconnectResult result;
+    uint32_t ip;
+
+    if(WICONNECT_SUCCEEDED(result, wiconnect->lookup(_host, &ip)))
+    {
+        ip = htonl(ip); // due to a bug in the firmware, need to reserve byte order
+        Wiconnect::ipToStr(ip, host);
+        remotePort = port;
+    }
+
+    return result;
+}
+
+/*************************************************************************************************/
+WiconnectResult WiconnectUdpServer::setRemoteClient(uint32_t ip, uint16_t port)
+{
+    ip = htonl(ip); // due to a bug in the firmware, need to reserve byte order
+    Wiconnect::ipToStr(ip, host);
+    remotePort = port;
+    return WICONNECT_SUCCESS;
+}
+
+/*************************************************************************************************/
+WiconnectResult WiconnectUdpServer::flushTxBuffer()
+{
+    WiconnectResult result = WICONNECT_SUCCESS;
+
+    CHECK_CONNECTED();
+
+    if(txBuffer.size == 0)
+    {
+        CHECK_OTHER_COMMAND_EXECUTING();
+    }
+
+
+    if(txBuffer.bytesPending > 0)
+    {
+        loop:
+        if(host[0] != 0)
+        {
+            result = wiconnect->sendCommand(ReaderFunc(readerCallback), &this->txBuffer, "udps write %u %s %u", txBuffer.bytesPending, host, remotePort);
+        }
+        else
+        {
+            result = wiconnect->sendCommand(ReaderFunc(readerCallback), &this->txBuffer, "udps write %u", txBuffer.bytesPending);
+        }
+
+        // if still processing and in non-blocking mode and using a txtBuffer,
+        // then this api call must block until all the data is sent
+        if(result == WICONNECT_PROCESSING && wiconnect->nonBlocking && txBuffer.size > 0)
+        {
+            goto loop;
+        }
+    }
+
+    if(txBuffer.size == 0)
+    {
+        CHECK_CLEANUP_COMMAND();
+    }
+
+    if(result != WICONNECT_PROCESSING)
+    {
+        txBuffer.ptr = txBuffer.buffer;
+        txBuffer.bytesPending = 0;
+    }
+
+    return result;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/FileInterface.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,187 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+#include "WiconnectTypes.h"
+#include "types/FileList.h"
+
+
+/**
+ * @ingroup api_file_macro
+ * @brief The maximum filename size of a file on the WiConnect WiFi module filesystem
+ */
+#define FILE_NAME_MAX_SIZE 96
+
+/**
+ * @ingroup api_file_macro
+ * @def FILE_MAKE_VERSION(major, minor, patch, rc)
+ * @brief Combine <\a major>.<\a minor>.<\a patch>.<\a rc> and create version as a uint32_t
+ */
+#define FILE_MAKE_VERSION(major, minor, patch, rc) ((unsigned int)((major) << 27)|(unsigned int)((minor) << 21)|(unsigned int)((patch) << 8)|(unsigned int)((rc) << 0))
+/**
+ * @ingroup api_file_macro
+ * @def FILE_VERSION_ARGS(version)
+ * @brief Given a uint32_t \a version, return arguments for a variable argument function such as printf(). The format string is: %d.%d.%d.%d
+ */
+#define FILE_VERSION_ARGS(version) (unsigned int)((version >> 27) & 0x1F),(unsigned int)((version >> 21) & 0x3F),(unsigned int)((version >> 8) & 0x1FFF),(unsigned int)(version & 0xFF)
+
+
+namespace wiconnect {
+
+
+/**
+ * @ingroup api_file_types
+ *
+ * @brief The provides an interface for creating TCP/UDP/TLS/HTTP client sockets.
+ * A client socket connects to a remote server.
+ *
+ * @note This class is an interface to the Wiconnect class. It should never be
+ *       independently instantiated or the parent of another class.
+ */
+class FileInterface
+{
+public:
+    /**
+     * @ingroup api_file_methods
+     *
+     * @brief Create a file on the Wiconnect WiFi module filesystem.
+     *
+     * This creates a file on the module's filesystem. The file's name and size are required.
+     * Optionally specify the version, type and if it's essential (i.e. if it should never be automatically deleted, careful with
+     * this optional as it could cause the the module to not be able to update its firmware).
+     *
+     * When this method is executed, the file is created on the module then the 'reader' parameter callback is
+     * called until all the file data is read from the HOST and written to the module file.
+     *
+     * @param[in] reader Callback to be executed until all file data has been read from the HOST and written to the module
+     * @param[in] user This is supplied to the @ref ReaderFunc callback. It is not used by the library. Leave NULL if not needed.
+     * @param[in] name The name of the file to create
+     * @param[in] size The size in bytes of the file
+     * @param[in] version Optional, the version of the file, defaults to 1.0.0.0
+     * @param[in] type Optional, the file type, defaults to FILE_TYPE_MISC_FIX_LEN
+     * @param[in] isEssential Optional, specify if the file should never be automatically deleted during a firmware upgrade
+     * @param[in] checksum The CRC16 checksum of the file data. The module verifies the written data against this checksum
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult createFile(const ReaderFunc &reader, void *user, const char *name, uint32_t size, uint32_t version = 0, FileType type = FILE_TYPE_ANY, bool isEssential = false, int32_t checksum = -1);
+
+    /**
+     * @ingroup api_file_methods
+     *
+     * @brief Open a file on the Wiconnect WiFi module filesystem for reading.
+     *
+     * Once opened, the returned @ref WiconnectFile object may only be read.
+     *
+     * @param[out] file The @ref WiconnectFile object to read data from
+     * @param[in] name The name of the file to open
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult openFile(WiconnectFile &file, const char *name);
+
+    /**
+     * @ingroup api_file_methods
+     *
+     * @brief Delete a file for the Wiconnect WiFi module filesystem.
+     *
+     * @param[in] name The name of the file to delete
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult deleteFile(const char *name);
+
+    /**
+     * @ingroup api_file_methods
+     *
+     * @brief Delete a file for the Wiconnect WiFi module filesystem.
+     *
+     * @param[in] file The @ref WiconnectFile object of the file to delete
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult deleteFile(const WiconnectFile &file);
+
+    /**
+     * @ingroup api_file_methods
+     *
+     * @brief List the files on the Wiconnect WiFi module filesystem.
+     *
+     * This lists all the files on the filesystem.
+     * Optionally filter by one or more parameters:
+     * * name - list files only with given name. If the name started with the wildcard character '*', then
+     *          only the characters after it are used for filter.
+     *          Example:
+     *          @code
+     *          wiconnect.listFiles(fileList, "*.txt"); // only list files with '.txt' extension
+     *          @endcode
+     * * type - only list files with given type
+     * * version - only list file with given version
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult listFiles(FileList &list, const char *name = NULL, FileType type = FILE_TYPE_ANY, uint32_t version = 0);
+
+
+    // ------------------------------------------------------------------------
+
+
+    /**
+     * @ingroup conversion_util
+     *
+     * @brief Convert file version uint32 to string.
+     */
+    static const char* fileVersionIntToStr(uint32_t version, bool verbose = true, char *buffer = NULL);
+
+    /**
+     * @ingroup conversion_util
+     *
+     * @brief Convert string to file version uint32.
+     */
+    static bool fileVersionStrToInt(const char *versionStr, uint32_t *versionIntPtr);
+
+    /**
+     * @ingroup conversion_util
+     *
+     * Convert @ref FileType to string.
+     */
+    static const char* fileTypeToStr(FileType type);
+
+    /**
+     * @ingroup conversion_util
+     *
+     * @brief Convert @ref FileFlags to string.
+     */
+    static const char* fileFlagsToStr(FileFlags flags, char *buffer = NULL);
+
+protected:
+    FileInterface(Wiconnect *wiconnect);
+
+    WiconnectResult processFileList(char *responseStr, FileList &list, const char *name, FileType type, uint32_t version);
+private:
+    Wiconnect *wiconnect;
+};
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/GhmInterface.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,356 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence:
+ *
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+#include "Wiconnect.h"
+
+#include "api/types/WiconnectSocket.h"
+#include "api/types/GhmMessageList.h"
+
+/**
+ * @namespace wiconnect
+ */
+namespace wiconnect {
+
+/**
+ * @ingroup api_ghm_macros
+ * @brief Helper macro for adding an integer value to a @ref GhmElementArray
+ */
+#define GHM_ADD_INT(array, name, integerVal)            \
+{                                                       \
+    array.elementName = name;                           \
+    array.type = GHM_VALUE_INT;                         \
+    array.u.intValue = (uint32_t)integerVal;            \
+}
+
+
+/**
+ * @ingroup api_ghm_macros
+ * @brief Helper macro for adding a string value to a @ref GhmElementArray
+ */
+#define GHM_ADD_STR(array, name, stringVal)             \
+{                                                       \
+    array.elementName = name;                           \
+    array.type = GHM_VALUE_STR;                         \
+    array.u.strValue = (const char*)stringVal;          \
+}
+
+
+
+
+/**
+ * @ingroup api_ghm_types
+ *
+ * @brief The provides an interface for http://goHACK.me
+ *
+ * The goHACK.me API provided by WiConnect enables monitoring and control of your ACKme device.
+ * You can set up a goHACK.me account, then using goHACK.me commands and goHACK.me variables,
+ * you can activate your device and synchronize data, control and messages with the goHACK.me cloud service.
+ *
+ * More information here: http://wiconnect.ack.me/2.0/gohackme
+ *
+ * @note This class is an interface to the Wiconnect class. It should never be
+ *       independently instantiated or the parent of another class.
+ */
+class GhmInterface
+{
+public:
+
+    /**
+     * @ingroup api_ghm_activate
+     *
+     * @brief Download a device capabilities file to WiFi module's internal
+     *        file system.
+     *
+     * @param[in] capsNameOrCustomUrl Optional, specify the caps file name or URL to caps file
+     * @param[in] version Optional, version to set downloaded caps file as
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ghmDownloadCapabilities(const char *capsNameOrCustomUrl = NULL, uint32_t version = 0);
+
+    /**
+     * @ingroup api_ghm_activate
+     *
+     * @brief Activate WiFi module with http://goHACK.me
+     *
+     * @note You must first sign-up with http://goHACK.me before you can
+     *       activate the device. Go to http://goHACK.me to sign-up.
+     *
+     * @param[in] userName Your username
+     * @param[in] password Your password
+     * @param[in] capsFilename Optional, filename of existing capabilities file on module's internal file system.
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ghmActivate(const char *userName, const char *password, const char *capsFilename = NULL);
+
+    /**
+     * @ingroup api_ghm_activate
+     *
+     * @brief Deactivate WiFi module with http://goHACK.me
+     *
+     * @note You must first sign-up with http://goHACK.me before you can
+     *       deactivate the device. Go to http://goHACK.me to sign-up.
+     *
+     * @param[in] userName Your username
+     * @param[in] password Your password
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ghmDeactivate(const char *userName, const char *password);
+
+    /**
+     * @ingroup api_ghm_activate
+     *
+     * @brief Return if WiFi module is activated with http://goHACK.me
+     *
+     * @param[out] statusPtr Pointer to hold activation status.
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ghmIsActivated(bool *statusPtr);
+
+
+    // ------------------------------------------------------------------------
+
+
+    /**
+     * @ingroup api_ghm_com
+     *
+     * @brief Read control data from http://goHACK.me
+     *
+     * @note The WiFi module must first be activated. See @ref ghmActivate()
+     *
+     * @param[in] controlName The name of the control in the activated capabilities file.
+     * @param[in] valueStrPtr Pointer to pointer to hold control's string value
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ghmRead(const char *controlName, const char **valueStrPtr);
+
+    /**
+     * @ingroup api_ghm_com
+     *
+     * @brief Read control data from http://goHACK.me
+     *
+     * @note The WiFi module must first be activated. See @ref ghmActivate()
+     *
+     * @param[in] controlName The name of the control in the activated capabilities file.
+     * @param[in] valueIntPtr Pointer hold control's integer value
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ghmRead(const char *controlName, uint32_t *valueIntPtr);
+
+    /**
+     * @ingroup api_ghm_com
+     *
+     * @brief Read control data from http://goHACK.me
+     *
+     * @note The WiFi module must first be activated. See @ref ghmActivate()
+     *
+     * @param[in] controlName The name of the control in the activated capabilities file.
+     * @param[in] valueBuffer Buffer to hold control's string value
+     * @param[in] valueBufferLen Length of valueBuffer
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ghmRead(const char *controlName, char *valueBuffer, uint16_t valueBufferLen);
+
+    /**
+     * @ingroup api_ghm_com
+     *
+     * @brief Write stream or control data to http://goHACK.me
+     *
+     * @note The WiFi module must first be activated. See @ref ghmActivate()
+     *
+     * @param[in] elementName The name of the control or stream in the activated capabilities file.
+     * @param[in] strValue String value of control or stream
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ghmWrite(const char *elementName, const char *strValue);
+
+    /**
+     * @ingroup api_ghm_com
+     *
+     * @brief Write stream or control data to http://goHACK.me
+     *
+     * @note The WiFi module must first be activated. See @ref ghmActivate()
+     *
+     * @param[in] elementName The name of the control or stream in the activated capabilities file.
+     * @param[in] uintValue Unsigned integer value of control or stream
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ghmWrite(const char *elementName, uint32_t uintValue);
+
+    /**
+     * @ingroup api_ghm_com
+     *
+     * @brief Write stream or control data to http://goHACK.me
+     *
+     * @note The WiFi module must first be activated. See @ref ghmActivate()
+     *
+     * @param[in] elementName The name of the control or stream in the activated capabilities file.
+     * @param[in] intValue signed integer value of control or stream
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ghmWrite(const char *elementName, int32_t intValue);
+
+    /**
+     * @ingroup api_ghm_com
+     *
+     * @brief Write stream or control data to http://goHACK.me
+     *
+     * @note The WiFi module must first be activated. See @ref ghmActivate()
+     *
+     * @param[in] elementArray Array of stream and/or control values to send to http://goHACK.me
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ghmWrite(const GhmElementArray *elementArray);
+
+    /**
+     * @ingroup api_ghm_com
+     *
+     * @brief Synchronize WiFi module with http://goHACK.me
+     *
+     * @note The WiFi module must first be activated. See @ref ghmActivate()
+     *
+     * @param[in] type Type of synchronization. See @ref GhmSyncType
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ghmSynchronize(GhmSyncType type = GHM_SYNC_ALL);
+
+
+    // ------------------------------------------------------------------------
+
+
+    /**
+     * @ingroup api_ghm_msg
+     *
+     * @brief POST message to http://goHACK.me
+     *
+     * @note The WiFi module must first be activated. See @ref ghmActivate()
+     *
+     * @param[out] socket @ref WiconnectSocket used to send message data to http://goHACK.me
+     * @param[in] jsonFormatted If true, the input message data should be JSON formatted, else the message data should be ASCII formatted.
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ghmPostMessage(WiconnectSocket &socket, bool jsonFormatted=false);
+
+    /**
+     * @ingroup api_ghm_msg
+     *
+     * @brief GET message from http://goHACK.me
+     *
+     * @note The WiFi module must first be activated. See @ref ghmActivate()
+     *
+     * @param[out] socket @ref WiconnectSocket used to receive message data from http://goHACK.me
+     * @param[in] getType The additional message data to receive. See @ref GhmMessageGetType
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ghmGetMessage(WiconnectSocket &socket, GhmMessageGetType getType = GHM_MSG_GET_DATA_ONLY);
+
+    /**
+     * @ingroup api_ghm_msg
+     *
+     * @brief GET message from http://goHACK.me
+     *
+     * @note @ref ghmListMessages() must be called first before using this method.
+     *
+     * @note The WiFi module must first be activated. See @ref ghmActivate()
+     *
+     * @param[out] socket @ref WiconnectSocket used to receive message data from http://goHACK.me
+     * @param[in] listIndex The index of the message returned from ghmListMessages()
+     * @param[in] getType The additional message data to receive. See @ref GhmMessageGetType
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ghmGetMessage(WiconnectSocket &socket, uint8_t listIndex, GhmMessageGetType getType = GHM_MSG_GET_DATA_ONLY);
+
+    /**
+     * @ingroup api_ghm_msg
+     *
+     * @brief GET message from http://goHACK.me
+     *
+     * @note The WiFi module must first be activated. See @ref ghmActivate()
+     *
+     * @param[out] socket @ref WiconnectSocket used to receive message data from http://goHACK.me
+     * @param[in] msgId The http://goHACK.me message ID.
+     * @param[in] getType The additional message data to receive. See @ref GhmMessageGetType
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ghmGetMessage(WiconnectSocket &socket, const char *msgId, GhmMessageGetType getType = GHM_MSG_GET_DATA_ONLY);
+
+    /**
+     * @ingroup api_ghm_msg
+     *
+     * @brief Delete message from http://goHACK.me
+     *
+     * @note @ref ghmListMessages() must be called first before using this method.
+     *
+     * @note The WiFi module must first be activated. See @ref ghmActivate()
+     *
+     * @param[in] listIndex The index of the message returned from ghmListMessages()
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ghmDeleteMessage(uint8_t listIndex);
+
+    /**
+     * @ingroup api_ghm_msg
+     *
+     * @brief Delete message from http://goHACK.me
+     *
+     * @note The WiFi module must first be activated. See @ref ghmActivate()
+     *
+     * @param[in] msgId The http://goHACK.me message ID.
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ghmDeleteMessage(const char *msgId);
+
+    /**
+     * @ingroup api_ghm_msg
+     *
+     * @brief List available messages for device on http://goHACK.me
+     *
+     * @note The WiFi module must first be activated. See @ref ghmActivate()
+     *
+     * @param[out] msgList @ref GhmMessageList to hold received messages.
+     * @param[in] maxCount Optional, the maximum number of messages to receive. If 0,
+     *            receive all messages (max of 25).
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ghmListMessages(GhmMessageList &msgList, uint8_t maxCount = 0);
+
+
+protected:
+    GhmInterface(Wiconnect *wiconnect);
+
+    WiconnectResult ghmGetMessage(WiconnectSocket &socket, uint8_t listIndex, const char *msgId, GhmMessageGetType getType);
+    WiconnectResult processMessageList(char *resultStr, GhmMessageList &resultList);
+
+private:
+    Wiconnect *wiconnect;
+
+};
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/NetworkInterface.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,437 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+#include "WiconnectTypes.h"
+#include "api/types/ScanResultList.h"
+
+
+namespace wiconnect {
+
+
+#ifdef WICONNECT_USE_DEFAULT_STRING_BUFFERS
+#define ALLOW_NULL_STRING_BUFFER = NULL
+#else
+#define ALLOW_NULL_STRING_BUFFER
+#endif
+
+/**
+ * @ingroup api_network_types
+ *
+ * @brief The provides an interface for joining and/or creating a network.
+ * It provides other utilities such as scanning for networks, pinging a network,
+ * resolving a domain name to IP address.
+ *
+ * @note This class is an interface to the Wiconnect class. It should never be
+ *       independently instantiated or the parent of another class.
+ */
+class NetworkInterface
+{
+public:
+    /**
+     * @ingroup api_network_setup
+     *
+     * @brief Start the WiConnect WiFi module 'web setup' feature.
+     *
+     * This command has an optional background processing feature.
+     * Background processing is enabled if the completeHandler parameter
+     * is specified. If enabled, the library will poll the module every second
+     * for the web setup status (essentially it'll call isWebSetupRunning() every
+     * second in the background). When the web setup is no longer running the
+     * callback will be executed. The background processing is disabled when stopWebSetup()
+     * is called.
+     *
+     * @note only the 'result' parameter of the callback handler is valid.
+     *
+     * Refer to @ref setting_async_processing for more info.
+     *
+     * @param[in] ssid Optional, optionally set the SSID of module's softAp
+     * @param[in] password Optional, optionally set the WPA2-PSK password for the module'S softap
+     *                     Note: make an OPEN softAp, set this parameter to a null string (i.e. "")
+     * @param[in] completeHandler Optional, callback to be executed when module web setup completes.
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult startWebSetup(const char *ssid = NULL, const char *password = NULL, const Callback &completeHandler = Callback());
+
+    /**
+     * @ingroup api_network_setup
+     *
+     * @brief Stop the WiConnect WiFi module 'web setup' feature.
+     *
+     * This method should be called AFTER startWebSetup() to prematurely terminate
+     * web setup. Note that this is not needed if web setup completes by itself
+     * (i.e. if the user exits web setup from the webpage).
+     *
+     *  @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult stopWebSetup();
+
+    /**
+     * @ingroup api_network_setup
+     *
+     * @brief Return status of WiConnect WiFi module 'web setup' feature.
+     *
+     * This may be called at any time (whether web setpu has been stared or not).
+     *
+     * @param[out] isRunningPtr Pointer to bool to contain TRUE if web setup is running, FALSE else
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult isWebSetupRunning(bool *isRunningPtr);
+
+
+    // ------------------------------------------------------------------------
+
+
+    /**
+     * @ingroup api_network_wlan
+     *
+     * @brief Join a WiFi network.
+     *
+     * This command has an optional background processing feature.
+     * Background processing is enabled if the completeHandler parameter
+     * is specified. If enabled, the library will poll the module every second
+     * for the join status (essentially it'll call getNetworkStatus() every
+     * second in the background). When the module join sequence complete the callback will be executed.
+     * The background processing is disabled when leave() is called.
+     *
+     * * If completeHandler parameter is NOT specified:
+     *   This command will BLOCK/return WICONNECT_PROCESSING until the module has
+     *   either successfully joined the network or failed.
+     * * If the completeHandler parameter IS specified:
+     *   This command will return and use the background processing feature described above.
+     *
+     * @note only the 'result' parameter of the callback handler is valid.
+     *
+     * Refer to @ref setting_async_processing for more info.
+     *
+     * @param[in] ssid Optional, optionally set the SSID of the network to join
+     * @param[in] password Optional, optionally set the passkey of the network to join
+     *                     Note: to join an OPEN network, set this parameter to a null string (i.e. "")
+     * @param[in] completeHandler Optional, callback to be executed when the join sequence completes.
+     *                             The 'result' callback parameter contains the WiconnectResult of joining.
+     *                             The 'arg1' parameter is a @ref NetworkJoinResult of joining.
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult join(const char* ssid = NULL, const char *password = NULL, const Callback &completeHandler = Callback());
+
+    /**
+     * @ingroup api_network_wlan
+     *
+     * @brief Leave a WiFi network.
+     *
+     * This method may be called to either terminate a join sequence or
+     * leave a previously connected networked.
+     *
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult leave();
+
+    /**
+     * @ingroup api_network_wlan
+     *
+     * @brief Get connection status to WiFi network.
+     *
+     * Refer to @ref NetworkStatus for more info.
+     *
+     * @param[out] statusPtr Point to a @ref NetworkStatus which will hold current network status of module
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult getNetworkStatus(NetworkStatus *statusPtr);
+
+    /**
+     * @ingroup api_network_wlan
+     *
+     * @brief Get the result of joining the network
+     *
+     * Refer to @ref NetworkJoinResult for more info.
+     *
+     * @param[out] joinResultPtr Point to a @ref NetworkJoinResult which will hold the result of joining the network
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult getNetworkJoinResult(NetworkJoinResult *joinResultPtr);
+
+    /**
+     * @ingroup api_network_wlan
+     *
+     * @brief Get @ref NetworkSignalStrength of WiFi network module is connected
+     */
+    WiconnectResult getSignalStrength(NetworkSignalStrength *signalStrengthPtr);
+
+    /**
+     * @ingroup api_network_wlan
+     *
+     * @brief Get the RSSI in dBm of WiFi network
+     */
+    WiconnectResult getRssi(int32_t *rssiPtr);
+
+    /**
+     * @ingroup api_network_wlan
+     *
+     * @brief Get MAC address of the WiFi module
+     */
+    WiconnectResult getMacAddress(MacAddress *macAddress);
+
+
+    // ------------------------------------------------------------------------
+
+
+//    WiconnectResult startSoftAp(const char* ssid = NULL, const char *password = NULL, const Callback &clientConnectedCallback = Callback());
+//    WiconnectResult stopSoftAp();
+//    WiconnectResult getSoftApClientList();
+
+
+    // ------------------------------------------------------------------------
+
+
+    /**
+     * @ingroup api_network_util
+     *
+     * @brief Scan for available WiFi networks.
+     *
+     * The populate the supplied @ref ScanResultList with @ref ScanResult of each found network.
+     *
+     * Optionally only scan of specific channels by supplying a null terminated list of channels.
+     * Example:
+     * @code
+     * const uint8_t channelsToScan[] = {1, 6, 11, 0};
+     * @endcode
+     *
+     * @param[out] resultList List to populate with scan results.
+     * @param[in] channelList Optional, null terminated list of channels to scan.
+     * @param[in] ssid Optional, specific network name to scan for.
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult scan(ScanResultList &resultList, const uint8_t *channelList = NULL, const char* ssid = NULL);
+
+    /**
+     * @ingroup api_network_util
+     *
+     * @brief Ping a WiFi network.
+     *
+     * Optionally ping a specific server and return the time in milliseconds it took
+     * for the network to response. If no domain is supplied, the module pings to gateway
+     * (i.e router it's connected to).
+     *
+     * @param[in] domain Optional, the domain name to ping
+     * @param[out] timeMsPtr Optional, pointer to uint32 to hold time in milliseconds the ping took
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult ping(const char *domain = NULL, uint32_t *timeMsPtr = NULL);
+
+    /**
+     * @ingroup api_network_util
+     *
+     * @brief Resolve domain name into IP address.
+     *
+     * @param[in] domain The domain name to resolve
+     * @param[out] ipAddressPtr pointer to uint32 to hold resolved IP address. Note, the IP address is in network-byte-order.
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult lookup(const char *domain, uint32_t *ipAddressPtr);
+
+
+    // ------------------------------------------------------------------------
+
+
+    /**
+     * @ingroup api_network_settings
+     *
+     * @brief Set DHCP enabled.
+     *
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult setDhcpEnabled(bool enabled);
+
+    /**
+     * @ingroup api_network_settings
+     *
+     * @brief Get if DHCP enabled.
+     */
+    WiconnectResult getDhcpEnabled(bool *enabledPtr);
+
+    /**
+     * @ingroup api_network_settings
+     *
+     * @brief Set static IP settings
+     */
+    WiconnectResult setIpSettings(uint32_t ip, uint32_t netmask, uint32_t gateway);
+
+    /**
+     * @ingroup api_network_settings
+     *
+     * @brief Set static IP settings (with string parameters)
+     */
+    WiconnectResult setIpSettings(const char* ip, const char* netmask, const char* gateway);
+
+    /**
+     * @ingroup api_network_settings
+     *
+     * @brief Get network IP settings
+     */
+    WiconnectResult getIpSettings(uint32_t *ip, uint32_t *netmask, uint32_t *gateway);
+
+    /**
+     * @ingroup api_network_settings
+     *
+     * @brief Set static DNS Address
+     */
+    WiconnectResult setDnsAddress(uint32_t dnsAddress);
+
+    /**
+     * @ingroup api_network_settings
+     *
+     * @brief Get the static DNS address
+     */
+    WiconnectResult getDnsAddress(uint32_t *dnsAddress);
+
+    /**
+     * @ingroup api_network_settings
+     *
+     * @note This method is only supported in blocking mode.
+     *
+     * @brief Return the current IP address of the module if possible, else
+     *        return 0.0.0.0
+     * @param[in] buffer Optional, buffer to IP address string. If omitted,
+     *            the IP address string is stored in a local static buffer (this is non-reentrant!)
+     */
+    const char* getIpAddress(char *buffer ALLOW_NULL_STRING_BUFFER);
+
+
+    // ------------------------------------------------------------------------
+
+
+    /**
+     * @ingroup conversion_util
+     *
+     * @brief Convert string to IP address
+     */
+    static bool strToIp(const char *str, uint32_t *intPtr);
+
+    /**
+     * @ingroup conversion_util
+     *
+     * @brief Convert IP address to string
+     */
+    static const char* ipToStr(uint32_t ip, char *ipStrBuffer ALLOW_NULL_STRING_BUFFER);
+
+
+    /**
+     * @ingroup conversion_util
+     *
+     * @brief Convert @ref NetworkStatus to string
+     */
+    static const char* networkStatusToStr(NetworkStatus status);
+
+    /**
+     * @ingroup conversion_util
+     *
+     * @brief Convert @ref NetworkJoinResult to string
+     */
+    static const char* networkJoinResultToStr(NetworkJoinResult joinResult);
+
+    /**
+     * @ingroup conversion_util
+     *
+     * @brief Convert @ref NetworkSignalStrength to string
+     */
+    static const char* signalStrengthToStr(NetworkSignalStrength signalStrenth);
+
+    /**
+     * @ingroup conversion_util
+     *
+     * @brief Convert RSSI (in dBm) to @ref NetworkSignalStrength
+     */
+    static NetworkSignalStrength rssiToSignalStrength(int rssi);
+
+    /**
+     * @ingroup conversion_util
+     *
+     * @brief Convert string to @ref NetworkSecurity
+     */
+    static NetworkSecurity strToNetworkSecurity(const char *str);
+
+    /**
+     * @ingroup conversion_util
+     *
+     * @brief Convert @ref NetworkSecurity to string
+     */
+    static const char* networkSecurityToStr(NetworkSecurity security);
+
+    /**
+     * @ingroup conversion_util
+     *
+     * @brief Convert string @ref Ssid
+     */
+    static bool strToSsid(const char *str, Ssid *ssid);
+
+    /**
+     * @ingroup conversion_util
+     *
+     * @brief Convert @ref Ssid to string
+     */
+    static const char* ssidToStr(const Ssid *ssid, char *ssidStrBuffer ALLOW_NULL_STRING_BUFFER);
+
+    /**
+     * @ingroup conversion_util
+     *
+     * @brief Convert string @ref MacAddress
+     */
+    static bool strToMacAddress(const char *str, MacAddress *macAddress);
+
+    /**
+     * @ingroup conversion_util
+     *
+     * @brief Convert @ref MacAddress to string
+     */
+    static const char* macAddressToStr(const MacAddress *macAddress, char *macStrBuffer ALLOW_NULL_STRING_BUFFER);
+
+protected:
+    NetworkInterface(Wiconnect *wiconnect);
+
+    WiconnectResult processScanResults(char *resultStr, ScanResultList &resultList);
+
+#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+    Callback completeHandler;
+    PeriodicTimer monitorTimer;
+
+    void webSetupStatusMonitor();
+    void webSetupStatusCheckCallback(WiconnectResult result, void *arg1, void *arg2);
+
+    void joinStatusMonitor();
+    void joinStatusCheckCallback(WiconnectResult result, void *arg1, void *arg2);
+
+    //void scanCompleteCallback(WiconnectResult result, void *arg1, void *arg2);
+#endif
+
+private:
+    Wiconnect *wiconnect;
+};
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/README.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,320 @@
+/**
+ * @mainpage Library Overview
+ *
+ * @section Overview
+ * The WiConnect Library runs on a host MCU and controls a
+ * WiConnect enabled WiFi module. This library is essentially a
+ * programming API for the WiConnect serial command set. More infomation
+ * about the serial command set may be found here:
+ * <a href="http://wiconnect.ack.me" target="_blank">WiConnect Reference Guide</a>
+ *
+ * @section notes Important Notes
+ * - This class is implemented as a 'singleton'. This means it only needs to be
+ *   instantiated once.
+ * - The WiConnect library does NOT call the global 'new' or 'malloc' functions.
+ *   All memory allocation (if required) comes from a user supplied malloc function pointer or buffer
+ *
+ *
+ * @section features Library Settings
+ * The WiConnect Library has multiple settings so as to allow
+ * for the most flexibility within a user's application.
+ *
+ * Some of these configurations are as follows:
+ * - Blocking / Non-blocking
+ * - Dynamic / Static allocation
+ * - Asynchronous Processing
+ *
+ *
+ * @subsection setting_blocking_modes Blocking / Non-blocking Modes
+ * The WiConnect Library may be configured for either 'blocking' or
+ * 'non-blocking' operation:
+ * - blocking - API calls do not return until they complete successfully or timeout.
+ * - non-blocking - API calls return immediately. The caller should check the return code to see
+ *                  if the command is still processing, completed, or an error occurred. The caller
+ *                  should continue to call the API function (as often as possible) until it returns
+ *                  either a success or error code.
+ *
+ * @subsubsection setting_blocking_mode Blocking Mode
+ * In blocking mode, an API function will block until it completes.
+ * More details to come...
+ *
+ * @subsubsection setting_nonblocking_mode Non-Blocking Mode
+ * In non-blocking mode, an API function returns immediately.
+ * More details to come...
+ *
+ *
+ *
+ * @subsection setting_alloc Dynamic / Static Allocation
+ * There are two cases when memory allocation is required:
+ * - Buffer allocation
+ * - Class instantiation
+ *
+ * In both cases, either static or dynamic memory allocation may be used.
+ *
+ * In cases when memory allocation is needed, the API call requires a buffer pointer
+ * and length parameters. If both are supplied, the library uses the supplied external buffer.
+ * This is considered static allocation (however the buffer could have been dynamically allocated).
+ * The caller is responsible for maintaining the supplied buffer.
+ *
+ * If, however, only the buffer length is supplied and the buffer pointer is NULL
+ * the Wiconnect Library will call the user supplied malloc() function. This is considered
+ * dynamic allocation. In this case, the library will maintain the buffer and release it
+ * when necessary using the user supplied free() function.
+ *
+ * @note To use dynamic allocation the WiConnect Library must be compiled with
+ * @ref WICONNECT_ENABLE_MALLOC defined, and the Wiconnect() constructor must be
+ * supplied with pointers to malloc() and free() functions.
+ *
+ * @note The Wiconnect Library does NOT call the global 'new' operator. Classes that are
+ *       internally instantiated overload the 'new' operator and either call the user
+ *       supplied malloc() function or use the supplied static buffer.
+ *
+ *
+ * @subsection setting_async_processing Asynchronous Processing
+ * When applicable, the WiConnect Library will asynchronously process
+ * commands in the background. When the background processing completes, the
+ * supplied callback is called.
+ *
+ * User commands may also be executed in the background using the enqueueCommand()
+ * API function.
+ *
+ * @note The WiConnect Library must be compiled with @ref WICONNECT_ASYNC_TIMER_ENABLED
+ *       defined for background processing to be enabled.
+ *
+ *
+ *
+ * @section send_command_desc Sending Commands To WiFi Module
+ * More details to come...
+ *
+ *
+ */
+
+// ----------------------------------------------------------------------------
+
+/**
+ * @defgroup api_core Core
+ * @brief   This contains all core related operations
+ *
+ * @{
+ */
+
+/**
+ * @defgroup api_core_settings Settings Methods
+ * @brief    API getters/setters for core library settings
+ */
+
+/**
+ * @defgroup api_core_send_command Send Command Methods
+ * @brief    API methods for sending commands to WiConnect WiFi module
+ */
+
+/**
+ * @defgroup api_core_misc Miscellaneous Methods
+ * @brief    Other core methods
+ */
+
+/**
+ * @defgroup api_core_types Types
+ * @brief    Core Types
+ */
+
+
+/**
+ * @defgroup api_core_macro Macros
+ * @brief    Core macros
+ */
+
+/**
+ * @defgroup api_core_examples Examples
+ * @brief    Core examples
+ * * @ref ota/example.cpp
+ */
+
+// @}
+
+
+// ----------------------------------------------------------------------------
+
+/**
+ * @defgroup api_network Network
+ * @brief   This contains all network related operations
+ *
+ * @{
+ */
+
+/**
+ * @defgroup api_network_settings Settings Methods
+ * @brief    API getters/setters for module network settings
+ */
+
+/**
+ * @defgroup api_network_wlan WLAN Methods
+ * @brief    Methods for joining/leaving a WLAN
+ */
+
+/**
+ * @defgroup api_network_setup Web Setup Methods
+ * @brief    Methods for enabled/disabling module web setup
+ */
+
+/**
+ * @defgroup api_network_util Utility Methods
+ * @brief    Network utility methods
+ */
+
+/**
+ * @defgroup api_network_types Types
+ * @brief    Network Types
+ */
+
+/**
+ * @defgroup api_network_macros Macros
+ * @brief    Network specific macros
+ */
+
+/**
+ * @defgroup api_network_examples Examples
+ * @brief Network examples
+ * * @ref web_setup/example.cpp
+ * * @ref join/example.cpp
+ */
+
+// @}
+
+
+// ----------------------------------------------------------------------------
+
+/**
+ * @defgroup api_socket Socket
+ * @brief   This contains all socket related operations
+ *
+ * @{
+ */
+
+/**
+ * @defgroup api_socket_tcp TCP Methods
+ * @brief    TCP methods
+ */
+
+/**
+ * @defgroup api_socket_udp UDP Methods
+ * @brief    UDP methods
+ */
+
+/**
+ * @defgroup api_socket_tls TLS Methods
+ * @brief    TLS methods
+ */
+
+/**
+ * @defgroup api_socket_http HTTP Methods
+ * @brief    HTTP methods
+ */
+
+/**
+ * @defgroup api_socket_misc Miscellaneous Methods
+ * @brief    Miscellaneous socket methods
+ */
+
+/**
+ * @defgroup api_socket_types Types
+ * @brief    Socket Types
+ */
+
+/**
+ * @defgroup api_socket_macro Macros
+ * @brief    Socket specific macros
+ */
+
+/**
+ * @defgroup api_socket_examples Examples
+ * @brief    Socket examples
+ * * @ref http_get/example.cpp
+ * * @ref tcp_server/example.cpp
+ *
+ */
+
+// @}
+
+
+// ----------------------------------------------------------------------------
+
+/**
+ * @defgroup api_file File
+ * @brief   This contains all file related operations
+ *
+ * @{
+ */
+
+/**
+ * @defgroup api_file_methods Methods
+ * @brief    File methods
+ */
+
+/**
+ * @defgroup api_file_types Types
+ * @brief    File types
+ */
+
+/**
+ * @defgroup api_file_macro Macros
+ * @brief    API specific macros
+ */
+
+/**
+ * @defgroup api_file_examples Examples
+ * @brief    File examples
+ */
+
+// @}
+
+// ----------------------------------------------------------------------------
+
+/**
+ * @defgroup api_ghm goHACK.me
+ * @brief   This contains all goHACK.me related operations
+ *
+ * @{
+ */
+
+/**
+ * @defgroup api_ghm_activate Activation
+ * @brief    Methods for activating/deactivating the module with http://goHACK.me
+ */
+
+/**
+ * @defgroup api_ghm_com Read/Write
+ * @brief    Methods for reading & writing data from/to http://goHACK.me
+ */
+
+/**
+ * @defgroup api_ghm_msg Message
+ * @brief    Methods for getting, posting, listing, deleting messages wtih http://goHACK.me
+ */
+
+/**
+ * @defgroup api_ghm_types Types
+ * @brief    goHACK.me Types
+ */
+
+/**
+ * @defgroup api_ghm_macro Macros
+ * @brief    API specific macros
+ */
+
+/**
+ * @defgroup api_ghm_examples Examples
+ * @brief    goHACK.me examples
+ */
+
+// @}
+
+// ----------------------------------------------------------------------------
+
+/**
+ * @defgroup conversion_util Conversion Utilities
+ * @brief   This contains all the conversion utility static functions.
+ *
+ */
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/SocketInterface.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,375 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+#include "Wiconnect.h"
+#include "types/WiconnectSocket.h"
+#include "types/WiconnectUdpServer.h"
+
+#ifdef WICONNECT_GPIO_IRQ_ENABLED
+#include "types/SocketIrqHandlerMap.h"
+#endif
+
+/**
+ * @namespace wiconnect
+ */
+namespace wiconnect {
+
+#ifdef WICONNECT_GPIO_IRQ_ENABLED
+#define GPIO_IRQ_ARG_NC ,Pin irqPin = PIN_NC
+#define GPIO_IRQ_ARG ,Pin irqPin
+#define GPIO_IRQ_PARAM ,irqPin
+#else
+#define GPIO_IRQ_ARG_NC
+#define GPIO_IRQ_ARG
+#define GPIO_IRQ_PARAM
+#endif
+
+/**
+ * @ingroup api_socket_types
+ *
+ * @brief The provides an interface for creating TCP/UDP/TLS/HTTP client sockets.
+ * A client socket connects to a remote server.
+ *
+ * @note This class is an interface to the Wiconnect class. It should never be
+ *       independently instantiated or the parent of another class.
+ */
+class SocketInterface
+{
+public:
+    /**
+     * @ingroup api_socket_misc
+     *
+     * @brief Close all opened sockets.
+     *
+     * @note This closes all open sockets on the MODULE side.
+     *       Socket objects on the HOST side will be still open until
+     *       issuing a read/write command to the module using the socket handle.
+     *
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult closeAllSockets();
+
+#ifdef WICONNECT_GPIO_IRQ_ENABLED
+    /**
+     * @ingroup api_socket_misc
+     *
+     * @brief Register a host pin as an external interrupt. When the external interrupt is
+     * triggered, the supplied callback is executed.
+     *
+     * @note WICONNECT_GPIO_IRQ_ENABLED must be defined to use this feature
+     *
+     * This should be called before calling one of the connect methods below
+     * with an irqPin parameter.
+     *
+     * Basically how this works is:
+     * 1. The supplied irqPin is configured as an external interrupt pin.
+     * 2. A connection is opened and configured with the same irqPin. This
+     *   irqPin physically connected to a GPIO on the WiFi module.
+     * 3. When the WiFi module has data to send to the HOST it asserts the irqPin.
+     * 4. The irqPin interrupt executes and calls the supplied handler.
+     * 5. The handler should notify the HOST that the given irqPin has triggered
+     *    and have the associated socket read data from the module.
+     *
+     *  @note arg1 of the handler contains the irqPin
+     *
+     *
+     * @param[in] irqPin The HOST pin to configure as an external interrupt.
+     *                   This pin should be physically connected to a module GPIO.
+     * @param[in] handler Callback to be executed with the external irqPin interrupt triggers
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult registerSocketIrqHandler(Pin irqPin, const Callback &handler);
+
+    /**
+     * @ingroup api_socket_misc
+     *
+     * @brief Unregister a previously registered IRQ pin.
+     *
+     * This disables the given irqPin as an external interrupt.
+     * Refer to registerSocketIrqHandler() for more information.
+     *
+     * @param[in] irqPin The HOST pin to unregister
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult unregisterSocketIrqHandler(Pin irqPin);
+#endif
+
+    /**
+     * @ingroup api_socket_misc
+     *
+     * @brief Connect to remote server.
+     *
+     * This is the base method used by all the other connect methods.
+     *
+     * @param[out] socket @ref WiconnectSocket object of opened connection.
+     * @param[in] type The @ref SocketType of connection to open
+     * @param[in] host The host/IP address of the remote server
+     * @param[in] remortPort The port of the remote server
+     * @param[in] localPort The port of the module's side of the connection
+     * @param[in] args Depedent on the connection type
+     * @param[in] irqPin Data available external interrupt pin. See registerSocketIrqHandler() for more info
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult connect(WiconnectSocket &socket, SocketType type, const char *host, uint16_t remortPort, uint16_t localPort, const void *args GPIO_IRQ_ARG);
+
+
+    // ------------------------------------------------------------------------
+
+    /**
+     * @ingroup api_socket_tcp
+     *
+     * @brief Connect to remote TCP server.
+     *
+     * @param[out] socket TCP @ref WiconnectSocket object of opened connection.
+     * @param[in] host The host/IP address of the remote TCP server
+     * @param[in] remortPort The port of the remote server
+     * @param[in] irqPin Optional, Data available external interrupt pin. See registerSocketIrqHandler() for more info
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult tcpConnect(WiconnectSocket &socket, const char *host, uint16_t remortPort GPIO_IRQ_ARG_NC);
+
+
+    // ------------------------------------------------------------------------
+
+    /**
+     * @ingroup api_socket_tcp
+     *
+     * @brief Start internal TCP server and listen on specified port.
+     *
+     * @param[in] listeningPort The local port the server should listen on
+     * @param[in] maxClients Optional, the maximum simultaneous connected clients, 0 is default, 1-8 valid range
+     * @param[in] irqPin Optional, Data available external interrupt pin. See registerSocketIrqHandler() for more info
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult tcpListen(uint16_t listeningPort, int maxClients = 0 GPIO_IRQ_ARG_NC);
+
+
+    // ------------------------------------------------------------------------
+
+    /**
+     * @ingroup api_socket_tcp
+     *
+     * @brief Wait for next client to connect to TCP server.
+     *
+     * @param[in] socket Socket to connected client
+     * @param[in] timeoutMs Optional, specifiy maximum amount of time in ms to wait for a client
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult tcpAccept(WiconnectSocket &socket, uint32_t timeoutMs = WICONNECT_WAIT_FOREVER);
+
+
+    // ------------------------------------------------------------------------
+
+    /**
+     * @ingroup api_socket_tcp
+     *
+     * @brief Stop TCP server from listening on port. Close all connected clients.
+     *
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult tcpServerStop(void);
+
+
+    // ------------------------------------------------------------------------
+
+    /**
+     * @ingroup api_socket_tls
+     *
+     * @brief Connect to remote TLS server.
+     *
+     * @param[out] socket TLS @ref WiconnectSocket object of opened connection.
+     * @param[in] host The host/IP address of the remote TLS server
+     * @param[in] remortPort The port of the remote server
+     * @param[in] certFilename Optional, filename of certificate on module's file system
+     * @param[in] irqPin Optional, Data available external interrupt pin. See registerSocketIrqHandler() for more info
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult tlsConnect(WiconnectSocket &socket, const char *host, uint16_t remortPort, const char *certFilename = NULL GPIO_IRQ_ARG_NC);
+
+
+    // ------------------------------------------------------------------------
+
+    /**
+     * @ingroup api_socket_udp
+     *
+     * @brief Connect to remote UDP server.
+     *
+     * @param[out] socket UDP @ref WiconnectSocket object of opened connection.
+     * @param[in] host The host/IP address of the remote UDP server
+     * @param[in] remortPort The port of the remote server
+     * @param[in] localPort Optional, port of module's side of the connection
+     * @param[in] irqPin Optional, Data available external interrupt pin. See registerSocketIrqHandler() for more info
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult udpConnect(WiconnectSocket &socket, const char *host, uint16_t remortPort, uint16_t localPort = SOCKET_ANY_PORT GPIO_IRQ_ARG_NC);
+
+    /**
+     * @ingroup api_socket_udp
+     *
+     * @brief Start a UDP server listening on the given port
+     *
+     * @param[out] udpServer UDP @ref WiconnectUdpServer object listening server
+     * @param[in] listeningPort The port the UDP server listens on
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult udpListen(WiconnectUdpServer &udpServer, uint16_t listeningPort);
+
+
+    // ------------------------------------------------------------------------
+
+    /**
+     * @ingroup api_socket_http
+     *
+     * @brief Connect to remote HTTP server.
+     *
+     * This is the base method for the other HTTP methods.
+     *
+     * @section secure_http_connection Secure HTTP
+     * Each HTTP method is able to connect to a secure HTTP server. To do this,
+     * the URL string  parameter must start with 'https://'
+     * To connect to a secure HTTP server a TLS certificate is needed. The certificate
+     * is specified in the certFilename parameter of the method (or @ref HttpSocketArgs parameter).
+     * This is the filename of an existing certificate on the module file system.
+     *
+     * @note If the URL starts with 'https://' and no certificate filename is specified,
+     *       the module's default certificate is used.
+     *
+     * @param[out] socket HTTP @ref WiconnectSocket object of opened connection.
+     * @param[in] url URL of HTTP request
+     * @param[in] args Configuration @ref HttpSocketArgs for HTTP connection
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult httpConnect(WiconnectSocket &socket, const char *url, const HttpSocketArgs *args);
+
+    /**
+     * @ingroup api_socket_http
+     *
+     * @brief Issue HTTP GET Request
+     *
+     * This method has the open to only 'open' the connection (disabled by default). This means a connection
+     * to the remote HTTP server is opened, but the HTTP request isn't issued. This
+     * allow for addition data to be added to the request. For instance, use httpAddHeader() to add
+     * additional headers to the request.
+     * Use httpGetStatus() to issue the HTTP request and receive the HTTP response.
+     *
+     * @param[out] socket HTTP @ref WiconnectSocket object of opened connection.
+     * @param[in] url URL of HTTP GET request
+     * @param[in] openOnly Optional, if TRUE this will only open a connection to the server (it won't issue the request)
+     * @param[in] certFilename Optional, filename of existing TLS certificate on module's file system. See @ref secure_http_connection
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult httpGet(WiconnectSocket &socket, const char *url, bool openOnly = false, const char *certFilename = NULL);
+
+    /**
+     * @ingroup api_socket_http
+     *
+     * @brief Issue HTTP POST Request
+     *
+     * This method has the open to only 'open' the connection which enabled by default. This means a connection
+     * to the remote HTTP server is opened, but the HTTP request isn't issued. This
+     * allow for addition data to be added to the request. Use the returned @ref WiconnectSocket object's 'write' methods
+     * to add POST data to the request.
+     * When all POST data has been written, use httpGetStatus() to issue the HTTP request and receive the HTTP response.
+     *
+     * @param[out] socket HTTP @ref WiconnectSocket object of opened connection.
+     * @param[in] url URL of HTTP POST request
+     * @param[in] contextType The value to go into the 'content-type' HTTP header (e.g. 'application/json')
+     * @param[in] openOnly Optional, if FALSE this will immediately issue the POST request.
+     * @param[in] certFilename Optional, filename of existing TLS certificate on module's file system. See @ref secure_http_connection
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult httpPost(WiconnectSocket &socket, const char *url, const char *contextType, bool openOnly = true, const char *certFilename = NULL);
+
+    /**
+     * @ingroup api_socket_http
+     *
+     * @brief Issue HTTP HEAD Request
+     *
+     * @param[out] socket HTTP @ref WiconnectSocket object of opened connection.
+     * @param[in] url URL of HTTP HEAD request
+     * @param[in] certFilename Optional, filename of existing TLS certificate on module's file system. See @ref secure_http_connection
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult httpHead(WiconnectSocket &socket, const char *url, const char *certFilename = NULL);
+
+    /**
+     * @ingroup api_socket_http
+     *
+     * @brief Add HTTP header key/value pair to opened HTTP request.
+     *
+     * To use this function, the supplied @ref WiconnectSocket parameter must have been created
+     * using either httpGet() or httpPost() and the 'openOnly' parameter TRUE.
+     *
+     * This will add additional header to the HTTP request.
+     *
+     * Use httpGetStatus() to issue the request.
+     *
+     * @param[in] socket Opened socket to add additonal HTTP header
+     * @param[in] key Header key (e.g. 'content-type')
+     * @param[in] value Header value (e.g. 'application/json')
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult httpAddHeader(WiconnectSocket &socket, const char *key, const char *value);
+
+    /**
+     * @ingroup api_socket_http
+     *
+     * @brief Get the HTTP status code from HTTP request.
+     *
+     * This may be used to either issue an HTTP request of an opened HTTP connection
+     * or return the status code of a request already issued.
+     *
+     * @param[in] socket Opened socket to get http response status code
+     * @param[out] statusCodePtr Pointer to uint32 to hold http status code
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult httpGetStatus(WiconnectSocket &socket, uint32_t *statusCodePtr);
+
+protected:
+    SocketInterface(Wiconnect *wiconnect);
+    ~SocketInterface();
+
+#ifdef WICONNECT_GPIO_IRQ_ENABLED
+    SocketIrqHandlerMap irqHandlers;
+#endif
+
+    uint32_t serverConnectedClientList;
+
+    WiconnectResult pollForServerClient(uint8_t *handle = NULL, uint16_t *localPort = NULL, uint16_t *remotePort = NULL, uint32_t *ipAddress = NULL);
+
+    void socketClosedCallback(const WiconnectSocket *socket);
+
+    friend class GhmInterface;
+
+private:
+    Wiconnect *wiconnect;
+};
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/StringUtil.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,423 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+#include <string.h>
+#include <ctype.h>
+#include <stdint.h>
+#include <limits.h>
+
+
+#ifdef WICONNECT_USE_STRTOLL
+// Necessary to get strtoll in C99 mode.
+// http://sourceware.org/ml/newlib/2012/msg00425.html
+extern long long strtoll(const char *__n, char **__end_PTR, int __base);
+#endif
+
+
+class StringUtil
+{
+
+public:
+    /*************************************************************************************************/
+    // Helper to find an occurrence of a delimiter string,
+    // insert '\0' in its place and return string after
+    // the delimiter e.g.
+    //     if char s[] = "foo://bar";
+    //     - strchop(s, "://") returns "bar"
+    //     - s becomes "foo"
+    static char *chop(char *haystack, const char *needle)
+    {
+        if (!haystack)
+        {
+            return NULL;
+        }
+        char *end = strstr(haystack, needle);
+        if (end)
+        {
+            *end = '\0';
+            return end + strlen(needle);
+        }
+        return NULL;
+    }
+
+    /*************************************************************************************************/
+    // Check if string is non-null and non-empty.
+    static bool empty(const char *s)
+    {
+        return !(s && *s);
+    }
+
+    /*************************************************************************************************/
+    static bool isSpace(const char *s)
+    {
+        while(*s != 0)
+        {
+            if(!isspace((uint8_t)*s++))
+                return false;
+        }
+        return true;
+    }
+
+    /*************************************************************************************************/
+    // Convert null-terminated string to lower case.
+    // ASCII charset only.
+    static void toLower(char *s)
+    {
+        for (; *s; ++s)
+        {
+            *s = tolower((int) * s);
+        }
+    }
+
+    /*************************************************************************************************/
+    // Combination of strip left + right.
+    static char *strip(char *s, const char *chars)
+    {
+        return rightStrip(leftStrip(s, chars), chars);
+    }
+
+    /*************************************************************************************************/
+    // Strip string from the left.
+    // Returns pointer into the input string.
+    static char *leftStrip(char *s, const char *chars)
+    {
+        return s + strspn(s, chars);
+    }
+
+    /*************************************************************************************************/
+    // Strip string from the right.
+    // Modified in place.
+    static char *rightStrip(char *s, const char *chars)
+    {
+        char *end = s + strlen(s) - 1;
+        while (end > s && strstr(chars, end))
+        {
+            *end-- = '\0';
+        }
+        return s;
+    }
+
+    /*************************************************************************************************/
+    // Parse decimal integer and check if it's in bounds [min, max].
+    static bool parseInt(const char *s, intmax_t *result, intmax_t min, intmax_t max)
+    {
+        return parseBase(s, result, min, max, 10);
+    }
+
+    // Parse hexadecimal integer and check if it's in bounds [min, max].
+    static bool parseHex(const char *s, intmax_t *result, intmax_t min, intmax_t max)
+    {
+        return parseBase(s, result, min, max, 16);
+    }
+
+    /*************************************************************************************************/
+    static bool parseBase(const char *s, intmax_t *result, intmax_t min, intmax_t max, int base)
+    {
+        if (!s)
+        {
+            return false;
+        }
+        char *end;
+#ifdef WICONNECT_USE_STRTOLL
+        intmax_t value = strtoll(s, &end, base);
+#else
+        intmax_t value = strtol(s, &end, base);
+#endif
+        if (*end || value < min || value > max)
+        {
+            return false;
+        }
+        *result = value;
+        return true;
+    }
+
+    /*************************************************************************************************/
+    // Parse an long long integer.
+    static bool parseBool(const char *onoff, bool *var)
+    {
+        const char* const on_vals[] =
+        {
+                "1",
+                "on",
+                "true",
+                "yes",
+        };
+
+        for(uint8_t i = 0; i < ARRAY_COUNT(on_vals); ++i)
+        {
+            if(strcasecmp(on_vals[i], onoff) == 0)
+            {
+                *var = true;
+                return true;
+            }
+        }
+
+        const char* const off_vals[] =
+        {
+                "0",
+                "false",
+                "no",
+                "off",
+                NULL
+        };
+        for(uint8_t i = 0; i < ARRAY_COUNT(off_vals); ++i)
+        {
+            if(strcasecmp(off_vals[i], onoff) == 0)
+            {
+                *var = false;
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /*************************************************************************************************/
+    // convert binary data to hex string
+    static void binToHex(char *dst, int max_dst, const void *data, int data_len)
+    {
+        char *end = dst + max_dst - 1;
+        for (int i = 0; i < data_len; ++i)
+        {
+            if (dst < end)
+            {
+                dst += sprintf(dst, "%2.2x", ((uint8_t *)data)[i]);
+            }
+        }
+    }
+
+
+    /*************************************************************************************************/
+    // Parse binary data into hex string
+    // the input buffer MUST be len*2  long
+    // as the parsing is destructive and done in-place
+    static void binToHex(void *h, int len)
+    {
+        char *dst = (char*)h;
+        char *src= (char*)h+len;
+
+        memmove(src, dst, len);
+
+        while(len--)
+        {
+            sprintf(dst, "%2.2X", (unsigned int)(*src & 0xff));
+            dst += 2;
+            ++src;
+        }
+    }
+
+
+    /*************************************************************************************************/
+    // Parses hex representation of binary data destructively.
+    // Returns number of bytes parsed or -1 on error.
+    static int hexToBin(char *s)
+    {
+        int len, i, j;
+        len = strlen(s);
+        if (len % 2)
+        {
+            return -1;
+        }
+        for (i = j = 0; i < len; i += 2, j++)
+        {
+            const int num = hexToInt(&s[i]);
+            if(num == -1)
+                return -1;
+            s[j] = (char)num;
+        }
+        return j;
+    }
+
+    /*************************************************************************************************/
+    // hex string to integer, returns -1 on error
+    static int hexToInt(const char *hex_str)
+    {
+        int hi = hexToNibble(*hex_str);
+        int lo = hexToNibble(*(hex_str+1));
+        if (hi == -1 || lo == -1)
+        {
+            return -1;
+        }
+        return (hi << 4) | lo;
+    }
+
+    /*************************************************************************************************/
+    static int hexToNibble(char c)
+    {
+        if (c >= '0' && c <= '9')
+        {
+            return c - '0';
+        }
+        if (c >= 'a' && c <= 'f')
+        {
+            return 10 + (c - 'a');
+        }
+        if (c >= 'A' && c <= 'F')
+        {
+            return 10 + (c - 'A');
+        }
+        return -1;
+    }
+
+    /*************************************************************************************************/
+    static const char* uint32ToStr(char* intStrBuffer, int integer)
+    {
+        sprintf(intStrBuffer, "%u", integer);
+        return intStrBuffer;
+    }
+
+    /*************************************************************************************************/
+    static bool strToUint32(const char *str, uint32_t *uint32Ptr)
+    {
+        intmax_t r;
+        bool result = (str[0] == '0' && str[1] == 'x') ? StringUtil::parseHex(&str[2], &r, 0, UINT_MAX): StringUtil::parseInt(str, &r, 0, UINT_MAX);
+        *uint32Ptr = (uint32_t)r;
+        return result;
+    }
+
+
+    /*************************************************************************************************/
+    static bool strToUint16(const char *str, uint16_t *uint16Ptr)
+    {
+        intmax_t r;
+        bool result = StringUtil::parseInt(str, &r, 0, USHRT_MAX);
+        *uint16Ptr = (uint16_t)r;
+        return result;
+    }
+
+    /*************************************************************************************************/
+    static bool strToUint8(const char *str, uint8_t *uint8Ptr)
+    {
+        intmax_t r;
+        bool result = StringUtil::parseInt(str, &r, 0, UCHAR_MAX);
+        *uint8Ptr = (uint8_t)r;
+        return result;
+    }
+
+    /*************************************************************************************************/
+    static bool strToInt32(const char *str, int32_t *int32Ptr)
+    {
+        intmax_t r;
+        bool result = StringUtil::parseInt(str, &r, INT_MIN, INT_MAX);
+        *int32Ptr = (int32_t)r;
+        return result;
+    }
+
+    /*************************************************************************************************/
+    // uint32 hex string to uint32
+    static bool strHexToUint32(const char *strHex, uint32_t *uint32Ptr)
+    {
+        intmax_t r;
+        bool result = StringUtil::parseHex(strHex, &r, 0, UINT_MAX);
+        *uint32Ptr = (uint32_t)r;
+        return result;
+    }
+
+    /*************************************************************************************************/
+    static char *strtok_r(char *str, const char *delim, char **nextp)
+    {
+        char *ret;
+
+        if (str == NULL)
+        {
+            str = *nextp;
+        }
+
+        str += strspn(str, delim);
+
+        if (*str == '\0')
+        {
+            return NULL;
+        }
+
+        ret = str;
+
+        str += strcspn(str, delim);
+
+        if (*str)
+        {
+            *str++ = '\0';
+        }
+
+        *nextp = str;
+
+        return ret;
+    }
+
+    /*************************************************************************************************/
+    static int strncasecmp(const char *s1, const char *s2, int n)
+    {
+        if (n == 0)
+            return 0;
+
+        while (n-- != 0 && tolower(*s1) == tolower(*s2))
+        {
+            if (n == 0 || *s1 == '\0' || *s2 == '\0')
+                break;
+            s1++;
+            s2++;
+        }
+
+        return tolower(*(unsigned char *) s1) - tolower(*(unsigned char *) s2);
+    }
+
+    /*************************************************************************************************/
+    static int strcasecmp(const char *s1, const char *s2)
+    {
+        register const unsigned char *p1 = (const unsigned char *) s1;
+        register const unsigned char *p2 = (const unsigned char *) s2;
+        unsigned char c1, c2;
+
+        if (p1 == p2)
+            return 0;
+
+        do
+        {
+            c1 = tolower (*p1);
+            c2 = tolower (*p2);
+
+            if (c1 == '\0')
+                break;
+
+            ++p1;
+            ++p2;
+        }
+        while (c1 == c2);
+
+        if (UCHAR_MAX <= INT_MAX)
+            return c1 - c2;
+        else
+            /* On machines where 'char' and 'int' are types of the same size, the
+               difference of two 'unsigned char' values - including the sign bit -
+               doesn't fit in an 'int'.  */
+            return (c1 > c2 ? 1 : c1 < c2 ? -1 : 0);
+    }
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/WiconnectInterface.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,788 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+#include "WiconnectTypes.h"
+
+
+#include "types/LogFunc.h"
+#include "types/ReaderFunc.h"
+#include "types/Callback.h"
+#include "types/TimeoutTimer.h"
+#include "types/PeriodicTimer.h"
+#include "types/Gpio.h"
+#include "types/WiconnectSerial.h"
+
+#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+#include "types/QueuedCommand.h"
+#include "types/CommandQueue.h"
+#endif
+
+#include "NetworkInterface.h"
+#include "SocketInterface.h"
+#include "FileInterface.h"
+#include "GhmInterface.h"
+
+
+#ifdef WICONNECT_ENABLE_MALLOC
+/// These are optional arguments for host specific malloc/free
+#define WICONNECT_MALLOC_ARGS , void* (*malloc_)(size_t) = WICONNECT_DEFAULT_MALLOC, void (*free_)(void*) = WICONNECT_DEFAULT_FREE
+#else
+#define WICONNECT_MALLOC_ARGS
+#endif
+
+
+/**
+ * @namespace wiconnect
+ */
+namespace wiconnect {
+
+
+/**
+ * @ingroup api_core_types
+ *
+ * @brief The root WiConnect library class. This class
+ * inheriets all WiConnect functionality.
+ *
+ * This class is implemented as a 'singleton'. This means it
+ * only needs to be instantiated once. Subsequent class may either
+ * use the class instance or the static function: @ref Wiconnect::getInstance()
+ *
+ */
+class Wiconnect : public NetworkInterface,
+                  public SocketInterface,
+                  public FileInterface,
+                  public GhmInterface
+{
+public:
+
+    /**
+     * @brief WiConnect class constructor
+     *
+     * @note This should only be called once within a program as the WiConnect
+     *       library is implemented as a singleton.
+     *
+     * @note If this constructor is used, then all commands must be supplied with an external response buffer.
+     *       This means most the API functions will not work as they use the internal buffer.
+     *       It's recommended to use the other constructor that supplies an internal buffer. See @ref setting_alloc
+     *
+     * @param[in] serialConfig The serial (i.e. UART) configuration connected to a WiConnect module.
+     * @param[in] reset Optional, The pin connected to the WiConnect module reset signal. Default: No connection
+     * @param[in] wake Optional, The pin connected to the WiConnect module wake signal. Default: No connection
+     * @param[in] nonBlocking Optional, indicates if the API blocking mode. See @ref setting_blocking_modes
+     */
+    Wiconnect(const SerialConfig &serialConfig, Pin reset = PIN_NC, Pin wake = PIN_NC, bool nonBlocking = WICONNECT_DEFAULT_NONBLOCKING WICONNECT_MALLOC_ARGS);
+
+    /**
+     * @brief WiConnect class constructor
+     *
+     * @note This should only be called once within a program as the WiConnect
+     *       library is implemented as a singleton.
+     *
+     * @note This is the recommended construstor as it supplies the WiConnect library with an
+     *       internal buffer. Most API calls require the internal buffer.
+     *
+     * @param[in] serialConfig The serial (i.e. UART) configuration connected to a WiConnect module.
+     * @param[in] internalBufferSize The size of the internal buffer. If internalBuffer is NULL, then this size will be dynamically allocated. See @ref setting_alloc
+     * @param[in] internalBuffer Optional, a user allocated buffer. See @ref setting_alloc
+     * @param[in] reset Optional, The pin connected to the WiConnect module reset signal. Default: No connection
+     * @param[in] wake Optional, The pin connected to the WiConnect module wake signal. Default: No connection
+     * @param[in] nonBlocking Optional, indicates if the API blocking mode. See @ref setting_blocking_modes
+     */
+    Wiconnect(const SerialConfig &serialConfig, int internalBufferSize, void *internalBuffer = NULL, Pin reset = PIN_NC, Pin wake = PIN_NC, bool nonBlocking = WICONNECT_DEFAULT_NONBLOCKING WICONNECT_MALLOC_ARGS);
+    ~Wiconnect();
+
+
+    // ------------------------------------------------------------------------
+
+
+    /**
+     * @ingroup  api_core_misc
+     *
+     * @brief Get instance of previously instantiated Wiconnect Library
+     *
+     * @return Pointer to instance of @ref Wiconnect Library.
+     */
+    static Wiconnect* getInstance();
+
+    /**
+     * @ingroup  api_core_misc
+     *
+     * @brief Initialize library and communication link with WiConnect WiFi module.
+     *
+     * @note This function is always blocking regardless of configured mode.
+     *
+     * @param[in] bringNetworkUp Flag indicating if the module should try to bring the network up upon initialization.
+     * @return Result of initialization. See @ref WiconnectResult
+     */
+    WiconnectResult init(bool bringNetworkUp=false);
+
+    /**
+     * @ingroup  api_core_misc
+     *
+     * @brief De-initialize library.
+     */
+    void deinit();
+
+    /**
+     * @ingroup api_core_misc
+     *
+     * @brief Return TRUE if library is able to communicated with WiConnect WiFi module.
+     * FALSE else.
+     *
+     * @return TRUE if library can communicate with WiFi module, FALSE else.
+     */
+    bool isInitialized();
+
+    /**
+     * @ingroup api_core_misc
+     *
+     * @brief Toggle the WiConnect WiFi module reset signal.
+     *
+     * @note This only resets the module if the library was instantiated with the 'reset' pin
+     *       parameter in the Wiconnect::Wiconnect constructor.
+     * @note This method is always blocking. A small (1s) delay is added to ensure the module
+     *       has returned from reset and ready.
+     *
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult reset();
+
+    /**
+     * @ingroup api_core_misc
+     *
+     * @brief Toggle the WiConnect WiFi moduel wakeup signal.
+     *
+     * @note This only wakes the module if the library was instantiated with the 'wake' pin
+     *       parameter in the Wiconnect::Wiconnect constructor.
+     * @note This method is always blocking.
+     *
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult wakeup();
+
+    /**
+     * @ingroup api_core_misc
+     *
+     * @brief Flush any received data in serial RX buffer and terminate any commands on WiConnect WiFi module.
+     *
+     * The delayMs parameter is used as the delay between terminating commands on the module and flushing
+     * the serial RX buffer. This is needed because after terminating commands on the module, the module will
+     * returns a response. These responses are invalid at this point and should be flushed from the serial RX buffer.
+     *
+     * @param[in] delayMs Optional, if not specificed this only flushes the serial RX buffer.
+     */
+    void flush(int delayMs = 500);
+
+    /**
+     * @ingroup api_core_misc
+     *
+     * @brief Return current version of WiConnect WiFi module.
+     * @param[in] versionBuffer Optional, Buffer to hold received version string
+     * @param[in] versionBufferSize Optional, required if versionBuffer specified.
+     * @param[in] completeCallback Optional, callback when version is received. arg1 of callback contains version buffer pointer.
+     *
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult getVersion(char *versionBuffer = NULL, int versionBufferSize = 0, const Callback &completeCallback = Callback());
+
+
+    /**
+     * @ingroup api_core_misc
+     *
+     * @brief Update the wifi module's internal firmware.
+     * @param[in] forced Optional, If true, force update of all firmware files to latest version, else only update out-dated files.
+     * @param[in] versionStr Optional, If specified, update to specific firmware version, else update to latest version.
+     * @param[in] completeCallback Optional, callback when update is complete. 'result' callback argument contains result of update.
+     *
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult updateFirmware(bool forced = false, const char *versionStr = NULL, const Callback &completeCallback = Callback());
+
+
+    // ------------------------------------------------------------------------
+
+
+    /**
+     * @ingroup api_core_send_command
+     *
+     * @brief Send command to WiConnect WiFi module
+     *
+     * @note Refer to @ref send_command_desc for more info
+     *
+     * @param[in] completeCallback Callback when command completes. arg1 of callback contains responseBuffer pointer, arg2 contains the response length
+     * @param[in] responseBuffer Buffer to hold command response
+     * @param[in] responseBufferLen Length of responseBuffer
+     * @param[in] timeoutMs Maximum time in milliseconds this command should execute
+     * @param[in] reader Callback for reading data to be read from host and send to module during command
+     * @param[in] user User data struct used during read Callback. Library doesn't use this. Set NULL if not used.
+     * @param[in] cmd WiConnect command to send to module
+     * @param[in] vaList Varaible list of arguments
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult sendCommand(const Callback &completeCallback, char *responseBuffer, int responseBufferLen,
+                               TimerTimeout timeoutMs, const ReaderFunc &reader, void *user, const char *cmd, va_list vaList);
+    /**
+     * @ingroup api_core_send_command
+     *
+     * @brief Send command to WiConnect WiFi module
+     *
+     * @note Refer to @ref send_command_desc for more info
+     *
+     * @param[in] responseBuffer Buffer to hold command response
+     * @param[in] responseBufferLen Length of responseBuffer
+     * @param[in] timeoutMs Maximum time in milliseconds this command should execute
+     * @param[in] reader Callback for reading data to be read from host and send to module during command
+     * @param[in] user User data struct used during read Callback. Library doesn't use this. Set NULL if not used.
+     * @param[in] cmd WiConnect command to send to module
+     * @param[in] vaList Varaible list of arguments
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult sendCommand(char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const ReaderFunc &reader,
+                                void *user, const char *cmd, va_list vaList);
+
+    /**
+     * @ingroup api_core_send_command
+     *
+     * @brief Send command to WiConnect WiFi module
+     *
+     * @note Refer to @ref send_command_desc for more info
+     * @note This method supports variable arguments
+     *
+     * @param[in] responseBuffer Buffer to hold command response
+     * @param[in] responseBufferLen Length of responseBuffer
+     * @param[in] timeoutMs Maximum time in milliseconds this command should execute
+     * @param[in] reader Callback for reading data to be read from host and send to module during command
+     * @param[in] user User data struct used during read Callback. Library doesn't use this. Set NULL if not used.
+     * @param[in] cmd WiConnect command to send to module
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult sendCommand(char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const ReaderFunc &reader,
+                                void *user, const char *cmd, ...);
+
+    /**
+     * @ingroup api_core_send_command
+     *
+     * @brief Send command to WiConnect WiFi module
+     *
+     * This method uses the library internal buffer.
+     *
+     * @note Refer to @ref send_command_desc for more info
+     * @note This method supports variable arguments
+     *
+     * @param[in] timeoutMs Maximum time in milliseconds this command should execute
+     * @param[in] reader Callback for reading data to be read from host and send to module during command
+     * @param[in] user User data struct used during read Callback. Library doesn't use this. Set NULL if not used.
+     * @param[in] cmd WiConnect command to send to module
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult sendCommand(TimerTimeout timeoutMs, const ReaderFunc &reader, void *user, const char *cmd, ...);
+
+    /**
+     * @ingroup api_core_send_command
+     *
+     * @brief Send command to WiConnect WiFi module
+     *
+     * - This method uses the library internal buffer and
+     * - default timeout. See setCommandDefaultTimeout()
+     *
+     * @note Refer to @ref send_command_desc for more info
+     * @note This method supports variable arguments
+     *
+     * @param[in] reader Callback for reading data to be read from host and send to module during command
+     * @param[in] user User data struct used during read Callback. Library doesn't use this. Set NULL if not used.
+     * @param[in] cmd WiConnect command to send to module
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult sendCommand(const ReaderFunc &reader, void *user, const char *cmd, ...);
+
+    /**
+     * @ingroup api_core_send_command
+     *
+     * @brief Send command to WiConnect WiFi module
+     *
+     * @note Refer to @ref send_command_desc for more info
+     * @note This method supports variable arguments
+     *
+     * @param[in] responseBuffer Buffer to hold command response
+     * @param[in] responseBufferLen Length of responseBuffer
+     * @param[in] timeoutMs Maximum time in milliseconds this command should execute
+     * @param[in] cmd WiConnect command to send to module
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult sendCommand(char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const char *cmd, ...);
+
+    /**
+     * @ingroup api_core_send_command
+     *
+     * @brief Send command to WiConnect WiFi module
+     *
+     * @note Refer to @ref send_command_desc for more info
+     * @note This method supports variable arguments
+     *
+     * @param[in] completeCallback Callback when command completes. arg1 of callback contains responseBuffer pointer, arg2 contains the response length
+     * @param[in] responseBuffer Buffer to hold command response
+     * @param[in] responseBufferLen Length of responseBuffer
+     * @param[in] cmd WiConnect command to send to module
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult sendCommand(const Callback &completeCallback, char *responseBuffer, int responseBufferLen, const char *cmd, ...);
+
+    /**
+     * @ingroup api_core_send_command
+     *
+     * @brief Send command to WiConnect WiFi module
+     *
+     * @note Refer to @ref send_command_desc for more info
+     * @note This method supports variable arguments
+     *
+     * @param[in] responseBuffer Buffer to hold command response
+     * @param[in] responseBufferLen Length of responseBuffer
+     * @param[in] cmd WiConnect command to send to module
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult sendCommand(char *responseBuffer, int responseBufferLen, const char *cmd, ...);
+
+    /**
+     * @ingroup api_core_send_command
+     *
+     * @brief Send command to WiConnect WiFi module
+     *
+     * - This method uses the library internal buffer and
+     * - default timeout. See setCommandDefaultTimeout()
+     *
+     * @note Refer to @ref send_command_desc for more info
+     * @note This method supports variable arguments
+     *
+     * @param[in] completeCallback Callback when command completes. arg1 of callback contains responseBuffer pointer, arg2 contains the response length
+     * @param[in] cmd WiConnect command to send to module
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult sendCommand(const Callback &completeCallback, const char *cmd, ...);
+
+    /**
+     * @ingroup api_core_send_command
+     *
+     * @brief Send command to WiConnect WiFi module
+     *
+     * - This method uses the library internal buffer and
+     * - default timeout. See setCommandDefaultTimeout()
+     *
+     * @note Refer to @ref send_command_desc for more info
+     * @note This method supports variable arguments
+     *
+     * @param[in] cmd WiConnect command to send to module
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult sendCommand(const char *cmd, ...);
+
+    /**
+     * @ingroup api_core_send_command
+     *
+     * This method uses the library internal buffer
+     *
+     * @note Refer to @ref send_command_desc for more info
+     * @note This method supports variable arguments
+     *
+     * @param[in] completeCallback Callback when command completes. arg1 of callback contains responseBuffer pointer, arg2 contains the response length
+     * @param[in] timeoutMs Maximum time in milliseconds this command should execute
+     * @param[in] cmd WiConnect command to send to module
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult sendCommand(const Callback &completeCallback, TimerTimeout timeoutMs, const char *cmd, ...);
+
+    /**
+     * @ingroup api_core_send_command
+     *
+     * @brief Send command to WiConnect WiFi module
+     *
+     * This method uses the library internal buffer
+     *
+     * @note Refer to @ref send_command_desc for more info
+     * @note This method supports variable arguments
+     *
+     * @param[in] timeoutMs Maximum time in milliseconds this command should execute
+     * @param[in] cmd WiConnect command to send to module
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult sendCommand(TimerTimeout timeoutMs, const char *cmd, ...);
+
+    /**
+     * @ingroup api_core_send_command
+     *
+     * - This method uses the library internal buffer and
+     * - default timeout. See setCommandDefaultTimeout()
+     *
+     * @note Refer to @ref send_command_desc for more info
+     *
+     * @param[in] cmd WiConnect command to send to module
+     * @param[in] vaList Varaible list of arguments
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult sendCommand(const char *cmd, va_list vaList);
+
+    /**
+     * @ingroup api_core_send_command
+     *
+     * @brief Check the status of the currently executing command.
+     *
+     * Refer to @ref WiconnectResult for more information about the return code.
+     *
+     * @note This command is only applicable for non-blocking mode. Refer to @ref setting_blocking_modes.
+     *
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult checkCurrentCommand();
+
+    /**
+     * @ingroup api_core_send_command
+     *
+     * @brief Stop the currently executing command.
+     *
+     * @note This command is only applicable for non-blocking mode. Refer to @ref setting_blocking_modes.
+     */
+    void stopCurrentCommand();
+
+
+    // ------------------------------------------------------------------------
+
+
+    /**
+     * @ingroup api_core_misc
+     *
+     * @brief When the WiConnect WiFi module returns a response, it contains a
+     * response code in the header. This function converts the previous response code
+     * to a readable string.
+     *
+     * @return string representation of module response code
+     */
+    const char* getLastCommandResponseCodeStr();
+
+    /**
+     * @ingroup api_core_misc
+     *
+     * @brief Return the length in bytes of the previous response.
+     *
+     * @return length of previous response
+     */
+    uint16_t getLastCommandResponseLength();
+
+    /**
+     * @ingroup api_core_misc
+     *
+     * @brief Return pointer to internal response buffer.
+     *
+     * @return pointer to internal response buffer
+     */
+    char* getResponseBuffer();
+
+    /**
+     * @ingroup api_core_misc
+     *
+     * @brief Helper method to convert previous response to uint32
+     *
+     * @note This uses the internal response buffer.
+     *
+     * @param[out] uint32Ptr Pointer to hold result of conversion.
+     * @return Result of conversion. See @ref WiconnectResult
+     */
+    WiconnectResult responseToUint32(uint32_t *uint32Ptr);
+
+    /**
+     * @ingroup api_core_misc
+     *
+     * @brief Helper method to convert previous response to int32
+     *
+     * @note This uses the internal response buffer.
+     *
+     * @param[out] int32Ptr Pointer to hold result of conversion.
+     * @return Result of conversion. See @ref WiconnectResult
+     */
+    WiconnectResult responseToInt32(int32_t *int32Ptr);
+
+
+    // ------------------------------------------------------------------------
+
+    /**
+     * @ingroup api_core_settings
+     *
+     * @brief Set a module setting
+     *
+     * Refer to: http://wiconnect.ack.me/2.0/variables
+     * for a list of the available settings and descriptions
+     *
+     * @param settingStr String module setting name.
+     * @param value The integer value to set
+     *
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult setSetting(const char *settingStr, uint32_t value);
+
+    /**
+     * @ingroup api_core_settings
+     *
+     * @brief Set a module setting
+     *
+     * Refer to: http://wiconnect.ack.me/2.0/variables
+     * for a list of the available settings and descriptions
+     *
+     * @param settingStr String module setting name.
+     * @param value The string value to set
+     *
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult setSetting(const char *settingStr, const char *value);
+
+    /**
+     * @ingroup api_core_settings
+     *
+     * @brief Get a module setting
+     *
+     * Refer to: http://wiconnect.ack.me/2.0/variables
+     * for a list of the available settings and descriptions
+     *
+     * @param settingStr String module setting name.
+     * @param valuePtr Pointer to buffer to contain integer value
+     *
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult getSetting(const char *settingStr, uint32_t *valuePtr);
+
+    /**
+     * @ingroup api_core_settings
+     *
+     * @brief Get a module setting
+     *
+     * Refer to: http://wiconnect.ack.me/2.0/variables
+     * for a list of the available settings and descriptions
+     *
+     * @param settingStr String module setting name.
+     * @param valuePtr Pointer to hold pointer to internal API buffer containing retrieved setting result
+     *
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult getSetting(const char *settingStr, char **valuePtr);
+
+    /**
+     * @ingroup api_core_settings
+     *
+     * @brief Get a module setting
+     *
+     * Refer to: http://wiconnect.ack.me/2.0/variables
+     * for a list of the available settings and descriptions
+     *
+     * @param settingStr String module setting name.
+     * @param valueBuffer Buffer to hold retrieved setting result
+     * @param valueBufferLen The length of the input buffer
+     *
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult getSetting(const char *settingStr, char *valueBuffer, uint16_t valueBufferLen);
+
+
+    /**
+     * @ingroup api_core_settings
+     *
+     * @brief Sets if API calls are blocking or non-blocking.
+     *
+     * @param[in] blockingEnabled The new blocking value
+     */
+    void setBlockingEnabled(bool blockingEnabled);
+
+    /**
+     * @ingroup api_core_settings
+     *
+     * @brief Gets if API calls are blocking or non-blocking.
+     */
+    bool getBlockingEnabled(void);
+
+    /**
+     * @ingroup api_core_settings
+     *
+     * @brief Sets the default maximum time an API method may execute before
+     * terminating and return a timeout error code.
+     *
+     * @note All API methods (execpt some sendCommand()) use this default value.
+     *
+     * @param[in] timeoutMs Default command timeout in milliseconds
+     */
+    void setCommandDefaultTimeout(TimerTimeout timeoutMs);
+
+    /**
+     * @ingroup api_core_settings
+     *
+     * @brief Returns the current default maximum API execution time.
+     *
+     * @return Default command timeout in milliseconds
+     */
+    TimerTimeout getCommandDefaultTimeout();
+
+    /**
+     * @ingroup api_core_settings
+     *
+     * @brief Sets a mapping function used to convert from a host Pin to WiConnect WiFi module GPIO.
+     *
+     * @param[in] mapper Pin to GPIO mapper function pointer
+     */
+    void setPinToGpioMapper(PinToGpioMapper mapper);
+
+    /**
+     * @ingroup api_core_settings
+     *
+     * @brief Sets callback function used to debug WiConnect WiFi module RX/TX serial data.
+     *
+     * @param[in] logFunc Logging function pointer
+     */
+    void setDebugLogger(LogFunc logFunc);
+
+    /**
+     * @ingroup api_core_settings
+     *
+     * @brief Sets callback used when Wiconnect Library hits and internal assertion.
+     *
+     * @note This is mainly for debugging. There's nothing the callback can do to fix the assertion.
+     *
+     * @param[in] assertLogFunc Logging function pointer
+     */
+    void setAssertLogger(LogFunc assertLogFunc);
+
+    // ------------------------------------------------------------------------
+
+
+#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+    /**
+     * @ingroup api_core_send_command
+     *
+     * @brief Add user command to be executed asynchronously.
+     *
+     * Refer to @ref setting_async_processing for more info.
+     *
+     * @param[in] command Pointer to QueuedCommand to be executed asynchronously
+     * @param[in] commandCompleteHandler Callback to be executed when processing is complete.
+     * @return Result of method. See @ref WiconnectResult
+     */
+    WiconnectResult enqueueCommand(QueuedCommand *command, const Callback &commandCompleteHandler = Callback());
+
+    /**
+     * @ingroup api_core_settings
+     *
+     * @brief Set the period at which an asynchronous command should be processed.
+     *
+     * Refer to @ref setting_async_processing for more info.
+     *
+     * @param[in] periodMs Processing period in milliseconds
+     */
+    void setCommandProcessingPeriod(uint32_t periodMs);
+#endif
+
+
+    /**
+     * @ingroup conversion_util
+     *
+     * @brief Converts a @ref WiconnectResult to string representation.
+     *
+     * @param[in] wiconnectResult Result code
+     * @return String representaion of result code
+     */
+    static const char* getWiconnectResultStr(WiconnectResult wiconnectResult);
+
+protected:
+
+#ifdef WICONNECT_ENABLE_MALLOC
+    void* (*_malloc)(size_t);
+    void (*_free)(void *);
+    friend class QueuedCommand;
+    friend class WiconnectSerial;
+    friend class ScanResult;
+#endif
+
+    wiconnect::WiconnectSerial serial;
+    wiconnect::Gpio resetGpio;
+    wiconnect::Gpio wakeGpio;
+
+    volatile bool commandExecuting;
+    bool initialized;
+    bool nonBlocking;
+
+    PinToGpioMapper pinToGpioMapper;
+
+    char *internalBuffer;
+    int internalBufferSize;
+    bool internalBufferAlloc;
+    uint8_t internalProcessingState;
+    void *currentCommandId;
+
+    wiconnect::TimeoutTimer timeoutTimer;
+    TimerTimeout defaultTimeoutMs;
+
+    uint8_t commandHeaderBuffer[32];
+    char commandFormatBuffer[WICONNECT_MAX_CMD_SIZE];
+    uint8_t commandContext[96];
+
+    void prepare(void *internalBuffer, int internalBufferSize, bool nonBlocking);
+    bool configureModuleDataBus(void);
+    WiconnectResult inline receiveResponse();
+    WiconnectResult inline receivePacket();
+    void issueCommandCallback(WiconnectResult result);
+
+#ifdef WICONNECT_ENABLE_DEBUGGING
+    LogFunc debugLogger;
+#endif
+    LogFunc assertLogger;
+
+    void debugLog(const char *msg, ...);
+
+#ifdef WICONNECT_ASYNC_TIMER_ENABLED
+    wiconnect::PeriodicTimer commandProcessorTimer;
+    uint32_t commandProcessingPeriod;
+    CommandQueue commandQueue;
+    wiconnect::QueuedCommand *currentQueuedCommand;
+
+    void commandProcessingTimerHandler(void);
+    void processNextQueuedCommand();
+    void checkQueuedCommandTimeout();
+#endif
+
+    friend class NetworkInterface;
+    friend class SocketInterface;
+    friend class FileInterface;
+    friend class GhmInterface;
+    friend class GhmMessageList;
+    friend class GhmMessage;
+    friend class ScanResultList;
+    friend class WiconnectFile;
+    friend class WiconnectSocket;
+    friend class WiconnectUdpServer;
+};
+
+}
+
+
+#include "sdkTypes.h"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/WiconnectTypes.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,507 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+#include <stdint.h>
+#include <stdarg.h>
+#include <stddef.h>
+
+#include "sdk.h"
+
+/**
+ * @namespace wiconnect
+ *
+ * @brief The entire Wiconnect Library is contained within the 'wiconnect' namespace
+ */
+namespace wiconnect {
+
+
+#ifndef MIN
+/**
+ * @ingroup api_core_macro
+ * @def MIN(x,y)
+ * @brief Computes the minimum of \a x and \a y.
+ */
+#define MIN(x,y) ((x) < (y) ? (x) : (y))
+#endif
+#ifndef MAX
+/**
+ * @ingroup api_core_macro
+ * @def MAX(x,y)
+ * @brief Computes the maximum of \a x and \a y.
+ */
+#define MAX(x,y)  ((x) > (y) ? (x) : (y))
+#endif
+/**
+ * @ingroup api_core_macro
+ * @def ALIGN_n(x, n)
+ * @brief Align \a x to \a n bytes (\a n must be power of 2)
+ */
+#define ALIGN_n(x, n) ((((uint32_t)x) + ((n)-1)) & ~((n)-1))
+/**
+ * @ingroup api_core_macro
+ * @def ALIGN_8(x)
+ * @brief Align \a x to 8 bytes
+ */
+#define ALIGN_8(x) ALIGN_n(x, 8)
+/**
+ * @ingroup api_core_macro
+ * @def ALIGN_4(x)
+ * @brief Align \a x to 4 bytes
+ */
+#define ALIGN_4(x) ALIGN_n(x, 4)
+/**
+ * @ingroup api_core_macro
+ * @def ARRAY_COUNT(x)
+ * @brief Return number of elements in static array \a x
+ */
+#define ARRAY_COUNT(x) (sizeof (x) / sizeof *(x))
+
+
+
+/**
+ * @ingroup api_core_macro
+ * @def WICONNECT_FAILED(result, func)
+ * @brief Populates \a result with return value from \a func, returns TRUE if return value contains error.
+ */
+#define WICONNECT_FAILED(result, func) ((int)(result = (func)) < (int)wiconnect::WICONNECT_SUCCESS)
+
+/**
+ * @ingroup api_core_macro
+ * @def WICONNECT_SUCCEEDED(result, func)
+ * @brief Populates \a result with return value from \a func, returns TRUE if return value is WICONNECT_SUCCESS.
+ */
+#define WICONNECT_SUCCEEDED(result, func) ((result = (func)) == wiconnect::WICONNECT_SUCCESS)
+
+/**
+ * @ingroup api_core_macro
+ * @def WICONNECT_IS_PROCESSING(result, func)
+ * @brief Populates \a result with return value from \a func, returns TRUE if return value is WICONNECT_PROCESSING.
+ */
+#define WICONNECT_IS_PROCESSING(result, func) ((result = (func)) == wiconnect::WICONNECT_PROCESSING)
+
+/**
+ * @ingroup api_core_macro
+ * @brief The maximum command size that may be sent to the WiConnect WiFi module
+ */
+#define WICONNECT_MAX_CMD_SIZE 128
+/**
+ * @ingroup api_core_macro
+ * @brief The maximum WiConnect WiFi module version string size
+ */
+#define WICONNECT_MAX_VERSION_SIZE 96
+/**
+ * @ingroup api_core_macro
+ * @brief The maximum number of simulanteous opened sockets
+ */
+#define WICONNECT_MAX_SOCKETS 8
+/**
+ * @ingroup api_core_macro
+ * @brief The maximum server string length
+ */
+#define WICONNECT_MAX_HOST_SIZE 64
+/**
+ * @ingroup api_core_macro
+ * @brief The maximum Wiconnect Module flash filesystem filename length
+ */
+#define WICONNECT_MAX_FILENAME_SIZE 96
+/**
+ * @ingroup api_core_macro
+ * @brief Never timeout
+ */
+#define WICONNECT_WAIT_FOREVER 0xFFFFFFFFUL
+/**
+ * @ingroup api_core_macro
+ * @brief Timeout immediately
+ */
+#define WICONNECT_NO_WAIT 0
+/**
+ * @ingroup api_core_macro
+ * @brief Default firmware update timeout in ms
+ */
+#define WICONNECT_FIRMWARE_UPDATE_TIMEOUT 90000UL
+
+/**
+ * @ingroup api_socket_macro
+ * @brief Default which indicates to use the most optimal port
+ */
+#define SOCKET_ANY_PORT (uint16_t)0
+/**
+ * @ingroup api_socket_macro
+ * @brief Default which indicates to use the most optimal port
+ */
+#define SOCKET_INVALID_HANDLE ((uint8_t)0xFF)
+
+
+/**
+ * @ingroup api_core_types
+ * @brief API Result code
+ */
+typedef enum
+{
+    // Status Codes
+    WICONNECT_ABORTED               = 3,    ///< Command was aborted
+    WICONNECT_IDLE                  = 2,    ///< Library not processing any commands
+    WICONNECT_PROCESSING            = 1,    ///< Library processing current command
+    WICONNECT_SUCCESS               = 0,    ///< Command successfully completed
+
+    // Error codes
+    WICONNECT_ERROR                 = -1,   ///< Generic error
+    WICONNECT_CMD_RESPONSE_ERROR    = -2,   ///< Module returned error code
+    WICONNECT_NULL_BUFFER           = -3,   ///< Null buffer supplied
+    WICONNECT_NOT_INITIALIZED       = -4,   ///< Library not initialed
+    WICONNECT_OVERFLOW              = -5,   ///< Buffer overflowed
+    WICONNECT_TIMEOUT               = -6,   ///< Command timed out
+//    WICONNECT_RESPONSE_HANDLER_NULL = -7,   ///<
+    WICONNECT_RESPONSE_PARSE_ERROR  = -8,   ///< Failed to parse module response
+    WICONNECT_ANOTHER_CMD_EXECUTING = -9,   ///< Currently executing another command
+    WICONNECT_BAD_ARG               = -10,  ///< Bad argument supplied
+    WICONNECT_UNSUPPORTED           = -11,  ///< Command / parameter not supported
+    WICONNECT_PINNAME_TO_GPIO_MAPPER_NULL = -12,    ///< The pinToGpioMapper hasn't been set
+    WICONNECT_DUPLICATE             = -13,  ///< Duplicate value
+    WICONNECT_NOT_FOUND             = -14,  ///< Not found
+    WICONNECT_PINNAME_TO_GPIO_NO_MAPPING = -15, ///< No mapping found for given pin
+    WICONNECT_NOT_CONNECTED         = -16,  ///< Not connected
+    WICONNECT_UNDERFLOW             = -17,  ///< Data underflow
+    WICONNECT_MONITOR_NOT_AVAILABLE = -18,  ///< Background processing monitor is not available (i.e in use)
+    WICONNECT_NOT_OPENED_FOR_READING = -19, ///< The file is not open for reading
+} WiconnectResult;
+
+
+
+/**
+ * @ingroup types_core
+ * @brief Function pointer for mapping from a host pin to a WiConnect Module GPIO.
+ *
+ * @param[in] pin A host pin
+ * @return The corresponding WiConnect Module GPIO (which the given pin is physically connected).
+ *         Return -1 if no mapping is available.
+ */
+typedef int8_t (*PinToGpioMapper)(Pin pin);
+
+/**
+ * @ingroup types_core
+ * @brief Timeout type
+ */
+typedef unsigned long TimerTimeout;
+
+
+/**
+ * @brief Generic buffer type
+ *
+ * @note Internal use only
+ */
+typedef struct
+{
+    int size;
+    uint8_t *buffer;
+    uint8_t *ptr;
+    int bytesPending;
+    bool allocated;
+} Buffer;
+
+
+// ----------------------------------------------------------------------------
+
+
+
+/**
+ * @ingroup api_network_types
+ * @brief Network connection status
+ */
+typedef enum
+{
+    NETWORK_STATUS_DOWN,            ///< Not connected to network
+    NETWORK_STATUS_WIFI_ONLY,       ///< Connected to network but don't have IP address
+    NETWORK_STATUS_UP,              ///< Conntected to network and have IP address
+    NETWORK_STATUS_JOINING          ///< Joining a network
+} NetworkStatus;
+
+/**
+ * @ingroup api_network_types
+ * @brief Network connection status
+ */
+typedef enum
+{
+    NETWORK_JOIN_RESULT_NONE,           ///< Haven't attempted to join
+    NETWORK_JOIN_RESULT_SUCCESS,        ///< Successfully joined the network
+    NETWORK_JOIN_RESULT_JOINING,        ///< Currently attempting to join
+    NETWORK_JOIN_RESULT_NO_SSID,        ///< The SSID has not be configured
+    NETWORK_JOIN_RESULT_NO_PASSWORD,    ///< The network requires a password and none has been set
+    NETWORK_JOIN_RESULT_BAD_SECURITY,   ///< The specified security type is not supported by the network
+    NETWORK_JOIN_RESULT_NOT_FOUND,      ///< The network with the configured SSID was not found
+    NETWORK_JOIN_RESULT_FAILED,         ///< Failed to join the network
+    NETWORK_JOIN_RESULT_ABORTED,        ///< Joining was aborted (via command)
+} NetworkJoinResult;
+
+/**
+ * @ingroup api_network_types
+ * @brief Network RSSI signal level
+ */
+typedef enum
+{
+    NETWORK_RSSI_EXCELLENT              = 0,    ///< \> -20 dBm
+    NETWORK_RSSI_VERY_GOOD              = 1,    ///< \> -35 dBm
+    NETWORK_RSSI_GOOD                   = 2,    ///< \> -50 dBm
+    NETWORK_RSSI_POOR                   = 3,    ///< \> -70 dBm
+    NETWORK_RSSI_VERY_POOR              = 4,    ///< < -71 dBm
+    NETWORK_RSSI_UNKNOWN                = 5     ///< Not available
+} NetworkSignalStrength;
+
+/**
+ * @ingroup api_network_types
+ * @brief Network security type
+ */
+typedef enum
+{
+    NETWORK_SECURITY_OPEN,
+    NETWORK_SECURITY_WEP_PSK,
+    NETWORK_SECURITY_WPA_AES_PSK,
+    NETWORK_SECURITY_WPA_TKIP_PSK,
+    NETWORK_SECURITY_WPA2_AES_PSK,
+    NETWORK_SECURITY_WPA2_MIXED_PSK,
+    NETWORK_SECURITY_WPA2_TKIP_PSK,
+    NETWORK_SECURITY_UNKNOWN
+} NetworkSecurity;
+
+/**
+ * @ingroup api_network_types
+ * @brief Network SSID type
+ */
+typedef struct
+{
+    uint8_t val[32];        ///< The raw data of the SSID (not necessarily a string)
+    uint8_t len;            ///< The length in bytes of the SSID raw data
+} Ssid;
+
+/**
+ * @ingroup api_network_types
+ * @brief Network MAC Address type
+ */
+typedef struct
+{
+    uint8_t octet[6];
+} MacAddress;
+
+/**
+ * @ingroup api_network_types
+ * @brief Buffer to hold a MAC address string
+ */
+typedef char MacAddressStrBuffer[18];
+
+/**
+ * @ingroup api_network_types
+ * @brief Buffer to hold a SSID string
+ */
+typedef char SsidStrBuffer[129];
+
+/**
+ * @ingroup api_network_types
+ * @brief Buffer to hold an IP address string
+ */
+typedef char IpStrBuffer[18];
+
+
+// ----------------------------------------------------------------------------
+
+
+/**
+ * @ingroup api_socket_types
+ * @brief Socket type
+ */
+typedef enum
+{
+    SOCKET_TYPE_UNKNOWN,    ///< Socket type not known
+    SOCKET_TYPE_TCP,        ///< TCP Socket type
+    SOCKET_TYPE_TLS,        ///< TLS Socket type
+    SOCKET_TYPE_UDP,        ///< UDP Socket type
+    SOCKET_TYPE_HTTP,       ///< HTTP Socket type,
+    SOCKET_TYPE_UDPS,       ///< UDP Server Socket type
+    SOCKET_TYPE_GHM,        ///< goHACK.me message type
+} SocketType;
+
+/**
+ * @ingroup api_socket_types
+ * @brief HTTP Socket sub-type
+ */
+typedef enum
+{
+    SOCKET_HTTP_GET,        ///< HTTP GET Request socket type
+    SOCKET_HTTP_POST,       ///< HTTP POST Request socket type
+    SOCKET_HTTP_HEAD,       ///< HTTP HEAD Request socket type
+} HttpSocketType;
+
+/**
+ * @ingroup api_socket_types
+ * @brief Struct for hold HTTP socket configuration
+ */
+typedef struct
+{
+    const char *contextType;    ///< A POST Request 'context-type' value
+    const char *certName;       ///< TLS certificate filename on module flash file system
+    bool openOnly;              ///< Only open the connection, don't issue the request yet
+    HttpSocketType type;        ///< The type of HTTP connection
+} HttpSocketArgs;
+
+
+// ----------------------------------------------------------------------------
+
+
+/**
+ * @ingroup api_file_types
+ * @brief File flags type
+ */
+typedef enum
+{
+    FILE_FLAG_NONE          = 0,            ///< No flags
+
+    FILE_FLAG_VALID         = (1 << 0),     ///< File valid
+    FILE_FLAG_EXECUTABLE    = (1 << 1),     ///< File executable
+    FILE_FLAG_ENCRYPTED     = (1 << 2),     ///< File encrypted
+    FILE_FLAG_INTERNAL      = (1 << 3),     ///< File on internal module flash
+    FILE_FLAG_BOOTABLE      = (1 << 4),     ///< File bootable
+    FILE_FLAG_USER          = (1 << 5),     ///< File created by user
+    FILE_FLAG_ESSENTIAL     = (1 << 6),     ///< File is essential
+
+    FILE_FLAG_INVALID       = 0xFFFF        ///< File flags invalid
+} FileFlags;
+
+/**
+ * @ingroup api_file_types
+ * @brief File type type
+ */
+typedef enum
+{
+    FILE_TYPE_UPGRADE_APP   = 0x00,         ///< Internal upgrade application
+    FILE_TYPE_WIFI_FW       = 0x01,         ///< Wifi firmware binary
+
+    FILE_TYPE_REGULAR_APP   = 0x81,         ///< Regular application
+
+    FILE_TYPE_USER_RANGE_START = 150,       ///< User type start index
+    FILE_TYPE_USER_RANGE_END = 199,         ///< User type end index
+
+    FILE_TYPE_TEMPORY       = 0xF9,         ///< Temporary file
+    FILE_TYPE_GPIO_CONFIG   = 0xFA,         ///< GPIO configuration file
+    FILE_TYPE_COMMAND_HELP  = 0xFB,         ///< WiConnect command help file
+    FILE_TYPE_SDC_CAPS      = 0xFC,         ///< SDC / goHACK.me file
+    FILE_TYPE_SETUP_SCRIPT  = 0xFD,         ///< Setup script file
+    FILE_TYPE_MISC_FIX_LEN  = 0xFE,         ///< Miscellaneous fixed length file
+    FILE_TYPE_UNKNOWN       = 0xFF,         ///< Unknown file type
+    FILE_TYPE_ANY           = FILE_TYPE_UNKNOWN
+} FileType;
+
+
+// ----------------------------------------------------------------------------
+
+/**
+ * @ingroup api_ghm_types
+ * @brief goHACK.me stream or control value type
+ */
+typedef enum
+{
+    GHM_VALUE_INT,
+    GHM_VALUE_STR
+} GhmElementValueType;
+
+/**
+ * @ingroup api_ghm_types
+ * @brief goHACK.me stream or control value
+ */
+typedef struct
+{
+    const char *elementName;
+    GhmElementValueType type;
+    union
+    {
+       const char *strValue;
+       uint32_t intValue;
+    } u;
+} GhmElement;
+
+/**
+ * @ingroup api_ghm_types
+ * @brief Array of goHACK.me stream or control values
+ */
+typedef struct
+{
+    uint16_t count;
+    GhmElement elements[1];
+} GhmElementArray;
+
+/**
+ * @ingroup api_ghm_types
+ * @brief goHACK.me sychronization type
+ */
+typedef enum
+{
+    GHM_SYNC_ALL,           ///< Push and pull all streams and controls
+    GHM_SYNC_PUSH_ONLY,     ///< Only push streams and controls to remote server
+    GHM_SYNC_PULL_ONLY      ///< Only pull controls from remote server
+} GhmSyncType;
+
+/**
+ * @ingroup api_ghm_types
+ * @brief goHACK.me message GET type
+ */
+typedef enum
+{
+    GHM_MSG_GET_DATA_ONLY,  ///< Only GET the message data
+    GHM_MSG_GET_BODY,       ///< Get the message body. This is JSON formatted.
+    GHM_MSG_GET_ALL         ///< Get entire message. This includes headers. Is JSON formatted.
+} GhmMessageGetType;
+
+
+
+// ----------------------------------------------------------------------------
+
+
+// Forward declarations
+
+class Wiconnect;
+class TimeoutTimer;
+class PeriodicTimer;
+class QueuedCommand;
+class CommandQueue;
+class LogFunc;
+class ReaderFunc;
+class ReaderFuncCallback;
+class Callback;
+class ScanResult;
+class ScanResultList;
+class WiconnectSocket;
+class WiconnectSerial;
+class WiconnectFile;
+class FileList;
+class Gpio;
+class SocketIrqHandlerMap;
+class WiconnectUdpServer;
+class GhmMessageList;
+class GhmMessage;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/sdk.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,196 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+#define MBED_SDK
+
+#include "mbed.h"
+
+
+
+
+namespace wiconnect
+{
+
+/**
+ * @ingroup api_core_macro
+ * @brief When defined enables asynchronous command processing
+ */
+#define WICONNECT_ASYNC_TIMER_ENABLED
+/**
+ * @ingroup api_core_macro
+ * @brief When defined enables user supplied dynamic memory allocation
+ */
+#define WICONNECT_ENABLE_MALLOC
+/**
+ * @ingroup api_core_macro
+ * @brief When defined enables Host<->Wiconnect Module serial RX buffering
+ */
+#define WICONNECT_SERIAL_RX_BUFFER
+/**
+ * @ingroup api_core_macro
+ * @brief When defined enables certain conversion API functions to use a default buffer to store string
+ */
+#define WICONNECT_USE_DEFAULT_STRING_BUFFERS
+
+/**
+ * @ingroup api_core_macro
+ * @brief When defined enables external interrupts on specified gpios
+ */
+#define WICONNECT_GPIO_IRQ_ENABLED
+
+/**
+ * @ingroup api_core_macro
+ * @brief When WICONNECT_ENABLE_MALLOC defined, this is the default malloc function
+ */
+#define WICONNECT_DEFAULT_MALLOC malloc
+/**
+ * @ingroup api_core_macro
+ * @brief When WICONNECT_ENABLE_MALLOC defined, this is the default free function
+ */
+#define WICONNECT_DEFAULT_FREE free
+
+/**
+ * @ingroup api_core_macro
+ * @brief The default Host<->Wiconnect Module serial BAUD rate
+ */
+#define WICONNECT_DEFAULT_BAUD 115200
+/**
+ * @ingroup api_core_macro
+ * @brief The default command timeout (i.e max command executing time)
+ */
+#define WICONNECT_DEFAULT_TIMEOUT 3000 // ms
+/**
+ * @ingroup api_core_macro
+ * @brief When WICONNECT_ASYNC_TIMER_ENABLED, this specifies the max number of asynchronous commands that may be queued
+ */
+#define WICONNECT_MAX_QUEUED_COMMANDS 8
+/**
+ * @ingroup api_core_macro
+ * @brief When WICONNECT_ASYNC_TIMER_ENABLED, this specifies the period in milliseconds commands should be processed
+ */
+#define WICONNECT_DEFAULT_COMMAND_PROCESSING_PERIOD 50 // ms
+
+/**
+ * @ingroup api_core_macro
+ * @brief The default blocking mode of the Library.
+ */
+#define WICONNECT_DEFAULT_NONBLOCKING false
+
+/**
+ * @ingroup api_core_macro
+ * @brief If defined, enables low-level debugging
+ */
+#define WICONNECT_ENABLE_DEBUGGING
+
+
+// ----------------------------------------------------------------------------
+
+#define WICONNECT_GPIO_BASE_CLASS : DigitalOut
+#define WICONNECT_SERIAL_BASE_CLASS : RawSerial
+#define WICONNECT_PERIODIC_TIMER_BASE_CLASS : Ticker
+#define WICONNECT_EXTERNAL_INTERRUPT_GPIO_BASE_CLASS : InterruptIn
+
+#define WICONNECT_MAX_PIN_IRQ_HANDLERS 3
+
+
+/**
+ * @ingroup api_core_macro
+ * @brief Default value for a pin, Not connected
+ */
+#define PIN_NC NC
+
+/**
+ * @ingroup api_core_types
+ * @brief Pin name on HOST
+ */
+typedef PinName Pin;
+
+/**
+ * @ingroup api_core_types
+ * @brief Host<->Wiconnect Module serial configuration
+ */
+class SerialConfig
+{
+public:
+    Pin rx;
+    Pin tx;
+    Pin cts;
+    Pin rts;
+    int baud;
+    void *serialRxBuffer;
+    int serialRxBufferSize;
+
+    SerialConfig(Pin rx, Pin tx, Pin cts, Pin rts, int baud, int serialRxBufferSize, void *serialRxBuffer = NULL)
+    {
+        this->rx =rx;
+        this->tx =tx;
+        this->cts =cts;
+        this->rts =rts;
+        this->baud = baud;
+        this->serialRxBuffer =serialRxBuffer;
+        this->serialRxBufferSize =serialRxBufferSize;
+    }
+
+    SerialConfig(Pin rx, Pin tx, int serialRxBufferSize, void *serialRxBuffer = NULL)
+    {
+        this->rx =rx;
+        this->tx =tx;
+        this->cts = PIN_NC;
+        this->rts = PIN_NC;
+        this->baud = WICONNECT_DEFAULT_BAUD;
+        this->serialRxBuffer =serialRxBuffer;
+        this->serialRxBufferSize =serialRxBufferSize;
+    }
+
+    SerialConfig(Pin rx, Pin tx)
+    {
+        this->rx =rx;
+        this->tx =tx;
+        this->cts =PIN_NC;
+        this->rts =PIN_NC;
+        this->baud = WICONNECT_DEFAULT_BAUD;
+        this->serialRxBuffer =NULL;
+        this->serialRxBufferSize =0;
+    }
+
+};
+
+
+/**
+ * @ingroup api_core_macro
+ * @brief Function to stop processor for specified number of milliseconds
+ */
+#define delayMs(ms) wait_ms(ms)
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/sdkTypes.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,30 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence:
+ *
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ */
+
+#include "api/types/Socket/mBedSocketApi.h"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/target_config.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,92 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+// The BAUD rate your PC/MAC/Linux terminal uses with the eval board
+#define CONSOLE_BAUD 115200
+
+
+// Uncomment this to enable WiConnect serial interface hardware flow control
+// NOTE: your platform must support the serial flow control api functions
+//#define ENABLE_FLOW_CONTROL
+
+
+#define WICONNECT_INTERNAL_BUFFER_SIZE (4*1024)
+#define WICONNECT_SERIAL_RX_BUFFER_SIZE (4*1024)
+
+#define DEFAULT_CMD_GETCHAR_TIMEOUT 250
+#define DEFAULT_COMMAND_LINE_LENGTH_MAX 128
+#define DEFAULT_COMMAND_MAX_HISTORY 16
+#define DEFAULT_CMD_PROMPT_STR "> "
+#define DEFAULT_COMMAND_MAX_ARGV 16
+
+#define TEST_NONBLOCKING_API false
+#define TEST_BUFFER_LENGTH 4*1024
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Seabass Target Configuration
+#ifdef TARGET_SEABASS
+
+#define WICONNECT_TX_PIN PA_9
+#define WICONNECT_RX_PIN PA_10
+#define WICONNECT_RESET_PIN PB_0
+#define WICONNECT_WAKE_PIN NC
+
+#ifdef ENABLE_FLOW_CONTROL
+#define WICONNECT_CTS_PIN PA_11
+#define WICONNECT_RTS_PIN PA_12
+#else
+#define WICONNECT_CTS_PIN NC
+#define WICONNECT_RTS_PIN NC
+#endif
+
+#endif
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Nucleo F401RE Target Configuration
+#ifdef TARGET_NUCLEO_F401RE
+
+#define WICONNECT_TX_PIN PA_9
+#define WICONNECT_RX_PIN PA_10
+#define WICONNECT_RESET_PIN PC_7
+#define WICONNECT_WAKE_PIN NC
+
+#ifdef ENABLE_FLOW_CONTROL
+#define WICONNECT_CTS_PIN PA_11
+#define WICONNECT_RTS_PIN PA_12
+#else
+#define WICONNECT_CTS_PIN NC
+#define WICONNECT_RTS_PIN NC
+#endif
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/Callback.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,99 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+#include "api/WiconnectTypes.h"
+#include "FunctionPointer.h"
+
+
+
+namespace wiconnect
+{
+
+
+typedef void (*_Callback)(WiconnectResult result, void *arg1, void *arg2);
+
+
+/**
+ * @ingroup api_core_types
+ *
+ * @brief Generic callback function.
+ */
+class Callback : public FunctionPointer
+{
+public:
+    /*************************************************************************************************/
+    Callback(_Callback func = 0)
+    {
+        _function = (void*)func;
+        _membercaller = NULL;
+        _object = NULL;
+    }
+
+    /*************************************************************************************************/
+    template<typename T>
+    Callback(T *object, void (T::*member)(WiconnectResult result, void *arg1, void *arg2))
+    {
+        _object = static_cast<void*>(object);
+        memcpy(_member, (char*)&member, sizeof(member));
+        _membercaller = (void*)&Callback::membercaller<T>;
+        _function = 0;
+    }
+
+    /*************************************************************************************************/
+    void call(WiconnectResult result, void *arg1, void *arg2)
+    {
+        if (_function)
+        {
+            ((_Callback)_function)(result, arg1, arg2);
+        }
+        else if (_object)
+        {
+            typedef void (*membercallerFunc)(void*, char*, WiconnectResult result, void *arg1, void *arg2);
+            ((membercallerFunc)_membercaller)(_object, _member, result, arg1, arg2);
+        }
+    }
+
+private:
+
+    /*************************************************************************************************/
+    template<typename T>
+    static void membercaller(void *object, char *member, WiconnectResult result, void *arg1, void *arg2)
+    {
+        T* o = static_cast<T*>(object);
+        void (T::*m)(WiconnectResult result, void *arg1, void *arg2);
+        memcpy((char*)&m, member, sizeof(m));
+        (o->*m)(result, arg1, arg2);
+    }
+
+};
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/CommandQueue.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,107 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+#include "api/WiconnectTypes.h"
+
+
+namespace wiconnect
+{
+
+/**
+ * Class for hold queued commands
+ *
+ * @note Internal use only
+ */
+class CommandQueue
+{
+public:
+    /*************************************************************************************************/
+    CommandQueue()
+    {
+        head = tail = queue;
+        count = 0;
+    }
+
+    /*************************************************************************************************/
+    bool isFull()
+    {
+        return count == WICONNECT_MAX_QUEUED_COMMANDS;
+    }
+
+    /*************************************************************************************************/
+    bool isEmpty()
+    {
+        return count == 0;
+    }
+
+    /*************************************************************************************************/
+    bool push(QueuedCommand *cmd)
+    {
+        if(isFull())
+        {
+            return false;
+        }
+        ++count;
+        *tail = cmd;
+        if(++tail >= queue + WICONNECT_MAX_QUEUED_COMMANDS)
+        {
+            tail = queue;
+        }
+
+        return true;
+    }
+
+    /*************************************************************************************************/
+    QueuedCommand* pop()
+    {
+        if(isEmpty())
+            return NULL;
+
+        QueuedCommand* cmd = *head;
+        --count;
+        if(++head >= queue + WICONNECT_MAX_QUEUED_COMMANDS)
+        {
+            head = queue;
+        }
+        return cmd;
+    }
+
+protected:
+    QueuedCommand* queue[WICONNECT_MAX_QUEUED_COMMANDS];
+    QueuedCommand** head;
+    QueuedCommand** tail;
+    int count;
+};
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/FileList.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,68 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+#include "Wiconnect.h"
+#include "WiconnectFile.h"
+
+namespace wiconnect
+{
+
+/**
+ * @ingroup api_file_types
+ *
+ * @brief WiConnect WiFi module file listing.
+ *
+ */
+class FileList
+{
+public:
+    FileList(int bufferLen = 0, void *buffer = NULL);
+    ~FileList();
+
+    const WiconnectFile* getListHead() const;
+    int getCount() const;
+    const WiconnectFile* getResult(int i) const;
+    const WiconnectFile* operator [](int i) const;
+
+protected:
+    WiconnectFile *listHead, *listTail;
+    uint8_t *buffer;
+    uint8_t *bufferPtr;
+    uint16_t bufferLen;
+    int count;
+
+    WiconnectResult add(const char *typeStr, const char *flagsStr, const char* sizeStr, const char *versionStr, const char *nameStr);
+
+    friend class FileInterface;
+};
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/FunctionPointer.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,73 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+namespace wiconnect
+{
+
+
+/**
+ * @brief Generic function pointer.
+ * @note Internal use only
+ */
+class FunctionPointer
+{
+public:
+    /*************************************************************************************************/
+    FunctionPointer& operator=( const FunctionPointer& other )
+    {
+        _object = other._object;
+        _function = other._function;
+        _membercaller = other._membercaller;
+        memcpy(_member, other._member, sizeof(_member));
+        return *this;
+    }
+
+    /*************************************************************************************************/
+    bool isValid() const
+    {
+        return (_function != NULL) || (_object != NULL);
+    }
+
+    /*************************************************************************************************/
+    void setInvalid()
+    {
+        _function = NULL;
+        _object = NULL;
+    }
+
+protected:
+    void *_object;
+    void *_function;
+    char _member[16];
+    void *_membercaller;
+};
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/GhmMessage.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,79 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+
+#include "api/WiconnectTypes.h"
+#include "api/StringUtil.h"
+
+
+namespace wiconnect
+{
+
+/**
+ * @ingroup api_ghm_types
+ *
+ * @brief Contains single entry from goHACK.me message listing
+ *
+ */
+class GhmMessage
+{
+public:
+    const char* getMessageId(char *buffer = NULL) const;
+    const char* getTimestamp(char *buffer = NULL) const;
+    uint16_t    getLength() const;
+
+    const GhmMessage* getNext() const;
+    const GhmMessage* getPrevious() const;
+
+protected:
+    GhmMessage();
+
+    WiconnectResult init(const char *msgIdStr, const char* timestampStr, const char *lengthStr);
+    GhmMessage *next;
+    GhmMessage *previous;
+    char messageId[37];
+    char timestamp[14];
+    uint16_t length;
+
+#ifdef WICONNECT_ENABLE_MALLOC
+    void* operator new(size_t size);
+    void operator delete(void*);
+#endif
+
+    friend class GhmMessageList;
+};
+
+
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/GhmMessageList.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,73 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+#include "api/WiconnectTypes.h"
+#include "GhmMessage.h"
+
+
+
+namespace wiconnect
+{
+
+
+/**
+ * @ingroup api_ghm_types
+ *
+ * @brief List of goHACK.me messages.
+ *
+ */
+class GhmMessageList
+{
+public:
+    GhmMessageList(int bufferLen = 0, void *buffer = NULL);
+    ~GhmMessageList();
+
+    void reset(void);
+    const GhmMessage* getListHead() const;
+    int getCount() const;
+    const GhmMessage* getResult(int i) const;
+    const GhmMessage* operator [](int i) const;
+
+protected:
+    GhmMessage *listHead, *listTail;
+    uint8_t *buffer;
+    uint8_t *bufferPtr;
+    uint16_t bufferLen;
+    uint16_t bufferRemaining;
+    int count;
+
+    WiconnectResult add(const char *msgId, const char* timestamp, const char *length);
+
+
+    friend class GhmInterface;
+};
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/Gpio.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,59 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+#include "api/WiconnectTypes.h"
+
+
+namespace wiconnect
+{
+
+/**
+ * Host GPIO class.
+ *
+ * @note Internal use only
+ */
+class Gpio WICONNECT_GPIO_BASE_CLASS
+{
+public:
+    Gpio(Pin pin);
+
+    void write(bool value);
+
+    bool read(void);
+
+    Gpio& operator= (bool value);
+
+    Gpio& operator= (const Gpio& other);
+
+};
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/LogFunc.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,100 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+#include "api/WiconnectTypes.h"
+#include "FunctionPointer.h"
+
+namespace wiconnect
+{
+
+typedef int (*_LogFunc)(const char *str);
+
+
+/**
+ * @ingroup api_core_types
+ *
+ * @brief Logging callback function.
+ */
+class LogFunc : public FunctionPointer
+{
+public:
+    /*************************************************************************************************/
+    LogFunc(_LogFunc func = 0)
+    {
+        _function = (void*)func;
+        _membercaller = NULL;
+        _object = NULL;
+    }
+
+    /*************************************************************************************************/
+    template<typename T>
+    LogFunc(T *object, WiconnectResult (T::*member)(const char *str))
+    {
+        _object = static_cast<void*>(object);
+        memcpy(_member, (char*)&member, sizeof(member));
+        _membercaller = (void*)&LogFunc::membercaller<T>;
+        _function = 0;
+    }
+
+    /*************************************************************************************************/
+    int call(const char *str)
+    {
+        if (_function)
+        {
+            return ((_LogFunc)_function)(str);
+        }
+        else if (_object)
+        {
+            typedef int (*membercallerFunc)(void*, char*, const char *str);
+            return ((membercallerFunc)_membercaller)(_object, _member, str);
+        }
+        else
+        {
+            return -1;
+        }
+    }
+
+private:
+
+    /*************************************************************************************************/
+    template<typename T>
+    static int membercaller(void *object, char *member, const char *str)
+    {
+        T* o = static_cast<T*>(object);
+        int (T::*m)(const char *str);
+        memcpy((char*)&m, member, sizeof(m));
+        return (o->*m)(str);
+    }
+};
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/PeriodicTimer.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,56 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+#include "api/WiconnectTypes.h"
+
+
+namespace wiconnect
+{
+
+/**
+ * Class for periodically calling a supplied callback.
+ *
+ * @note Internal use only
+ */
+class PeriodicTimer WICONNECT_PERIODIC_TIMER_BASE_CLASS
+{
+public:
+    PeriodicTimer();
+
+    template<typename T>
+    void start(T* tptr, void (T::*mptr)(void), int timeoutMs);
+    void stop(void);
+    bool isRunning();
+protected:
+    bool running;
+};
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/PinIrqHandler.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,63 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+#include "Wiconnect.h"
+
+namespace wiconnect
+{
+
+
+class SocketIrqHandlerMap;
+
+/**
+ * Class for handlinga Pin IRQ.
+ *
+ * @note Internal use only
+ */
+class PinIrqHandler WICONNECT_EXTERNAL_INTERRUPT_GPIO_BASE_CLASS
+{
+public:
+    PinIrqHandler(Pin irqPin, const Callback &callback);
+    virtual ~PinIrqHandler();
+
+    void irqHandler();
+
+protected:
+    PinName irqPin;
+    Callback callback;
+
+    friend class SocketIrqHandlerMap;
+};
+
+
+typedef uint8_t PinIrqHandlerBuffer[sizeof(PinIrqHandler)];
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/QueuedCommand.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,88 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+#include "api/WiconnectTypes.h"
+
+
+namespace wiconnect
+{
+/**
+ * @ingroup api_core_types
+ *
+ * @brief Class which contains command for asynchronous processing.
+ */
+
+class QueuedCommand
+{
+public:
+    void *userData;
+
+
+    QueuedCommand(int responseBufferLen, char *responseBuffer, int timeoutMs, const ReaderFunc &reader, void *user, const char *cmd, va_list vaList);
+    QueuedCommand(int responseBufferLen, char *responseBuffer, int timeoutMs, const char *cmd, ...);
+    QueuedCommand(int responseBufferLen, char *responseBuffer, const char *cmd, ...);
+    QueuedCommand(int timeoutMs_, const char *cmd, ...);
+    QueuedCommand(const char *cmd, ...);
+    ~QueuedCommand();
+
+    char *getResponseBuffer();
+    int getResponseBufferLen();
+    int getTimeoutMs();
+    ReaderFunc getReader();
+    void * getReaderUserData();
+    char* getCommand();
+    Callback getCompletedCallback();
+    void setCompletedCallback(const Callback &cb);
+
+    QueuedCommand& operator=( const QueuedCommand& other );
+    void* operator new(size_t size);
+    void operator delete(void*);
+
+protected:
+    char *responseBuffer;
+    int responseBufferLen;
+    int timeoutMs;
+    ReaderFunc reader;
+    void *user;
+    char command[WICONNECT_MAX_CMD_SIZE];
+    Callback completeCallback;
+#ifdef WICONNECT_ENABLE_MALLOC
+    bool allocatedBuffer;
+#endif
+    friend class NetworkInterface;
+    friend class Wiconnect;
+
+    void initialize(int responseBufferLen, char *responseBuffer_, int timeoutMs_, const ReaderFunc &reader_, void *user_, const char *cmd_, va_list vaList);
+};
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/ReaderFunc.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,98 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+#include "api/WiconnectTypes.h"
+#include "FunctionPointer.h"
+
+
+namespace wiconnect
+{
+
+typedef WiconnectResult (*_ReaderFunc)(void *user, void *data, int maxReadSize, int *bytesRead);
+
+/**
+ * @ingroup api_core_types
+ *
+ * @brief Generic data reading callback function.
+ */
+class ReaderFunc : public FunctionPointer
+{
+public:
+
+    /*************************************************************************************************/
+    ReaderFunc(_ReaderFunc func = 0)
+    {
+        _function = (void*)func;
+        _membercaller = NULL;
+        _object = NULL;
+    }
+
+    /*************************************************************************************************/
+    template<typename T>
+    ReaderFunc(T *object, WiconnectResult (T::*member)(void *user, void *data, int maxReadSize, int *bytesRead))
+    {
+        _object = static_cast<void*>(object);
+        memcpy(_member, (char*)&member, sizeof(member));
+        _membercaller = (void*)&ReaderFunc::membercaller<T>;
+        _function = 0;
+    }
+
+    /*************************************************************************************************/
+    WiconnectResult call(void *user, void *data, int maxReadSize, int *bytesRead)
+    {
+        if (_function)
+        {
+            return ((_ReaderFunc)_function)(user, data, maxReadSize, bytesRead);
+        }
+        else if (_object)
+        {
+            typedef WiconnectResult (*membercallerFunc)(void*, char*, void *user, void *data, int maxReadSize, int *bytesRead);
+            return ((membercallerFunc)_membercaller)(_object, _member, user, data, maxReadSize, bytesRead);
+        }
+        else
+        {
+            return WICONNECT_ERROR;
+        }
+    }
+
+private:
+
+    /*************************************************************************************************/
+    template<typename T>
+    static WiconnectResult membercaller(void *object, char *member, void *user, void *data, int maxReadSize, int *bytesRead)
+    {
+        T* o = static_cast<T*>(object);
+        WiconnectResult (T::*m)(void *user, void *data, int maxReadSize, int *bytesRead);
+        memcpy((char*)&m, member, sizeof(m));
+        return (o->*m)(user, data, maxReadSize, bytesRead);
+    }
+};
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/ScanResult.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,86 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+
+#include "api/WiconnectTypes.h"
+#include "api/StringUtil.h"
+
+
+namespace wiconnect
+{
+
+/**
+ * @ingroup api_network_types
+ *
+ * @brief Contains single entry from WiFi scan results
+ *
+ */
+class ScanResult
+{
+public:
+    uint8_t getChannel() const;
+    NetworkSignalStrength getSignalStrength() const;
+    const MacAddress* getMacAddress() const;
+    NetworkSecurity getSecurityType() const;
+    uint32_t getRate() const;
+    const char* getRateStr(char *buffer = NULL) const;
+    const Ssid* getSsid() const;
+
+    const ScanResult* getNext() const;
+    const ScanResult* getPrevious() const;
+
+protected:
+    ScanResult();
+
+    WiconnectResult init(const char *channelStr, const char *rssiStr, const char* macStr, const char *rateStr, const char *secStr, const char *ssidStr);
+    ScanResult *next;
+    ScanResult *previous;
+    uint8_t channel;
+    int16_t rssi;
+    MacAddress mac;
+    uint32_t rate;
+    NetworkSecurity security;
+    Ssid ssid;
+
+#ifdef WICONNECT_ENABLE_MALLOC
+    void* operator new(size_t size);
+    void operator delete(void*);
+#endif
+
+    friend class ScanResultList;
+};
+
+
+
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/ScanResultList.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,73 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+#include "api/WiconnectTypes.h"
+#include "ScanResult.h"
+
+
+
+namespace wiconnect
+{
+
+
+/**
+ * @ingroup api_network_types
+ *
+ * @brief List of WiFi network scan results.
+ *
+ */
+class ScanResultList
+{
+public:
+    ScanResultList(int bufferLen = 0, void *buffer = NULL);
+    ~ScanResultList();
+
+    void reset(void);
+    const ScanResult* getListHead() const;
+    int getCount() const;
+    const ScanResult* getResult(int i) const;
+    const ScanResult* operator [](int i) const;
+
+protected:
+    ScanResult *listHead, *listTail;
+    uint8_t *buffer;
+    uint8_t *bufferPtr;
+    uint16_t bufferLen;
+    uint16_t bufferRemaining;
+    int count;
+
+    WiconnectResult add(const char *channelStr, const char *rssiStr, const char* macStr, const char *rateStr, const char *secStr, const char *ssidStr);
+
+
+    friend class NetworkInterface;
+};
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/Socket/Endpoint.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,67 @@
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#ifndef ENDPOINT_H
+#define ENDPOINT_H
+
+
+#include "api/types/Socket/lwip/sockets.h"
+
+
+class UDPSocket;
+
+/**
+IP Endpoint (address, port)
+*/
+class Endpoint {
+    friend class UDPSocket;
+
+public:
+    /** IP Endpoint (address, port)
+     */
+    Endpoint(void);
+
+    ~Endpoint(void);
+
+    /** Reset the address of this endpoint
+     */
+    void reset_address(void);
+
+    /** Set the address of this endpoint
+    \param host The endpoint address (it can either be an IP Address or a hostname that will be resolved with DNS).
+    \param port The endpoint port
+    \return 0 on success, -1 on failure (when an hostname cannot be resolved by DNS).
+     */
+    int  set_address(const char* host, const int port);
+
+    /** Get the IP address of this endpoint
+    \return The IP address of this endpoint.
+     */
+    char* get_address(void);
+
+    /** Get the port of this endpoint
+    \return The port of this endpoint
+     */
+    int get_port(void);
+
+protected:
+    char _ipAddress[17];
+    struct sockaddr_in _remoteHost;
+
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/Socket/Socket.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,98 @@
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#ifndef SOCKET_H_
+#define SOCKET_H_
+
+
+#include "api/types/Socket/lwip/sockets.h"
+#include "api/types/Socket/lwip/netdb.h"
+#include "api/WiconnectTypes.h"
+#include "api/types/WiconnectSocket.h"
+
+
+using namespace wiconnect;
+
+
+#define SOCKET_API_DEFAULT_RX_BUFFER_SIZE 128
+#define SOCKET_API_DEFAULT_TX_BUFFER_SIZE 128
+
+
+int gethostbyname_r(const char *name, struct hostent *ret, char *buf, size_t buflen, struct hostent **result, int *h_errnop);
+struct hostent *gethostbyname(const char *name);
+
+
+
+
+/** Socket file descriptor and select wrapper
+  */
+class Socket {
+public:
+    /** Socket
+     */
+    Socket();
+    Socket(int rxBufferLen, void *rxBuffer, int txBufferLen, void *txBuffer);
+
+    /** Set blocking or non-blocking mode of the socket and a timeout on
+        blocking socket operations
+
+        \note Currently the blocking/timeout functionality is only supported
+              for 'read' methods
+    \param blocking  true for blocking mode, false for non-blocking mode.
+    \param timeout   timeout in ms [Default: (1500)ms].
+    */
+    void set_blocking(bool blocking, unsigned int timeout=1500);
+
+    /** Set socket options
+     *
+     * \note NOT supported in this version.
+     *
+    \param level     stack level (see: lwip/sockets.h)
+    \param optname   option ID
+    \param optval    option value
+    \param socklen_t length of the option value
+    \return 0 on success, -1 on failure
+    */
+    int set_option(int level, int optname, const void *optval, socklen_t optlen);
+
+    /** Get socket options
+     *
+     * \note NOT supported in this version.
+     *
+        \param level     stack level (see: lwip/sockets.h)
+        \param optname   option ID
+        \param optval    buffer pointer where to write the option value
+        \param socklen_t length of the option value
+        \return 0 on success, -1 on failure
+        */
+    int get_option(int level, int optname, void *optval, socklen_t *optlen);
+
+    /** Close the socket
+        \param shutdown   free the left-over data in message queues
+     */
+    int close(bool shutdown=true);
+
+    ~Socket();
+
+protected:
+    bool _blocking;
+    unsigned int _timeout;
+
+    WiconnectSocket socket;
+};
+
+#endif /* SOCKET_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/Socket/TCPSocketConnection.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,79 @@
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef TCPSOCKET_H
+#define TCPSOCKET_H
+
+#include "api/types/Socket/Socket.h"
+#include "api/types/Socket/Endpoint.h"
+
+/**
+TCP socket connection
+*/
+class TCPSocketConnection : public Socket, public Endpoint {
+    friend class TCPSocketServer;
+
+public:
+    /** TCP socket connection
+    */
+    TCPSocketConnection(int rxBufferLen = SOCKET_API_DEFAULT_RX_BUFFER_SIZE, void *rxBuffer = NULL, int txBufferLen = SOCKET_API_DEFAULT_TX_BUFFER_SIZE, void *txBuffer = NULL);
+
+    /** Connects this TCP socket to the server
+    \param host The host to connect to. It can either be an IP Address or a hostname that will be resolved with DNS.
+    \param port The host's port to connect to.
+    \return 0 on success, -1 on failure.
+    */
+    int connect(const char* host, const int port);
+
+    /** Check if the socket is connected
+    \return true if connected, false otherwise.
+    */
+    bool is_connected(void);
+
+    /** Send data to the remote host.
+    \param data The buffer to send to the host.
+    \param length The length of the buffer to send.
+    \return the number of written bytes on success (>=0) or -1 on failure
+     */
+    int send(char* data, int length);
+
+    /** Send all the data to the remote host.
+    \param data The buffer to send to the host.
+    \param length The length of the buffer to send.
+    \return the number of written bytes on success (>=0) or -1 on failure
+    */
+    int send_all(char* data, int length);
+
+    /** Receive data from the remote host.
+    \param data The buffer in which to store the data received from the host.
+    \param length The maximum length of the buffer.
+    \return the number of received bytes on success (>=0) or -1 on failure
+     */
+    int receive(char* data, int length);
+
+    /** Receive all the data from the remote host.
+    \param data The buffer in which to store the data received from the host.
+    \param length The maximum length of the buffer.
+    \return the number of received bytes on success (>=0) or -1 on failure
+    */
+    int receive_all(char* data, int length);
+
+
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/Socket/TCPSocketServer.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,59 @@
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#ifndef TCPSOCKETSERVER_H
+#define TCPSOCKETSERVER_H
+
+#include "api/types/Socket/Socket.h"
+#include "api/types/Socket/TCPSocketConnection.h"
+
+/** TCP Server.
+ *
+ *
+ *
+ * NOTE: This class is not currently supported
+ *
+ *
+ *
+  */
+class TCPSocketServer : public Socket {
+  public:
+    /** Instantiate a TCP Server.
+    */
+    TCPSocketServer();
+
+    /** Bind a socket to a specific port.
+    \param port The port to listen for incoming connections on.
+    \return 0 on success, -1 on failure.
+    */
+    int bind(int port);
+
+    /** Start listening for incoming connections.
+    \param backlog number of pending connections that can be queued up at any
+                   one time [Default: 1].
+    \return 0 on success, -1 on failure.
+    */
+    int listen(int backlog=1);
+
+    /** Accept a new connection.
+    \param connection A TCPSocketConnection instance that will handle the incoming connection.
+    \return 0 on success, -1 on failure.
+    */
+    int accept(TCPSocketConnection& connection);
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/Socket/UDPSocket.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,93 @@
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef UDPSOCKET_H
+#define UDPSOCKET_H
+
+#include "api/types/Socket/Socket.h"
+#include "api/types/Socket/Endpoint.h"
+
+/**
+UDP Socket
+*/
+class UDPSocket : public Socket {
+
+public:
+    /** Instantiate an UDP Socket.
+    */
+    UDPSocket(int rxBufferLen = SOCKET_API_DEFAULT_RX_BUFFER_SIZE, void *rxBuffer = NULL, int txBufferLen = SOCKET_API_DEFAULT_TX_BUFFER_SIZE, void *txBuffer = NULL);
+
+    /** Init the UDP Client Socket without binding it to any specific port
+    \return 0 on success, -1 on failure.
+    */
+    int init(void);
+
+    /** Bind a UDP Server Socket to a specific port
+    \param port The port to listen for incoming connections on
+    \return 0 on success, -1 on failure.
+    */
+    int bind(int port);
+
+    /** Join the multicast group at the given address
+     *
+     * \note This is not currently supported.
+     *
+    \param address  The address of the multicast group
+    \return 0 on success, -1 on failure.
+    */
+    int join_multicast_group(const char* address);
+
+    /** Set the socket in broadcasting mode
+     *
+     * \note Broadcasting is always enabled, so this
+     *       doesn't do anything useful.
+     *
+    \return 0 on success, -1 on failure.
+    */
+    int set_broadcasting(bool broadcast=true);
+
+    /** Send a packet to a remote endpoint
+     *
+     * \note Currently only one remote client address is supported
+     *
+    \param remote   The remote endpoint
+    \param packet   The packet to be sent
+    \param length   The length of the packet to be sent
+    \return the number of written bytes on success (>=0) or -1 on failure
+    */
+    int sendTo(Endpoint &remote, char *packet, int length);
+
+    /** Receive a packet from a remote endpoint
+     *
+     * \note Currently only one remote client address is supported
+     *
+     *
+    \param remote   The remote endpoint
+    \param buffer   The buffer for storing the incoming packet data. If a packet
+           is too long to fit in the supplied buffer, excess bytes are discarded
+    \param length   The length of the buffer
+    \return the number of received bytes on success (>=0) or -1 on failure
+    */
+    int receiveFrom(Endpoint &remote, char *buffer, int length);
+
+
+private:
+    int localPort;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/Socket/lwip/inet.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,108 @@
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * This file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ */
+#ifndef __LWIP_INET_H__
+#define __LWIP_INET_H__
+
+#include "opt.h"
+#include "ip_addr.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** For compatibility with BSD code */
+struct in_addr {
+  u32_t s_addr;
+};
+
+/** 255.255.255.255 */
+#define INADDR_NONE         IPADDR_NONE
+/** 127.0.0.1 */
+#define INADDR_LOOPBACK     IPADDR_LOOPBACK
+/** 0.0.0.0 */
+#define INADDR_ANY          IPADDR_ANY
+/** 255.255.255.255 */
+#define INADDR_BROADCAST    IPADDR_BROADCAST
+
+/* Definitions of the bits in an Internet address integer.
+
+   On subnets, host and network parts are found according to
+   the subnet mask, not these masks.  */
+#define IN_CLASSA(a)        IP_CLASSA(a)
+#define IN_CLASSA_NET       IP_CLASSA_NET
+#define IN_CLASSA_NSHIFT    IP_CLASSA_NSHIFT
+#define IN_CLASSA_HOST      IP_CLASSA_HOST
+#define IN_CLASSA_MAX       IP_CLASSA_MAX
+
+#define IN_CLASSB(b)        IP_CLASSB(b)
+#define IN_CLASSB_NET       IP_CLASSB_NET
+#define IN_CLASSB_NSHIFT    IP_CLASSB_NSHIFT
+#define IN_CLASSB_HOST      IP_CLASSB_HOST
+#define IN_CLASSB_MAX       IP_CLASSB_MAX
+
+#define IN_CLASSC(c)        IP_CLASSC(c)
+#define IN_CLASSC_NET       IP_CLASSC_NET
+#define IN_CLASSC_NSHIFT    IP_CLASSC_NSHIFT
+#define IN_CLASSC_HOST      IP_CLASSC_HOST
+#define IN_CLASSC_MAX       IP_CLASSC_MAX
+
+#define IN_CLASSD(d)        IP_CLASSD(d)
+#define IN_CLASSD_NET       IP_CLASSD_NET     /* These ones aren't really */
+#define IN_CLASSD_NSHIFT    IP_CLASSD_NSHIFT  /*   net and host fields, but */
+#define IN_CLASSD_HOST      IP_CLASSD_HOST    /*   routing needn't know. */
+#define IN_CLASSD_MAX       IP_CLASSD_MAX
+
+#define IN_MULTICAST(a)     IP_MULTICAST(a)
+
+#define IN_EXPERIMENTAL(a)  IP_EXPERIMENTAL(a)
+#define IN_BADCLASS(a)      IP_BADCLASS(a)
+
+#define IN_LOOPBACKNET      IP_LOOPBACKNET
+
+#define inet_addr_from_ipaddr(target_inaddr, source_ipaddr) ((target_inaddr)->s_addr = ip4_addr_get_u32(source_ipaddr))
+#define inet_addr_to_ipaddr(target_ipaddr, source_inaddr)   (ip4_addr_set_u32(target_ipaddr, (source_inaddr)->s_addr))
+/* ATTENTION: the next define only works because both s_addr and ip_addr_t are an u32_t effectively! */
+#define inet_addr_to_ipaddr_p(target_ipaddr_p, source_inaddr)   ((target_ipaddr_p) = (ip_addr_t*)&((source_inaddr)->s_addr))
+
+/* directly map this to the lwip internal functions */
+#define inet_addr(cp)         ipaddr_addr(cp)
+#define inet_aton(cp, addr)   ipaddr_aton(cp, (ip_addr_t*)addr)
+#define inet_ntoa(addr)       ipaddr_ntoa((ip_addr_t*)&(addr))
+#define inet_ntoa_r(addr, buf, buflen) ipaddr_ntoa_r((ip_addr_t*)&(addr), buf, buflen)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LWIP_INET_H__ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/Socket/lwip/ip_addr.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,243 @@
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * This file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ */
+#ifndef __LWIP_IP_ADDR_H__
+#define __LWIP_IP_ADDR_H__
+
+#include "opt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* This is the aligned version of ip_addr_t,
+   used as local variable, on the stack, etc. */
+struct ip_addr {
+  u32_t addr;
+};
+
+/* This is the packed version of ip_addr_t,
+   used in network headers that are itself packed */
+#ifdef PACK_STRUCT_USE_INCLUDES
+#  include "arch/bpstruct.h"
+#endif
+PACK_STRUCT_BEGIN
+struct ip_addr_packed {
+  PACK_STRUCT_FIELD(u32_t addr);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+#  include "arch/epstruct.h"
+#endif
+
+/** ip_addr_t uses a struct for convenience only, so that the same defines can
+ * operate both on ip_addr_t as well as on ip_addr_p_t. */
+typedef struct ip_addr ip_addr_t;
+typedef struct ip_addr_packed ip_addr_p_t;
+
+/*
+ * struct ipaddr2 is used in the definition of the ARP packet format in
+ * order to support compilers that don't have structure packing.
+ */
+#ifdef PACK_STRUCT_USE_INCLUDES
+#  include "arch/bpstruct.h"
+#endif
+PACK_STRUCT_BEGIN
+struct ip_addr2 {
+  PACK_STRUCT_FIELD(u16_t addrw[2]);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+#  include "arch/epstruct.h"
+#endif
+
+/* Forward declaration to not include netif.h */
+struct netif;
+
+extern const ip_addr_t ip_addr_any;
+extern const ip_addr_t ip_addr_broadcast;
+
+/** IP_ADDR_ can be used as a fixed IP address
+ *  for the wildcard and the broadcast address
+ */
+#define IP_ADDR_ANY         ((ip_addr_t *)&ip_addr_any)
+#define IP_ADDR_BROADCAST   ((ip_addr_t *)&ip_addr_broadcast)
+
+/** 255.255.255.255 */
+#define IPADDR_NONE         ((u32_t)0xffffffffUL)
+/** 127.0.0.1 */
+#define IPADDR_LOOPBACK     ((u32_t)0x7f000001UL)
+/** 0.0.0.0 */
+#define IPADDR_ANY          ((u32_t)0x00000000UL)
+/** 255.255.255.255 */
+#define IPADDR_BROADCAST    ((u32_t)0xffffffffUL)
+
+/* Definitions of the bits in an Internet address integer.
+
+   On subnets, host and network parts are found according to
+   the subnet mask, not these masks.  */
+#define IP_CLASSA(a)        ((((u32_t)(a)) & 0x80000000UL) == 0)
+#define IP_CLASSA_NET       0xff000000
+#define IP_CLASSA_NSHIFT    24
+#define IP_CLASSA_HOST      (0xffffffff & ~IP_CLASSA_NET)
+#define IP_CLASSA_MAX       128
+
+#define IP_CLASSB(a)        ((((u32_t)(a)) & 0xc0000000UL) == 0x80000000UL)
+#define IP_CLASSB_NET       0xffff0000
+#define IP_CLASSB_NSHIFT    16
+#define IP_CLASSB_HOST      (0xffffffff & ~IP_CLASSB_NET)
+#define IP_CLASSB_MAX       65536
+
+#define IP_CLASSC(a)        ((((u32_t)(a)) & 0xe0000000UL) == 0xc0000000UL)
+#define IP_CLASSC_NET       0xffffff00
+#define IP_CLASSC_NSHIFT    8
+#define IP_CLASSC_HOST      (0xffffffff & ~IP_CLASSC_NET)
+
+#define IP_CLASSD(a)        (((u32_t)(a) & 0xf0000000UL) == 0xe0000000UL)
+#define IP_CLASSD_NET       0xf0000000          /* These ones aren't really */
+#define IP_CLASSD_NSHIFT    28                  /*   net and host fields, but */
+#define IP_CLASSD_HOST      0x0fffffff          /*   routing needn't know. */
+#define IP_MULTICAST(a)     IP_CLASSD(a)
+
+#define IP_EXPERIMENTAL(a)  (((u32_t)(a) & 0xf0000000UL) == 0xf0000000UL)
+#define IP_BADCLASS(a)      (((u32_t)(a) & 0xf0000000UL) == 0xf0000000UL)
+
+#define IP_LOOPBACKNET      127                 /* official! */
+
+
+#if BYTE_ORDER == BIG_ENDIAN
+/** Set an IP address given by the four byte-parts */
+#define IP4_ADDR(ipaddr, a,b,c,d) \
+        (ipaddr)->addr = ((u32_t)((a) & 0xff) << 24) | \
+                         ((u32_t)((b) & 0xff) << 16) | \
+                         ((u32_t)((c) & 0xff) << 8)  | \
+                          (u32_t)((d) & 0xff)
+#else
+/** Set an IP address given by the four byte-parts.
+    Little-endian version that prevents the use of htonl. */
+#define IP4_ADDR(ipaddr, a,b,c,d) \
+        (ipaddr)->addr = ((u32_t)((d) & 0xff) << 24) | \
+                         ((u32_t)((c) & 0xff) << 16) | \
+                         ((u32_t)((b) & 0xff) << 8)  | \
+                          (u32_t)((a) & 0xff)
+#endif
+
+/** MEMCPY-like copying of IP addresses where addresses are known to be
+ * 16-bit-aligned if the port is correctly configured (so a port could define
+ * this to copying 2 u16_t's) - no NULL-pointer-checking needed. */
+#ifndef IPADDR2_COPY
+#define IPADDR2_COPY(dest, src) SMEMCPY(dest, src, sizeof(ip_addr_t))
+#endif
+
+/** Copy IP address - faster than ip_addr_set: no NULL check */
+#define ip_addr_copy(dest, src) ((dest).addr = (src).addr)
+/** Safely copy one IP address to another (src may be NULL) */
+#define ip_addr_set(dest, src) ((dest)->addr = \
+                                    ((src) == NULL ? 0 : \
+                                    (src)->addr))
+/** Set complete address to zero */
+#define ip_addr_set_zero(ipaddr)      ((ipaddr)->addr = 0)
+/** Set address to IPADDR_ANY (no need for htonl()) */
+#define ip_addr_set_any(ipaddr)       ((ipaddr)->addr = IPADDR_ANY)
+/** Set address to loopback address */
+#define ip_addr_set_loopback(ipaddr)  ((ipaddr)->addr = PP_HTONL(IPADDR_LOOPBACK))
+/** Safely copy one IP address to another and change byte order
+ * from host- to network-order. */
+#define ip_addr_set_hton(dest, src) ((dest)->addr = \
+                               ((src) == NULL ? 0:\
+                               htonl((src)->addr)))
+/** IPv4 only: set the IP address given as an u32_t */
+#define ip4_addr_set_u32(dest_ipaddr, src_u32) ((dest_ipaddr)->addr = (src_u32))
+/** IPv4 only: get the IP address as an u32_t */
+#define ip4_addr_get_u32(src_ipaddr) ((src_ipaddr)->addr)
+
+/** Get the network address by combining host address with netmask */
+#define ip_addr_get_network(target, host, netmask) ((target)->addr = ((host)->addr) & ((netmask)->addr))
+
+/**
+ * Determine if two address are on the same network.
+ *
+ * @arg addr1 IP address 1
+ * @arg addr2 IP address 2
+ * @arg mask network identifier mask
+ * @return !0 if the network identifiers of both address match
+ */
+#define ip_addr_netcmp(addr1, addr2, mask) (((addr1)->addr & \
+                                              (mask)->addr) == \
+                                             ((addr2)->addr & \
+                                              (mask)->addr))
+#define ip_addr_cmp(addr1, addr2) ((addr1)->addr == (addr2)->addr)
+
+#define ip_addr_isany(addr1) ((addr1) == NULL || (addr1)->addr == IPADDR_ANY)
+
+#define ip_addr_isbroadcast(ipaddr, netif) ip4_addr_isbroadcast((ipaddr)->addr, (netif))
+u8_t ip4_addr_isbroadcast(u32_t addr, const struct netif *netif);
+
+#define ip_addr_netmask_valid(netmask) ip4_addr_netmask_valid((netmask)->addr)
+u8_t ip4_addr_netmask_valid(u32_t netmask);
+
+#define ip_addr_ismulticast(addr1) (((addr1)->addr & PP_HTONL(0xf0000000UL)) == PP_HTONL(0xe0000000UL))
+
+#define ip_addr_islinklocal(addr1) (((addr1)->addr & PP_HTONL(0xffff0000UL)) == PP_HTONL(0xa9fe0000UL))
+
+//#define ip_addr_debug_print(debug, ipaddr) \
+//  LWIP_DEBUGF(debug, ("%"U16_F".%"U16_F".%"U16_F".%"U16_F,             \
+//                      ipaddr != NULL ? ip4_addr1_16(ipaddr) : 0,       \
+//                      ipaddr != NULL ? ip4_addr2_16(ipaddr) : 0,       \
+//                      ipaddr != NULL ? ip4_addr3_16(ipaddr) : 0,       \
+//                      ipaddr != NULL ? ip4_addr4_16(ipaddr) : 0))
+
+/* Get one byte from the 4-byte address */
+#define ip4_addr1(ipaddr) (((u8_t*)(ipaddr))[0])
+#define ip4_addr2(ipaddr) (((u8_t*)(ipaddr))[1])
+#define ip4_addr3(ipaddr) (((u8_t*)(ipaddr))[2])
+#define ip4_addr4(ipaddr) (((u8_t*)(ipaddr))[3])
+/* These are cast to u16_t, with the intent that they are often arguments
+ * to printf using the U16_F format from cc.h. */
+#define ip4_addr1_16(ipaddr) ((u16_t)ip4_addr1(ipaddr))
+#define ip4_addr2_16(ipaddr) ((u16_t)ip4_addr2(ipaddr))
+#define ip4_addr3_16(ipaddr) ((u16_t)ip4_addr3(ipaddr))
+#define ip4_addr4_16(ipaddr) ((u16_t)ip4_addr4(ipaddr))
+
+/** For backwards compatibility */
+#define ip_ntoa(ipaddr)  ipaddr_ntoa(ipaddr)
+
+u32_t ipaddr_addr(const char *cp);
+int ipaddr_aton(const char *cp, ip_addr_t *addr);
+/** returns ptr to static buffer; not reentrant! */
+char *ipaddr_ntoa(const ip_addr_t *addr);
+char *ipaddr_ntoa_r(const ip_addr_t *addr, char *buf, int buflen);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LWIP_IP_ADDR_H__ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/Socket/lwip/netdb.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,111 @@
+/*
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * This file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Simon Goldschmidt
+ *
+ */
+
+#include "opt.h"
+
+#if LWIP_DNS && LWIP_SOCKET
+
+#include "sockets.h"
+
+/* some rarely used options */
+#ifndef LWIP_DNS_API_DECLARE_H_ERRNO
+#define LWIP_DNS_API_DECLARE_H_ERRNO 1
+#endif
+
+#ifndef LWIP_DNS_API_DEFINE_ERRORS
+#define LWIP_DNS_API_DEFINE_ERRORS 1
+#endif
+
+#ifndef LWIP_DNS_API_DECLARE_STRUCTS
+#define LWIP_DNS_API_DECLARE_STRUCTS 1
+#endif
+
+#if LWIP_DNS_API_DEFINE_ERRORS
+/** Errors used by the DNS API functions, h_errno can be one of them */
+#define EAI_NONAME      200
+#define EAI_SERVICE     201
+#define EAI_FAIL        202
+#define EAI_MEMORY      203
+
+#define HOST_NOT_FOUND  210
+#define NO_DATA         211
+#define NO_RECOVERY     212
+#define TRY_AGAIN       213
+#endif /* LWIP_DNS_API_DEFINE_ERRORS */
+
+#if LWIP_DNS_API_DECLARE_STRUCTS
+struct hostent {
+    char  *h_name;      /* Official name of the host. */
+    char **h_aliases;   /* A pointer to an array of pointers to alternative host names,
+                           terminated by a null pointer. */
+    int    h_addrtype;  /* Address type. */
+    int    h_length;    /* The length, in bytes, of the address. */
+    char **h_addr_list; /* A pointer to an array of pointers to network addresses (in
+                           network byte order) for the host, terminated by a null pointer. */
+#define h_addr h_addr_list[0] /* for backward compatibility */
+};
+
+struct addrinfo {
+    int               ai_flags;      /* Input flags. */
+    int               ai_family;     /* Address family of socket. */
+    int               ai_socktype;   /* Socket type. */
+    int               ai_protocol;   /* Protocol of socket. */
+    socklen_t         ai_addrlen;    /* Length of socket address. */
+    struct sockaddr  *ai_addr;       /* Socket address of socket. */
+    char             *ai_canonname;  /* Canonical name of service location. */
+    struct addrinfo  *ai_next;       /* Pointer to next in list. */
+};
+#endif /* LWIP_DNS_API_DECLARE_STRUCTS */
+
+#if LWIP_DNS_API_DECLARE_H_ERRNO
+/* application accessable error code set by the DNS API functions */
+extern int h_errno;
+#endif /* LWIP_DNS_API_DECLARE_H_ERRNO*/
+
+#if 0
+struct hostent *lwip_gethostbyname(const char *name);
+int lwip_gethostbyname_r(const char *name, struct hostent *ret, char *buf,
+                size_t buflen, struct hostent **result, int *h_errnop);
+void lwip_freeaddrinfo(struct addrinfo *ai);
+int lwip_getaddrinfo(const char *nodename,
+       const char *servname,
+       const struct addrinfo *hints,
+       struct addrinfo **res);
+#endif
+
+#if LWIP_COMPAT_SOCKETS
+#define gethostbyname(name) lwip_gethostbyname(name)
+#define gethostbyname_r(name, ret, buf, buflen, result, h_errnop) \
+       lwip_gethostbyname_r(name, ret, buf, buflen, result, h_errnop)
+#define freeaddrinfo(addrinfo) lwip_freeaddrinfo(a)
+#define getaddrinfo(nodname, servname, hints, res) \
+       lwip_getaddrinfo(nodname, servname, hints, res)
+#endif /* LWIP_COMPAT_SOCKETS */
+
+#endif /* LWIP_DNS && LWIP_SOCKET */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/Socket/lwip/opt.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,53 @@
+
+#include <stdint.h>
+
+
+#define LWIP_SOCKET 1
+#define LWIP_TCP 1
+#define LWIP_UDPLITE 1
+#define LWIP_DNS 1
+
+#define LWIP_DNS_API_DECLARE_H_ERRNO 0
+#define LWIP_DNS_API_DEFINE_ERRORS 0
+
+#define LWIP_PLATFORM_BYTESWAP 1
+
+
+typedef uint8_t u8_t;
+typedef uint16_t u16_t;
+typedef uint32_t u32_t;
+
+typedef int8_t s8_t;
+typedef int16_t s16_t;
+typedef int32_t s32_t;
+
+
+
+
+#define PACK_STRUCT_FIELD(x) x __attribute__((packed))
+  #define PACK_STRUCT_STRUCT __attribute__((packed))
+  #define PACK_STRUCT_BEGIN
+  #define PACK_STRUCT_END
+
+
+
+#define LWIP_PLATFORM_HTONS(x) ( (((u16_t)(x))>>8) | (((x)&0xFF)<<8) )
+#define LWIP_PLATFORM_HTONL(x) ( (((u32_t)(x))>>24) | (((x)&0xFF0000)>>8) \
+                               | (((x)&0xFF00)<<8) | (((x)&0xFF)<<24) )
+
+
+#ifdef LWIP_PLATFORM_BYTESWAP
+
+#define htons LWIP_PLATFORM_HTONS
+#define htonl LWIP_PLATFORM_HTONL
+#define ntohs LWIP_PLATFORM_HTONS
+#define ntohl LWIP_PLATFORM_HTONL
+
+#else
+
+#define htons(x) x
+#define htonl(x) x
+#define ntohs(x) x
+#define ntohl(x) x
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/Socket/lwip/sockets.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,379 @@
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * This file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ */
+
+
+#ifndef __LWIP_SOCKETS_H__
+#define __LWIP_SOCKETS_H__
+
+#include "opt.h"
+
+#if LWIP_SOCKET /* don't build if not configured for use in lwipopts.h */
+
+#include <stddef.h> /* for size_t */
+
+#include "ip_addr.h"
+#include "inet.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* members are in network byte order */
+struct sockaddr_in {
+  u8_t sin_len;
+  u8_t sin_family;
+  u16_t sin_port;
+  struct in_addr sin_addr;
+  char sin_zero[8];
+};
+
+struct sockaddr {
+  u8_t sa_len;
+  u8_t sa_family;
+  u16_t sa_data[14];
+};
+
+#ifndef socklen_t
+#  define socklen_t u32_t
+#endif
+
+/* Socket protocol types (TCP/UDP/RAW) */
+#define SOCK_STREAM     1
+#define SOCK_DGRAM      2
+#define SOCK_RAW        3
+
+/*
+ * Option flags per-socket. These must match the SOF_ flags in ip.h (checked in init.c)
+ */
+#define  SO_DEBUG       0x0001 /* Unimplemented: turn on debugging info recording */
+#define  SO_ACCEPTCONN  0x0002 /* socket has had listen() */
+#define  SO_REUSEADDR   0x0004 /* Allow local address reuse */
+#define  SO_KEEPALIVE   0x0008 /* keep connections alive */
+#define  SO_DONTROUTE   0x0010 /* Unimplemented: just use interface addresses */
+#define  SO_BROADCAST   0x0020 /* permit to send and to receive broadcast messages (see IP_SOF_BROADCAST option) */
+#define  SO_USELOOPBACK 0x0040 /* Unimplemented: bypass hardware when possible */
+#define  SO_LINGER      0x0080 /* linger on close if data present */
+#define  SO_OOBINLINE   0x0100 /* Unimplemented: leave received OOB data in line */
+#define  SO_REUSEPORT   0x0200 /* Unimplemented: allow local address & port reuse */
+
+#define SO_DONTLINGER   ((int)(~SO_LINGER))
+
+/*
+ * Additional options, not kept in so_options.
+ */
+#define SO_SNDBUF    0x1001    /* Unimplemented: send buffer size */
+#define SO_RCVBUF    0x1002    /* receive buffer size */
+#define SO_SNDLOWAT  0x1003    /* Unimplemented: send low-water mark */
+#define SO_RCVLOWAT  0x1004    /* Unimplemented: receive low-water mark */
+#define SO_SNDTIMEO  0x1005    /* Unimplemented: send timeout */
+#define SO_RCVTIMEO  0x1006    /* receive timeout */
+#define SO_ERROR     0x1007    /* get error status and clear */
+#define SO_TYPE      0x1008    /* get socket type */
+#define SO_CONTIMEO  0x1009    /* Unimplemented: connect timeout */
+#define SO_NO_CHECK  0x100a    /* don't create UDP checksum */
+
+
+/*
+ * Structure used for manipulating linger option.
+ */
+struct linger {
+       int l_onoff;                /* option on/off */
+       int l_linger;               /* linger time */
+};
+
+/*
+ * Level number for (get/set)sockopt() to apply to socket itself.
+ */
+#define  SOL_SOCKET  0xfff    /* options for socket level */
+
+
+#define AF_UNSPEC       0
+#define AF_INET         2
+#define PF_INET         AF_INET
+#define PF_UNSPEC       AF_UNSPEC
+
+#define IPPROTO_IP      0
+#define IPPROTO_TCP     6
+#define IPPROTO_UDP     17
+#define IPPROTO_UDPLITE 136
+
+/* Flags we can use with send and recv. */
+#define MSG_PEEK       0x01    /* Peeks at an incoming message */
+#define MSG_WAITALL    0x02    /* Unimplemented: Requests that the function block until the full amount of data requested can be returned */
+#define MSG_OOB        0x04    /* Unimplemented: Requests out-of-band data. The significance and semantics of out-of-band data are protocol-specific */
+#define MSG_DONTWAIT   0x08    /* Nonblocking i/o for this operation only */
+#define MSG_MORE       0x10    /* Sender will send more */
+
+
+/*
+ * Options for level IPPROTO_IP
+ */
+#define IP_TOS             1
+#define IP_TTL             2
+
+#if LWIP_TCP
+/*
+ * Options for level IPPROTO_TCP
+ */
+#define TCP_NODELAY    0x01    /* don't delay send to coalesce packets */
+#define TCP_KEEPALIVE  0x02    /* send KEEPALIVE probes when idle for pcb->keep_idle milliseconds */
+#define TCP_KEEPIDLE   0x03    /* set pcb->keep_idle  - Same as TCP_KEEPALIVE, but use seconds for get/setsockopt */
+#define TCP_KEEPINTVL  0x04    /* set pcb->keep_intvl - Use seconds for get/setsockopt */
+#define TCP_KEEPCNT    0x05    /* set pcb->keep_cnt   - Use number of probes sent for get/setsockopt */
+#endif /* LWIP_TCP */
+
+#if LWIP_UDP && LWIP_UDPLITE
+/*
+ * Options for level IPPROTO_UDPLITE
+ */
+#define UDPLITE_SEND_CSCOV 0x01 /* sender checksum coverage */
+#define UDPLITE_RECV_CSCOV 0x02 /* minimal receiver checksum coverage */
+#endif /* LWIP_UDP && LWIP_UDPLITE*/
+
+
+#if LWIP_IGMP
+/*
+ * Options and types for UDP multicast traffic handling
+ */
+#define IP_ADD_MEMBERSHIP  3
+#define IP_DROP_MEMBERSHIP 4
+#define IP_MULTICAST_TTL   5
+#define IP_MULTICAST_IF    6
+#define IP_MULTICAST_LOOP  7
+
+typedef struct ip_mreq {
+    struct in_addr imr_multiaddr; /* IP multicast address of group */
+    struct in_addr imr_interface; /* local IP address of interface */
+} ip_mreq;
+#endif /* LWIP_IGMP */
+
+/*
+ * The Type of Service provides an indication of the abstract
+ * parameters of the quality of service desired.  These parameters are
+ * to be used to guide the selection of the actual service parameters
+ * when transmitting a datagram through a particular network.  Several
+ * networks offer service precedence, which somehow treats high
+ * precedence traffic as more important than other traffic (generally
+ * by accepting only traffic above a certain precedence at time of high
+ * load).  The major choice is a three way tradeoff between low-delay,
+ * high-reliability, and high-throughput.
+ * The use of the Delay, Throughput, and Reliability indications may
+ * increase the cost (in some sense) of the service.  In many networks
+ * better performance for one of these parameters is coupled with worse
+ * performance on another.  Except for very unusual cases at most two
+ * of these three indications should be set.
+ */
+#define IPTOS_TOS_MASK          0x1E
+#define IPTOS_TOS(tos)          ((tos) & IPTOS_TOS_MASK)
+#define IPTOS_LOWDELAY          0x10
+#define IPTOS_THROUGHPUT        0x08
+#define IPTOS_RELIABILITY       0x04
+#define IPTOS_LOWCOST           0x02
+#define IPTOS_MINCOST           IPTOS_LOWCOST
+
+/*
+ * The Network Control precedence designation is intended to be used
+ * within a network only.  The actual use and control of that
+ * designation is up to each network. The Internetwork Control
+ * designation is intended for use by gateway control originators only.
+ * If the actual use of these precedence designations is of concern to
+ * a particular network, it is the responsibility of that network to
+ * control the access to, and use of, those precedence designations.
+ */
+#define IPTOS_PREC_MASK                 0xe0
+#define IPTOS_PREC(tos)                ((tos) & IPTOS_PREC_MASK)
+#define IPTOS_PREC_NETCONTROL           0xe0
+#define IPTOS_PREC_INTERNETCONTROL      0xc0
+#define IPTOS_PREC_CRITIC_ECP           0xa0
+#define IPTOS_PREC_FLASHOVERRIDE        0x80
+#define IPTOS_PREC_FLASH                0x60
+#define IPTOS_PREC_IMMEDIATE            0x40
+#define IPTOS_PREC_PRIORITY             0x20
+#define IPTOS_PREC_ROUTINE              0x00
+
+
+/*
+ * Commands for ioctlsocket(),  taken from the BSD file fcntl.h.
+ * lwip_ioctl only supports FIONREAD and FIONBIO, for now
+ *
+ * Ioctl's have the command encoded in the lower word,
+ * and the size of any in or out parameters in the upper
+ * word.  The high 2 bits of the upper word are used
+ * to encode the in/out status of the parameter; for now
+ * we restrict parameters to at most 128 bytes.
+ */
+#if !defined(FIONREAD) || !defined(FIONBIO)
+#define IOCPARM_MASK    0x7fU           /* parameters must be < 128 bytes */
+#define IOC_VOID        0x20000000UL    /* no parameters */
+#define IOC_OUT         0x40000000UL    /* copy out parameters */
+#define IOC_IN          0x80000000UL    /* copy in parameters */
+#define IOC_INOUT       (IOC_IN|IOC_OUT)
+                                        /* 0x20000000 distinguishes new &
+                                           old ioctl's */
+#define _IO(x,y)        (IOC_VOID|((x)<<8)|(y))
+
+#define _IOR(x,y,t)     (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
+
+#define _IOW(x,y,t)     (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
+#endif /* !defined(FIONREAD) || !defined(FIONBIO) */
+
+#ifndef FIONREAD
+#define FIONREAD    _IOR('f', 127, unsigned long) /* get # bytes to read */
+#endif
+#ifndef FIONBIO
+#define FIONBIO     _IOW('f', 126, unsigned long) /* set/clear non-blocking i/o */
+#endif
+
+/* Socket I/O Controls: unimplemented */
+#ifndef SIOCSHIWAT
+#define SIOCSHIWAT  _IOW('s',  0, unsigned long)  /* set high watermark */
+#define SIOCGHIWAT  _IOR('s',  1, unsigned long)  /* get high watermark */
+#define SIOCSLOWAT  _IOW('s',  2, unsigned long)  /* set low watermark */
+#define SIOCGLOWAT  _IOR('s',  3, unsigned long)  /* get low watermark */
+#define SIOCATMARK  _IOR('s',  7, unsigned long)  /* at oob mark? */
+#endif
+
+/* commands for fnctl */
+#ifndef F_GETFL
+#define F_GETFL 3
+#endif
+#ifndef F_SETFL
+#define F_SETFL 4
+#endif
+
+/* File status flags and file access modes for fnctl,
+   these are bits in an int. */
+#ifndef O_NONBLOCK
+#define O_NONBLOCK  1 /* nonblocking I/O */
+#endif
+#ifndef O_NDELAY
+#define O_NDELAY    1 /* same as O_NONBLOCK, for compatibility */
+#endif
+
+#ifndef SHUT_RD
+  #define SHUT_RD   1
+  #define SHUT_WR   2
+  #define SHUT_RDWR 3
+#endif
+
+/* FD_SET used for lwip_select */
+//#ifndef FD_SET
+//  #undef  FD_SETSIZE
+//  /* Make FD_SETSIZE match NUM_SOCKETS in socket.c */
+//  #define FD_SETSIZE    MEMP_NUM_NETCONN
+//  #define FD_SET(n, p)  ((p)->fd_bits[(n)/8] |=  (1 << ((n) & 7)))
+//  #define FD_CLR(n, p)  ((p)->fd_bits[(n)/8] &= ~(1 << ((n) & 7)))
+//  #define FD_ISSET(n,p) ((p)->fd_bits[(n)/8] &   (1 << ((n) & 7)))
+//  #define FD_ZERO(p)    memset((void*)(p),0,sizeof(*(p)))
+//
+//  typedef struct fd_set {
+//          unsigned char fd_bits [(FD_SETSIZE+7)/8];
+//        } fd_set;
+//
+//#endif /* FD_SET */
+
+/** LWIP_TIMEVAL_PRIVATE: if you want to use the struct timeval provided
+ * by your system, set this to 0 and include <sys/time.h> in cc.h */
+#ifndef LWIP_TIMEVAL_PRIVATE
+#define LWIP_TIMEVAL_PRIVATE 1
+#endif
+
+#if LWIP_TIMEVAL_PRIVATE
+struct timeval {
+  long    tv_sec;         /* seconds */
+  long    tv_usec;        /* and microseconds */
+};
+#endif /* LWIP_TIMEVAL_PRIVATE */
+
+#if 0
+void lwip_socket_init(void);
+
+int lwip_accept(int s, struct sockaddr *addr, socklen_t *addrlen);
+int lwip_bind(int s, const struct sockaddr *name, socklen_t namelen);
+int lwip_shutdown(int s, int how);
+int lwip_getpeername (int s, struct sockaddr *name, socklen_t *namelen);
+int lwip_getsockname (int s, struct sockaddr *name, socklen_t *namelen);
+int lwip_getsockopt (int s, int level, int optname, void *optval, socklen_t *optlen);
+int lwip_setsockopt (int s, int level, int optname, const void *optval, socklen_t optlen);
+int lwip_close(int s);
+int lwip_connect(int s, const struct sockaddr *name, socklen_t namelen);
+int lwip_listen(int s, int backlog);
+int lwip_recv(int s, void *mem, size_t len, int flags);
+int lwip_read(int s, void *mem, size_t len);
+int lwip_recvfrom(int s, void *mem, size_t len, int flags,
+      struct sockaddr *from, socklen_t *fromlen);
+int lwip_send(int s, const void *dataptr, size_t size, int flags);
+int lwip_sendto(int s, const void *dataptr, size_t size, int flags,
+    const struct sockaddr *to, socklen_t tolen);
+int lwip_socket(int domain, int type, int protocol);
+int lwip_write(int s, const void *dataptr, size_t size);
+int lwip_select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset,
+                struct timeval *timeout);
+int lwip_ioctl(int s, long cmd, void *argp);
+int lwip_fcntl(int s, int cmd, int val);
+
+#if LWIP_COMPAT_SOCKETS
+#define accept(a,b,c)         lwip_accept(a,b,c)
+#define bind(a,b,c)           lwip_bind(a,b,c)
+#define shutdown(a,b)         lwip_shutdown(a,b)
+#define closesocket(s)        lwip_close(s)
+#define connect(a,b,c)        lwip_connect(a,b,c)
+#define getsockname(a,b,c)    lwip_getsockname(a,b,c)
+#define getpeername(a,b,c)    lwip_getpeername(a,b,c)
+#define setsockopt(a,b,c,d,e) lwip_setsockopt(a,b,c,d,e)
+#define getsockopt(a,b,c,d,e) lwip_getsockopt(a,b,c,d,e)
+#define listen(a,b)           lwip_listen(a,b)
+#define recv(a,b,c,d)         lwip_recv(a,b,c,d)
+#define recvfrom(a,b,c,d,e,f) lwip_recvfrom(a,b,c,d,e,f)
+#define send(a,b,c,d)         lwip_send(a,b,c,d)
+#define sendto(a,b,c,d,e,f)   lwip_sendto(a,b,c,d,e,f)
+#define socket(a,b,c)         lwip_socket(a,b,c)
+#define select(a,b,c,d,e)     lwip_select(a,b,c,d,e)
+#define ioctlsocket(a,b,c)    lwip_ioctl(a,b,c)
+
+#if LWIP_POSIX_SOCKETS_IO_NAMES
+#define read(a,b,c)           lwip_read(a,b,c)
+#define write(a,b,c)          lwip_write(a,b,c)
+#define close(s)              lwip_close(s)
+#endif /* LWIP_POSIX_SOCKETS_IO_NAMES */
+
+#endif /* LWIP_COMPAT_SOCKETS */
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LWIP_SOCKET */
+
+#endif /* __LWIP_SOCKETS_H__ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/Socket/mBedSocketApi.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,35 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence:
+ *
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+#include "api/types/Socket/Socket.h"
+#include "api/types/Socket/TCPSocketServer.h"
+#include "api/types/Socket/TCPSocketConnection.h"
+#include "api/types/Socket/UDPSocket.h"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/SocketIrqHandlerMap.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,128 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+#include "Wiconnect.h"
+#include "PinIrqHandler.h"
+
+namespace wiconnect
+{
+
+/**
+ * Generic callback function.
+ *
+ * @note Internal use only.
+ */
+class SocketIrqHandlerMap
+{
+public:
+    /*************************************************************************************************/
+    SocketIrqHandlerMap()
+    {
+        memset(handlers, 0, sizeof(handlers));
+    }
+
+    /*************************************************************************************************/
+    ~SocketIrqHandlerMap()
+    {
+        for(int i = 0; i < WICONNECT_MAX_PIN_IRQ_HANDLERS; ++i)
+        {
+            if(handlers[i] != NULL)
+            {
+                handlers[i]->~PinIrqHandler();
+            }
+        }
+    }
+
+    /*************************************************************************************************/
+    bool pinIsRegistered(Pin pin)
+    {
+        for(int i = 0; i < WICONNECT_MAX_PIN_IRQ_HANDLERS; ++i)
+        {
+            if(handlers[i] != NULL && handlers[i]->irqPin == pin)
+            {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /*************************************************************************************************/
+    WiconnectResult registerHandler(Pin pin, const Callback &callback)
+    {
+        if(pinIsRegistered(pin))
+        {
+            return WICONNECT_DUPLICATE;
+        }
+
+        PinIrqHandler *handler = NULL;
+
+        for(int i = 0; i < WICONNECT_MAX_PIN_IRQ_HANDLERS; ++i)
+        {
+            if(handlers[i] == NULL)
+            {
+                handler = (PinIrqHandler*)&handlerBuffers[i];
+                handlers[i] = handler;
+            }
+        }
+
+        if(handler == NULL)
+        {
+            return WICONNECT_NOT_FOUND;
+        }
+
+        *handler = PinIrqHandler(pin, callback);
+
+        return WICONNECT_SUCCESS;
+    }
+
+    /*************************************************************************************************/
+    WiconnectResult unregisterHandler(Pin pin)
+    {
+        for(int i = 0; i < WICONNECT_MAX_PIN_IRQ_HANDLERS; ++i)
+        {
+            if(handlers[i] != NULL && handlers[i]->irqPin == pin)
+            {
+                handlers[i]->~PinIrqHandler();
+                handlers[i] = NULL;
+                return WICONNECT_SUCCESS;
+            }
+        }
+
+        return WICONNECT_NOT_FOUND;
+    }
+
+private:
+    PinIrqHandler *handlers[WICONNECT_MAX_PIN_IRQ_HANDLERS];
+    PinIrqHandlerBuffer handlerBuffers[WICONNECT_MAX_PIN_IRQ_HANDLERS];
+};
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/TimeoutTimer.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,58 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+namespace wiconnect
+{
+
+/**
+ * Class for maintaining command processing timeouts.
+ *
+ * @note Internal use only.
+ */
+class TimeoutTimer
+{
+public:
+    TimeoutTimer();
+
+    void reset(void);
+
+    TimerTimeout remainingMs(TimerTimeout timeoutMs);
+    TimerTimeout readMs();
+
+    bool timedOut(TimerTimeout timeoutMs);
+
+protected:
+    volatile TimerTimeout _start;
+
+};
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/WiconnectFile.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,90 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+#include "Wiconnect.h"
+
+namespace wiconnect
+{
+
+
+/**
+ * @ingroup api_file_types
+ *
+ * @brief WiConnect WiFi module file object.
+ *
+ */
+class WiconnectFile
+{
+public:
+    WiconnectFile(int rxBufferLen = 0, void *rxBuffer = NULL);
+    ~WiconnectFile();
+
+    const char* getName() const;
+    uint32_t getSize() const;
+    FileType getType() const;
+    FileFlags getFlags() const;
+    uint32_t getVersion() const;
+    const char* getVersionStr(char *buffer = NULL) const;
+
+    WiconnectResult close();
+    WiconnectResult read(void* buffer, uint16_t maxLength, uint16_t *bytesRead);
+    WiconnectResult read(uint8_t **bufferPtr = NULL, uint16_t *bytesReadPtr = NULL);
+    WiconnectResult getc(uint8_t *c);
+    void clearRxBuffer();
+
+    const WiconnectFile* getNext() const;
+    const WiconnectFile* getPrevious() const;
+
+protected:
+    WiconnectResult openForRead(uint8_t handle, const char *filename);
+    WiconnectResult initWithListing(const char *typeStr, const char *flagsStr, const char* sizeStr, const char *versionStr, const char *nameStr);
+
+    uint8_t handle;
+    bool readEnabled;
+    char name[WICONNECT_MAX_FILENAME_SIZE];
+    uint32_t size;
+    FileType type;
+    FileFlags flags;
+    uint32_t version;
+    Wiconnect *wiconnect;
+    WiconnectFile *next;
+    WiconnectFile *previous;
+
+    Buffer rxBuffer;
+
+    void* operator new(size_t size);
+    void operator delete(void*);
+
+    friend class FileInterface;
+    friend class FileList;
+};
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/WiconnectSerial.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,69 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+#include "api/WiconnectTypes.h"
+
+
+namespace wiconnect
+{
+
+/**
+ * Serial class for interfacing to WiConnect WiFi module.
+ *
+ * @note Internal use only.
+ */
+class WiconnectSerial WICONNECT_SERIAL_BASE_CLASS
+{
+public:
+    WiconnectSerial(const SerialConfig  &config, Wiconnect *wiconnect = NULL);
+    virtual ~WiconnectSerial();
+
+    void initialize(void);
+    void flush(void);
+    int write(const void *data, int bytesToWrite, TimerTimeout timeoutMs);
+    int read(void *data, int bytesToRead, TimerTimeout timeoutMs);
+
+    uint32_t getBaud(){ return baudRate; }
+
+protected:
+    TimeoutTimer timeoutTimer;
+    uint32_t baudRate;
+
+#ifdef WICONNECT_SERIAL_RX_BUFFER
+    uint8_t ringBuffer[32];
+    bool bufferAlloc;
+    void rxIrqHandler(void);
+#endif
+};
+
+
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/WiconnectSocket.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,95 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+#include "api/WiconnectTypes.h"
+
+namespace wiconnect
+{
+
+/**
+ * @ingroup api_socket_types
+ *
+ * @brief Connection object to remote server.
+ *
+ */
+class WiconnectSocket
+{
+public:
+    WiconnectSocket(int rxBufferLen = 0, void *rxBuffer = NULL, int txBufferLen = 0, void *txBuffer = NULL);
+    ~WiconnectSocket();
+
+    WiconnectResult close();
+    WiconnectResult poll(bool *rxDataAvailablePtr, bool autoClose = false);
+    WiconnectResult write(const void* buffer, int length, bool flush = true);
+    WiconnectResult write(int length, bool flush = true);
+    WiconnectResult read(void* buffer, uint16_t maxLength, uint16_t *bytesRead);
+    WiconnectResult read(uint8_t **bufferPtr = NULL, uint16_t *bytesReadPtr = NULL);
+    WiconnectResult putc(uint8_t c, bool flush = false);
+    WiconnectResult puts(const char *s, bool flush = true);
+    WiconnectResult getc(uint8_t *c);
+    WiconnectResult printf(const char* format, ...);
+    virtual WiconnectResult flushTxBuffer();
+    void clearRxBuffer();
+
+    uint8_t *getTxBuffer();
+    int getTxBufferSize();
+    int getTxBufferBytesPending();
+    uint8_t *getRxBuffer();
+    int getRxBufferSize();
+    int getRxBufferBytesPending();
+
+    bool isConnected();
+    SocketType getType();
+    const char* getHost();
+    uint16_t getLocalPort();
+    uint16_t getRemotePort();
+    uint8_t getHandle();
+
+protected:
+    bool connected;
+    bool enableAutoClose;
+    SocketType type;
+    uint8_t handle;
+    char host[WICONNECT_MAX_HOST_SIZE];
+    uint16_t localPort;
+    uint16_t remotePort;
+    Wiconnect *wiconnect;
+    Buffer txBuffer;
+    Buffer rxBuffer;
+
+    WiconnectResult init(uint8_t handle, SocketType type, const char *host, uint16_t remotePort, uint16_t localPort);
+
+    friend class SocketInterface;
+    friend class GhmInterface;
+};
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/types/WiconnectUdpServer.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,58 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence:
+ *
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+#include "api/WiconnectTypes.h"
+#include "WiconnectSocket.h"
+
+namespace wiconnect
+{
+
+/**
+ * @ingroup api_socket_types
+ *
+ * @brief UDP Server Listening socket
+ *
+ */
+class WiconnectUdpServer : public WiconnectSocket
+{
+public:
+    WiconnectUdpServer(int rxBufferLen = 0, void *rxBuffer = NULL, int txBufferLen = 0, void *txBuffer = NULL);
+
+    WiconnectResult getRemoteClient(uint32_t *ipAddress, uint16_t *port);
+    WiconnectResult setRemoteClient(const char* host, uint16_t port);
+    WiconnectResult setRemoteClient(uint32_t ip, uint16_t port);
+
+    WiconnectResult flushTxBuffer();
+
+};
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common.cpp	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2014, ACKme Networks
+ * All Rights Reserved.
+ *
+ * This is UNPUBLISHED PROPRIETARY SOURCE CODE of ACKme Networks;
+ * the contents of this file may not be disclosed to third parties, copied
+ * or duplicated in any form, in whole or in part, without the prior
+ * written permission of ACKme Networks.
+ */
+
+
+
+#include "api/types/Socket/Socket.h"
+#include "common.h"
+
+
+/*************************************************************************************************/
+int gethostbyname_r(const char *name, struct hostent *ret, char *buf, size_t buflen, struct hostent **result, int *h_errnop)
+{
+    return -1;
+}
+
+/*************************************************************************************************/
+struct hostent *gethostbyname(const char *name)
+{
+    static uint8_t buffer[sizeof(struct hostent) + sizeof(void*)*3 + 1*sizeof(uint32_t)];
+    struct hostent *hostPtr = (struct hostent*)buffer;
+    char **ipPtrList = (char**)&buffer[sizeof(struct hostent)];
+    char **aliasPtrList = (char**)&buffer[sizeof(struct hostent) + sizeof(void*)*2];
+    uint32_t *ipPtr = (uint32_t*)&buffer[sizeof(struct hostent) + sizeof(void*)*3];
+
+
+    hostPtr->h_addr_list = ipPtrList;
+    hostPtr->h_aliases = aliasPtrList;
+    hostPtr->h_addrtype = AF_INET;
+    hostPtr->h_length = sizeof(uint32_t);
+    hostPtr->h_name = (char*)name;
+
+    aliasPtrList[0] = NULL;
+    ipPtrList[0] = (char*)ipPtr;
+    ipPtrList[1] = NULL;
+
+    Wiconnect *wiconnect = Wiconnect::getInstance();
+    if(wiconnect->lookup(name, ipPtr) != WICONNECT_SUCCESS)
+    {
+        ipPtrList[0] = NULL;
+    }
+
+    return hostPtr;
+}
+
+/*************************************************************************************************/
+u32_t ipaddr_addr(const char *cp)
+{
+    u32_t ip = 0;
+
+    Wiconnect::strToIp(cp, &ip);
+
+    return ip;
+}
+
+/*************************************************************************************************/
+int ipaddr_aton(const char *cp, ip_addr_t *addr)
+{
+    return Wiconnect::strToIp(cp, &addr->addr) ? 0 : -1;
+}
+
+/*************************************************************************************************/
+// returns ptr to static buffer; not reentrant!
+char *ipaddr_ntoa(const ip_addr_t *addr)
+{
+    return (char*)Wiconnect::ipToStr(addr->addr);
+}
+
+/*************************************************************************************************/
+char *ipaddr_ntoa_r(const ip_addr_t *addr, char *buf, int buflen)
+{
+    return (char*)Wiconnect::ipToStr(addr->addr, buf);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/DoxygenLayout.xml	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,189 @@
+<doxygenlayout version="1.0">
+  <!-- Generated by doxygen 1.8.7 -->
+  <!-- Navigation index tabs for HTML output -->
+  <navindex>
+    <tab type="mainpage" visible="yes" title="Library Overview"/>
+    <tab type="pages" visible="yes" title="" intro=""/>
+    <tab type="modules" visible="yes" title="Library API" intro=""/>
+    <tab type="examples" visible="yes" title="API Examples" intro=""/>
+    
+    <tab type="classes" visible="yes" title="">
+      <tab type="classlist" visible="yes" title="" intro=""/>
+      <tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/> 
+      <tab type="hierarchy" visible="yes" title="" intro=""/>
+      <tab type="classmembers" visible="yes" title="" intro=""/>
+    </tab>
+    <tab type="user" url="http://wiconnect.ack.me/2.0/general_overview" title="WiConnect Reference Manual"/>
+    <tab type="user" url="http://www.ack.me/WiConnect" title="ACKme Website"/>
+  </navindex>
+
+  <!-- Layout definition for a class page -->
+  <class>
+    <briefdescription visible="yes"/>
+    <includes visible="$SHOW_INCLUDE_FILES"/>
+    <inheritancegraph visible="$CLASS_GRAPH"/>
+    <collaborationgraph visible="$COLLABORATION_GRAPH"/>
+    <memberdecl>
+      <nestedclasses visible="yes" title=""/>
+      <publictypes title=""/>
+      <services title=""/>
+      <interfaces title=""/>
+      <publicslots title=""/>
+      <signals title=""/>
+      <publicmethods title=""/>
+      <publicstaticmethods title=""/>
+      <publicattributes title=""/>
+      <publicstaticattributes title=""/>
+      <protectedtypes title=""/>
+      <protectedslots title=""/>
+      <protectedmethods title=""/>
+      <protectedstaticmethods title=""/>
+      <protectedattributes title=""/>
+      <protectedstaticattributes title=""/>
+      <packagetypes title=""/>
+      <packagemethods title=""/>
+      <packagestaticmethods title=""/>
+      <packageattributes title=""/>
+      <packagestaticattributes title=""/>
+      <properties title=""/>
+      <events title=""/>
+      <privatetypes title=""/>
+      <privateslots title=""/>
+      <privatemethods title=""/>
+      <privatestaticmethods title=""/>
+      <privateattributes title=""/>
+      <privatestaticattributes title=""/>
+      <friends title=""/>
+      <related title="" subtitle=""/>
+      <membergroups visible="yes"/>
+    </memberdecl>
+    <detaileddescription title=""/>
+    <memberdef>
+      <inlineclasses title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <services title=""/>
+      <interfaces title=""/>
+      <constructors title=""/>
+      <functions title=""/>
+      <related title=""/>
+      <variables title=""/>
+      <properties title=""/>
+      <events title=""/>
+    </memberdef>
+    <allmemberslink visible="yes"/>
+    <usedfiles visible="$SHOW_USED_FILES"/>
+    <authorsection visible="yes"/>
+  </class>
+
+  <!-- Layout definition for a namespace page -->
+  <namespace>
+    <briefdescription visible="yes"/>
+    <memberdecl>
+      <nestednamespaces visible="yes" title=""/>
+      <constantgroups visible="yes" title=""/>
+      <classes visible="yes" title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <functions title=""/>
+      <variables title=""/>
+      <membergroups visible="yes"/>
+    </memberdecl>
+    <detaileddescription title=""/>
+    <memberdef>
+      <inlineclasses title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <functions title=""/>
+      <variables title=""/>
+    </memberdef>
+    <authorsection visible="yes"/>
+  </namespace>
+
+  <!-- Layout definition for a file page -->
+  <file>
+    <briefdescription visible="yes"/>
+    <includes visible="$SHOW_INCLUDE_FILES"/>
+    <includegraph visible="$INCLUDE_GRAPH"/>
+    <includedbygraph visible="$INCLUDED_BY_GRAPH"/>
+    <sourcelink visible="yes"/>
+    <memberdecl>
+      <classes visible="yes" title=""/>
+      <namespaces visible="yes" title=""/>
+      <constantgroups visible="yes" title=""/>
+      <defines title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <functions title=""/>
+      <variables title=""/>
+      <membergroups visible="yes"/>
+    </memberdecl>
+    <detaileddescription title=""/>
+    <memberdef>
+      <inlineclasses title=""/>
+      <defines title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <functions title=""/>
+      <variables title=""/>
+    </memberdef>
+    <authorsection/>
+  </file>
+
+  <!-- Layout definition for a group page -->
+  <group>
+    <briefdescription visible="yes"/>
+    <groupgraph visible="$GROUP_GRAPHS"/>
+    <memberdecl>
+      <nestedgroups visible="yes" title=""/>
+      <dirs visible="yes" title=""/>
+      <files visible="yes" title=""/>
+      <namespaces visible="yes" title=""/>
+      <classes visible="yes" title=""/>
+      <defines title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <enumvalues title=""/>
+      <functions title=""/>
+      <variables title=""/>
+      <signals title=""/>
+      <publicslots title=""/>
+      <protectedslots title=""/>
+      <privateslots title=""/>
+      <events title=""/>
+      <properties title=""/>
+      <friends title=""/>
+      <membergroups visible="yes"/>
+    </memberdecl>
+    <detaileddescription title=""/>
+    <memberdef>
+      <pagedocs/>
+      <inlineclasses title=""/>
+      <defines title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <enumvalues title=""/>
+      <functions title=""/>
+      <variables title=""/>
+      <signals title=""/>
+      <publicslots title=""/>
+      <protectedslots title=""/>
+      <privateslots title=""/>
+      <events title=""/>
+      <properties title=""/>
+      <friends title=""/>
+    </memberdef>
+    <authorsection visible="yes"/>
+  </group>
+
+  <!-- Layout definition for a directory page -->
+  <directory>
+    <briefdescription visible="yes"/>
+    <directorygraph visible="yes"/>
+    <memberdecl>
+      <dirs visible="yes"/>
+      <files visible="yes"/>
+    </memberdecl>
+    <detaileddescription title=""/>
+  </directory>
+</doxygenlayout>
Binary file doc/ackmelogo.png has changed
Binary file doc/favicon.ico has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/footer.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,7 @@
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/header.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,40 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div>
\ No newline at end of file
--- a/doc/html/_callback_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_callback_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -105,7 +105,7 @@
 <div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#pragma once</span></div>
 <div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
 <div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;WiconnectTypes.h&quot;</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;api/WiconnectTypes.h&quot;</span></div>
 <div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &quot;FunctionPointer.h&quot;</span></div>
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div>
 <div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div>
@@ -168,7 +168,7 @@
 <div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;</div>
 <div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div>
 <div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;}</div>
-<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00159">WiconnectTypes.h:159</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_callback_html"><div class="ttname"><a href="classwiconnect_1_1_callback.html">wiconnect::Callback</a></div><div class="ttdoc">Generic callback function. </div><div class="ttdef"><b>Definition:</b> <a href="_callback_8h_source.html#l00049">Callback.h:49</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_function_pointer_html"><div class="ttname"><a href="classwiconnect_1_1_function_pointer.html">wiconnect::FunctionPointer</a></div><div class="ttdoc">Generic function pointer. </div><div class="ttdef"><b>Definition:</b> <a href="_function_pointer_8h_source.html#l00040">FunctionPointer.h:40</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
--- a/doc/html/_command_queue_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_command_queue_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -105,7 +105,7 @@
 <div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#pragma once</span></div>
 <div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
 <div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;WiconnectTypes.h&quot;</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;api/WiconnectTypes.h&quot;</span></div>
 <div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div>
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div>
 <div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="keyword">namespace </span>wiconnect</div>
@@ -176,7 +176,7 @@
 <div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div>
 <div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;</div>
 <div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;}</div>
-<div class="ttc" id="group__api__core__macro_html_ga7352d6662e438d0969593df9e657d43f"><div class="ttname"><a href="group__api__core__macro.html#ga7352d6662e438d0969593df9e657d43f">WICONNECT_MAX_QUEUED_COMMANDS</a></div><div class="ttdeci">#define WICONNECT_MAX_QUEUED_COMMANDS</div><div class="ttdoc">When WICONNECT_ASYNC_TIMER_ENABLED, this specifies the max number of asynchronous commands that may b...</div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00088">sdk.h:88</a></div></div>
+<div class="ttc" id="group__api__core__macro_html_ga7352d6662e438d0969593df9e657d43f"><div class="ttname"><a href="group__api__core__macro.html#ga7352d6662e438d0969593df9e657d43f">WICONNECT_MAX_QUEUED_COMMANDS</a></div><div class="ttdeci">#define WICONNECT_MAX_QUEUED_COMMANDS</div><div class="ttdoc">When WICONNECT_ASYNC_TIMER_ENABLED, this specifies the max number of asynchronous commands that may b...</div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00094">sdk.h:94</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/_file_interface_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_file_interface_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -153,7 +153,7 @@
 <div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;};</div>
 <div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div>
 <div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;}</div>
-<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00159">WiconnectTypes.h:159</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
 <div class="ttc" id="group__conversion__util_html_gae995028f5a70c58ccf6013c9811e79aa"><div class="ttname"><a href="group__conversion__util.html#gae995028f5a70c58ccf6013c9811e79aa">wiconnect::FileInterface::fileVersionStrToInt</a></div><div class="ttdeci">static bool fileVersionStrToInt(const char *versionStr, uint32_t *versionIntPtr)</div><div class="ttdoc">Convert string to file version uint32. </div></div>
 <div class="ttc" id="group__conversion__util_html_ga8d8da39cd5d2948367429ed4d8885c6b"><div class="ttname"><a href="group__conversion__util.html#ga8d8da39cd5d2948367429ed4d8885c6b">wiconnect::FileInterface::fileTypeToStr</a></div><div class="ttdeci">static const char * fileTypeToStr(FileType type)</div></div>
 <div class="ttc" id="group__api__file__methods_html_ga10536639c61213c037883dade021838f"><div class="ttname"><a href="group__api__file__methods.html#ga10536639c61213c037883dade021838f">wiconnect::FileInterface::listFiles</a></div><div class="ttdeci">WiconnectResult listFiles(FileList &amp;list, const char *name=NULL, FileType type=FILE_TYPE_ANY, uint32_t version=0)</div><div class="ttdoc">List the files on the Wiconnect WiFi module filesystem. </div></div>
@@ -162,11 +162,11 @@
 <div class="ttc" id="classwiconnect_1_1_reader_func_html"><div class="ttname"><a href="classwiconnect_1_1_reader_func.html">wiconnect::ReaderFunc</a></div><div class="ttdoc">Generic data reading callback function. </div><div class="ttdef"><b>Definition:</b> <a href="_reader_func_8h_source.html#l00045">ReaderFunc.h:45</a></div></div>
 <div class="ttc" id="group__api__file__methods_html_gaaf2977c691be09aeda102267a6769583"><div class="ttname"><a href="group__api__file__methods.html#gaaf2977c691be09aeda102267a6769583">wiconnect::FileInterface::openFile</a></div><div class="ttdeci">WiconnectResult openFile(WiconnectFile &amp;file, const char *name)</div><div class="ttdoc">Open a file on the Wiconnect WiFi module filesystem for reading. </div></div>
 <div class="ttc" id="group__api__file__methods_html_gafcf335cef42b7b3d0fd9d5af70c6ef7d"><div class="ttname"><a href="group__api__file__methods.html#gafcf335cef42b7b3d0fd9d5af70c6ef7d">wiconnect::FileInterface::deleteFile</a></div><div class="ttdeci">WiconnectResult deleteFile(const char *name)</div><div class="ttdoc">Delete a file for the Wiconnect WiFi module filesystem. </div></div>
-<div class="ttc" id="group__api__file__types_html_ga9919a4237eea2b0d1f27c16d64e62c63"><div class="ttname"><a href="group__api__file__types.html#ga9919a4237eea2b0d1f27c16d64e62c63">wiconnect::FileType</a></div><div class="ttdeci">FileType</div><div class="ttdoc">File type type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00383">WiconnectTypes.h:383</a></div></div>
+<div class="ttc" id="group__api__file__types_html_ga9919a4237eea2b0d1f27c16d64e62c63"><div class="ttname"><a href="group__api__file__types.html#ga9919a4237eea2b0d1f27c16d64e62c63">wiconnect::FileType</a></div><div class="ttdeci">FileType</div><div class="ttdoc">File type type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00399">WiconnectTypes.h:399</a></div></div>
 <div class="ttc" id="group__api__file__methods_html_ga16fb09105975644879eb09581ce486e5"><div class="ttname"><a href="group__api__file__methods.html#ga16fb09105975644879eb09581ce486e5">wiconnect::FileInterface::createFile</a></div><div class="ttdeci">WiconnectResult createFile(const ReaderFunc &amp;reader, void *user, const char *name, uint32_t size, uint32_t version=0, FileType type=FILE_TYPE_ANY, bool isEssential=false, int32_t checksum=-1)</div><div class="ttdoc">Create a file on the Wiconnect WiFi module filesystem. </div></div>
 <div class="ttc" id="group__conversion__util_html_gad74fbe6faf90d987b31380978f3ea341"><div class="ttname"><a href="group__conversion__util.html#gad74fbe6faf90d987b31380978f3ea341">wiconnect::FileInterface::fileVersionIntToStr</a></div><div class="ttdeci">static const char * fileVersionIntToStr(uint32_t version, bool verbose=true, char *buffer=NULL)</div><div class="ttdoc">Convert file version uint32 to string. </div></div>
-<div class="ttc" id="group__api__file__types_html_gafbe48908f5c190c3b0f272d3016e609e"><div class="ttname"><a href="group__api__file__types.html#gafbe48908f5c190c3b0f272d3016e609e">wiconnect::FileFlags</a></div><div class="ttdeci">FileFlags</div><div class="ttdoc">File flags type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00364">WiconnectTypes.h:364</a></div></div>
-<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00074">WiconnectInterface.h:74</a></div></div>
+<div class="ttc" id="group__api__file__types_html_gafbe48908f5c190c3b0f272d3016e609e"><div class="ttname"><a href="group__api__file__types.html#gafbe48908f5c190c3b0f272d3016e609e">wiconnect::FileFlags</a></div><div class="ttdeci">FileFlags</div><div class="ttdoc">File flags type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00380">WiconnectTypes.h:380</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00078">WiconnectInterface.h:78</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_file_interface_html"><div class="ttname"><a href="classwiconnect_1_1_file_interface.html">wiconnect::FileInterface</a></div><div class="ttdoc">The provides an interface for creating TCP/UDP/TLS/HTTP client sockets. A client socket connects to a...</div><div class="ttdef"><b>Definition:</b> <a href="_file_interface_8h_source.html#l00068">FileInterface.h:68</a></div></div>
 <div class="ttc" id="group__conversion__util_html_ga7503f1876a6e1f5086d8b4bb2c1a653a"><div class="ttname"><a href="group__conversion__util.html#ga7503f1876a6e1f5086d8b4bb2c1a653a">wiconnect::FileInterface::fileFlagsToStr</a></div><div class="ttdeci">static const char * fileFlagsToStr(FileFlags flags, char *buffer=NULL)</div><div class="ttdoc">Convert FileFlags to string. </div></div>
 </div><!-- fragment --></div><!-- contents -->
--- a/doc/html/_file_list_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_file_list_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -106,7 +106,7 @@
 <div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
 <div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div>
 <div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;Wiconnect.h&quot;</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &quot;types/WiconnectFile.h&quot;</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &quot;WiconnectFile.h&quot;</span></div>
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div>
 <div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="keyword">namespace </span>wiconnect</div>
 <div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;{</div>
@@ -126,7 +126,7 @@
 <div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <a class="code" href="classwiconnect_1_1_wiconnect_file.html">WiconnectFile</a> *listHead, *listTail;</div>
 <div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    uint8_t *buffer;</div>
 <div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    uint8_t *bufferPtr;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    <span class="keywordtype">int</span> bufferLen;</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    uint16_t bufferLen;</div>
 <div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    <span class="keywordtype">int</span> count;</div>
 <div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div>
 <div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> add(<span class="keyword">const</span> <span class="keywordtype">char</span> *typeStr, <span class="keyword">const</span> <span class="keywordtype">char</span> *flagsStr, <span class="keyword">const</span> <span class="keywordtype">char</span>* sizeStr, <span class="keyword">const</span> <span class="keywordtype">char</span> *versionStr, <span class="keyword">const</span> <span class="keywordtype">char</span> *nameStr);</div>
@@ -136,7 +136,7 @@
 <div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div>
 <div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div>
 <div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;}</div>
-<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00159">WiconnectTypes.h:159</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_wiconnect_file_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect_file.html">wiconnect::WiconnectFile</a></div><div class="ttdoc">WiConnect WiFi module file object. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_file_8h_source.html#l00044">WiconnectFile.h:44</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_file_list_html"><div class="ttname"><a href="classwiconnect_1_1_file_list.html">wiconnect::FileList</a></div><div class="ttdoc">WiConnect WiFi module file listing. </div><div class="ttdef"><b>Definition:</b> <a href="_file_list_8h_source.html#l00044">FileList.h:44</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_file_interface_html"><div class="ttname"><a href="classwiconnect_1_1_file_interface.html">wiconnect::FileInterface</a></div><div class="ttdoc">The provides an interface for creating TCP/UDP/TLS/HTTP client sockets. A client socket connects to a...</div><div class="ttdef"><b>Definition:</b> <a href="_file_interface_8h_source.html#l00068">FileInterface.h:68</a></div></div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/_ghm_interface_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,225 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('_ghm_interface_8h_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">GhmInterface.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#pragma once</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;Wiconnect.h&quot;</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &quot;api/types/WiconnectSocket.h&quot;</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &quot;api/types/GhmMessageList.h&quot;</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="keyword">namespace </span>wiconnect {</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#define GHM_ADD_INT(array, name, integerVal)            \</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">{                                                       \</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">    array.elementName = name;                           \</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">    array.type = GHM_VALUE_INT;                         \</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">    array.u.intValue = (uint32_t)integerVal;            \</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">}</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="preprocessor">#define GHM_ADD_STR(array, name, stringVal)             \</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="preprocessor">{                                                       \</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">    array.elementName = name;                           \</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">    array.type = GHM_VALUE_STR;                         \</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="preprocessor">    array.u.strValue = (const char*)stringVal;          \</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">}</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div>
+<div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classwiconnect_1_1_ghm_interface.html">   81</a></span>&#160;<span class="keyword">class </span><a class="code" href="classwiconnect_1_1_ghm_interface.html">GhmInterface</a></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;{</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__activate.html#gaff03ecaa08146e6925820209cdab56bd">ghmDownloadCapabilities</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *capsNameOrCustomUrl = NULL, uint32_t version = 0);</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *userName, <span class="keyword">const</span> <span class="keywordtype">char</span> *password, <span class="keyword">const</span> <span class="keywordtype">char</span> *capsFilename = NULL);</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__activate.html#gad0e0484d1f9a6608475874544f96708b">ghmDeactivate</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *userName, <span class="keyword">const</span> <span class="keywordtype">char</span> *password);</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__activate.html#ga8bec70f780ca7de9dce1a15830c179ff">ghmIsActivated</a>(<span class="keywordtype">bool</span> *statusPtr);</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2">ghmRead</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *controlName, <span class="keyword">const</span> <span class="keywordtype">char</span> **valueStrPtr);</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2">ghmRead</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *controlName, uint32_t *valueIntPtr);</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2">ghmRead</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *controlName, <span class="keywordtype">char</span> *valueBuffer, uint16_t valueBufferLen);</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223">ghmWrite</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *elementName, <span class="keyword">const</span> <span class="keywordtype">char</span> *strValue);</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223">ghmWrite</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *elementName, uint32_t uintValue);</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223">ghmWrite</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *elementName, int32_t intValue);</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223">ghmWrite</a>(<span class="keyword">const</span> <a class="code" href="structwiconnect_1_1_ghm_element_array.html">GhmElementArray</a> *elementArray);</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__com.html#ga0aa48506edb22c90be513683672b96c7">ghmSynchronize</a>(<a class="code" href="group__api__ghm__types.html#ga44ea17651dcf42ac9816f549beb577ac">GhmSyncType</a> type = <a class="code" href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577aca8aa4d4efd897cd69e0f08feaeaa122e7">GHM_SYNC_ALL</a>);</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__msg.html#gadc281f497041b26a151c72a0b5d03543">ghmPostMessage</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <span class="keywordtype">bool</span> jsonFormatted=<span class="keyword">false</span>);</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234">ghmGetMessage</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <a class="code" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a> getType = <a class="code" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127">GHM_MSG_GET_DATA_ONLY</a>);</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234">ghmGetMessage</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, uint8_t listIndex, <a class="code" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a> getType = <a class="code" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127">GHM_MSG_GET_DATA_ONLY</a>);</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234">ghmGetMessage</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <span class="keyword">const</span> <span class="keywordtype">char</span> *msgId, <a class="code" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a> getType = <a class="code" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127">GHM_MSG_GET_DATA_ONLY</a>);</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__msg.html#ga451de9d69f7ecbf38e36056e502b94b0">ghmDeleteMessage</a>(uint8_t listIndex);</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__msg.html#ga451de9d69f7ecbf38e36056e502b94b0">ghmDeleteMessage</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *msgId);</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502">ghmListMessages</a>(<a class="code" href="classwiconnect_1_1_ghm_message_list.html">GhmMessageList</a> &amp;msgList, uint8_t maxCount = 0);</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;<span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;    <a class="code" href="classwiconnect_1_1_ghm_interface.html">GhmInterface</a>(<a class="code" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a> *wiconnect);</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234">ghmGetMessage</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, uint8_t listIndex, <span class="keyword">const</span> <span class="keywordtype">char</span> *msgId, <a class="code" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a> getType);</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> processMessageList(<span class="keywordtype">char</span> *resultStr, <a class="code" href="classwiconnect_1_1_ghm_message_list.html">GhmMessageList</a> &amp;resultList);</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;    <a class="code" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a> *wiconnect;</div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;};</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;}</div>
+<div class="ttc" id="group__api__ghm__activate_html_gad0e0484d1f9a6608475874544f96708b"><div class="ttname"><a href="group__api__ghm__activate.html#gad0e0484d1f9a6608475874544f96708b">wiconnect::GhmInterface::ghmDeactivate</a></div><div class="ttdeci">WiconnectResult ghmDeactivate(const char *userName, const char *password)</div><div class="ttdoc">Deactivate WiFi module with http://goHACK.me. </div></div>
+<div class="ttc" id="group__api__ghm__msg_html_gae69971594793e1a10f11a51277909502"><div class="ttname"><a href="group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502">wiconnect::GhmInterface::ghmListMessages</a></div><div class="ttdeci">WiconnectResult ghmListMessages(GhmMessageList &amp;msgList, uint8_t maxCount=0)</div><div class="ttdoc">List available messages for device on http://goHACK.me. </div></div>
+<div class="ttc" id="group__api__ghm__types_html_gga44ea17651dcf42ac9816f549beb577aca8aa4d4efd897cd69e0f08feaeaa122e7"><div class="ttname"><a href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577aca8aa4d4efd897cd69e0f08feaeaa122e7">wiconnect::GHM_SYNC_ALL</a></div><div class="ttdoc">Push and pull all streams and controls. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00463">WiconnectTypes.h:463</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
+<div class="ttc" id="group__api__ghm__activate_html_ga8bec70f780ca7de9dce1a15830c179ff"><div class="ttname"><a href="group__api__ghm__activate.html#ga8bec70f780ca7de9dce1a15830c179ff">wiconnect::GhmInterface::ghmIsActivated</a></div><div class="ttdeci">WiconnectResult ghmIsActivated(bool *statusPtr)</div><div class="ttdoc">Return if WiFi module is activated with http://goHACK.me. </div></div>
+<div class="ttc" id="group__api__ghm__msg_html_ga451de9d69f7ecbf38e36056e502b94b0"><div class="ttname"><a href="group__api__ghm__msg.html#ga451de9d69f7ecbf38e36056e502b94b0">wiconnect::GhmInterface::ghmDeleteMessage</a></div><div class="ttdeci">WiconnectResult ghmDeleteMessage(uint8_t listIndex)</div><div class="ttdoc">Delete message from http://goHACK.me. </div></div>
+<div class="ttc" id="group__api__ghm__com_html_ga2f57fc33ad0e71d608b1350d4e3ab223"><div class="ttname"><a href="group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223">wiconnect::GhmInterface::ghmWrite</a></div><div class="ttdeci">WiconnectResult ghmWrite(const char *elementName, const char *strValue)</div><div class="ttdoc">Write stream or control data to http://goHACK.me. </div></div>
+<div class="ttc" id="group__api__ghm__msg_html_gadc281f497041b26a151c72a0b5d03543"><div class="ttname"><a href="group__api__ghm__msg.html#gadc281f497041b26a151c72a0b5d03543">wiconnect::GhmInterface::ghmPostMessage</a></div><div class="ttdeci">WiconnectResult ghmPostMessage(WiconnectSocket &amp;socket, bool jsonFormatted=false)</div><div class="ttdoc">POST message to http://goHACK.me. </div></div>
+<div class="ttc" id="group__api__ghm__types_html_gaf75750bfef61c73f9e4677e9de663df1"><div class="ttname"><a href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">wiconnect::GhmMessageGetType</a></div><div class="ttdeci">GhmMessageGetType</div><div class="ttdoc">goHACK.me message GET type </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00472">WiconnectTypes.h:472</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_ghm_message_list_html"><div class="ttname"><a href="classwiconnect_1_1_ghm_message_list.html">wiconnect::GhmMessageList</a></div><div class="ttdoc">List of goHACK.me messages. </div><div class="ttdef"><b>Definition:</b> <a href="_ghm_message_list_8h_source.html#l00046">GhmMessageList.h:46</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_ghm_interface_html"><div class="ttname"><a href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></div><div class="ttdoc">The provides an interface for http://goHACK.me. </div><div class="ttdef"><b>Definition:</b> <a href="_ghm_interface_8h_source.html#l00081">GhmInterface.h:81</a></div></div>
+<div class="ttc" id="group__api__ghm__types_html_ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127"><div class="ttname"><a href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127">wiconnect::GHM_MSG_GET_DATA_ONLY</a></div><div class="ttdoc">Only GET the message data. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00474">WiconnectTypes.h:474</a></div></div>
+<div class="ttc" id="group__api__ghm__types_html_ga44ea17651dcf42ac9816f549beb577ac"><div class="ttname"><a href="group__api__ghm__types.html#ga44ea17651dcf42ac9816f549beb577ac">wiconnect::GhmSyncType</a></div><div class="ttdeci">GhmSyncType</div><div class="ttdoc">goHACK.me sychronization type </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00461">WiconnectTypes.h:461</a></div></div>
+<div class="ttc" id="group__api__ghm__activate_html_gaa0213731eebd4a14e9099d01ff76beff"><div class="ttname"><a href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">wiconnect::GhmInterface::ghmActivate</a></div><div class="ttdeci">WiconnectResult ghmActivate(const char *userName, const char *password, const char *capsFilename=NULL)</div><div class="ttdoc">Activate WiFi module with http://goHACK.me. </div></div>
+<div class="ttc" id="group__api__ghm__activate_html_gaff03ecaa08146e6925820209cdab56bd"><div class="ttname"><a href="group__api__ghm__activate.html#gaff03ecaa08146e6925820209cdab56bd">wiconnect::GhmInterface::ghmDownloadCapabilities</a></div><div class="ttdeci">WiconnectResult ghmDownloadCapabilities(const char *capsNameOrCustomUrl=NULL, uint32_t version=0)</div><div class="ttdoc">Download a device capabilities file to WiFi module&#39;s internal file system. </div></div>
+<div class="ttc" id="group__api__ghm__com_html_ga3fde7b34da992719b41fc52178b73bc2"><div class="ttname"><a href="group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2">wiconnect::GhmInterface::ghmRead</a></div><div class="ttdeci">WiconnectResult ghmRead(const char *controlName, const char **valueStrPtr)</div><div class="ttdoc">Read control data from http://goHACK.me. </div></div>
+<div class="ttc" id="classwiconnect_1_1_wiconnect_socket_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect_socket.html">wiconnect::WiconnectSocket</a></div><div class="ttdoc">Connection object to remote server. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_socket_8h_source.html#l00043">WiconnectSocket.h:43</a></div></div>
+<div class="ttc" id="group__api__ghm__com_html_ga0aa48506edb22c90be513683672b96c7"><div class="ttname"><a href="group__api__ghm__com.html#ga0aa48506edb22c90be513683672b96c7">wiconnect::GhmInterface::ghmSynchronize</a></div><div class="ttdeci">WiconnectResult ghmSynchronize(GhmSyncType type=GHM_SYNC_ALL)</div><div class="ttdoc">Synchronize WiFi module with http://goHACK.me. </div></div>
+<div class="ttc" id="group__api__ghm__msg_html_gaaa05391432b2ca38bb416c671f57b234"><div class="ttname"><a href="group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234">wiconnect::GhmInterface::ghmGetMessage</a></div><div class="ttdeci">WiconnectResult ghmGetMessage(WiconnectSocket &amp;socket, GhmMessageGetType getType=GHM_MSG_GET_DATA_ONLY)</div><div class="ttdoc">GET message from http://goHACK.me. </div></div>
+<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00078">WiconnectInterface.h:78</a></div></div>
+<div class="ttc" id="structwiconnect_1_1_ghm_element_array_html"><div class="ttname"><a href="structwiconnect_1_1_ghm_element_array.html">wiconnect::GhmElementArray</a></div><div class="ttdoc">Array of goHACK.me stream or control values. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00451">WiconnectTypes.h:451</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/_ghm_message_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,161 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('_ghm_message_8h_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">GhmMessage.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#pragma once</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &quot;api/WiconnectTypes.h&quot;</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &quot;api/StringUtil.h&quot;</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="keyword">namespace </span>wiconnect</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;{</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div>
+<div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classwiconnect_1_1_ghm_message.html">   46</a></span>&#160;<span class="keyword">class </span><a class="code" href="classwiconnect_1_1_ghm_message.html">GhmMessage</a></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;{</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* getMessageId(<span class="keywordtype">char</span> *buffer = NULL) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* getTimestamp(<span class="keywordtype">char</span> *buffer = NULL) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    uint16_t    getLength() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_ghm_message.html">GhmMessage</a>* getNext() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_ghm_message.html">GhmMessage</a>* getPrevious() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    <a class="code" href="classwiconnect_1_1_ghm_message.html">GhmMessage</a>();</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> init(<span class="keyword">const</span> <span class="keywordtype">char</span> *msgIdStr, <span class="keyword">const</span> <span class="keywordtype">char</span>* timestampStr, <span class="keyword">const</span> <span class="keywordtype">char</span> *lengthStr);</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    <a class="code" href="classwiconnect_1_1_ghm_message.html">GhmMessage</a> *next;</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    <a class="code" href="classwiconnect_1_1_ghm_message.html">GhmMessage</a> *previous;</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <span class="keywordtype">char</span> messageId[37];</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    <span class="keywordtype">char</span> timestamp[14];</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    uint16_t length;</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="preprocessor">#ifdef WICONNECT_ENABLE_MALLOC</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>(<span class="keywordtype">size_t</span> size);</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="keywordtype">void</span> <span class="keyword">operator</span> <span class="keyword">delete</span>(<span class="keywordtype">void</span>*);</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_ghm_message_list.html">GhmMessageList</a>;</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;};</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;}</div>
+<div class="ttc" id="classwiconnect_1_1_ghm_message_html"><div class="ttname"><a href="classwiconnect_1_1_ghm_message.html">wiconnect::GhmMessage</a></div><div class="ttdoc">Contains single entry from goHACK.me message listing. </div><div class="ttdef"><b>Definition:</b> <a href="_ghm_message_8h_source.html#l00046">GhmMessage.h:46</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_ghm_message_list_html"><div class="ttname"><a href="classwiconnect_1_1_ghm_message_list.html">wiconnect::GhmMessageList</a></div><div class="ttdoc">List of goHACK.me messages. </div><div class="ttdef"><b>Definition:</b> <a href="_ghm_message_list_8h_source.html#l00046">GhmMessageList.h:46</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/_ghm_message_list_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,156 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('_ghm_message_list_8h_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">GhmMessageList.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#pragma once</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;api/WiconnectTypes.h&quot;</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;GhmMessage.h&quot;</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="keyword">namespace </span>wiconnect</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;{</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div>
+<div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classwiconnect_1_1_ghm_message_list.html">   46</a></span>&#160;<span class="keyword">class </span><a class="code" href="classwiconnect_1_1_ghm_message_list.html">GhmMessageList</a></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;{</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <a class="code" href="classwiconnect_1_1_ghm_message_list.html">GhmMessageList</a>(<span class="keywordtype">int</span> bufferLen = 0, <span class="keywordtype">void</span> *buffer = NULL);</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    ~<a class="code" href="classwiconnect_1_1_ghm_message_list.html">GhmMessageList</a>();</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <span class="keywordtype">void</span> reset(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_ghm_message.html">GhmMessage</a>* getListHead() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="keywordtype">int</span> getCount() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_ghm_message.html">GhmMessage</a>* getResult(<span class="keywordtype">int</span> i) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_ghm_message.html">GhmMessage</a>* operator [](<span class="keywordtype">int</span> i) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    <a class="code" href="classwiconnect_1_1_ghm_message.html">GhmMessage</a> *listHead, *listTail;</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    uint8_t *buffer;</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    uint8_t *bufferPtr;</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    uint16_t bufferLen;</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    uint16_t bufferRemaining;</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="keywordtype">int</span> count;</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> add(<span class="keyword">const</span> <span class="keywordtype">char</span> *msgId, <span class="keyword">const</span> <span class="keywordtype">char</span>* timestamp, <span class="keyword">const</span> <span class="keywordtype">char</span> *length);</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_ghm_interface.html">GhmInterface</a>;</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;};</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;}</div>
+<div class="ttc" id="classwiconnect_1_1_ghm_message_html"><div class="ttname"><a href="classwiconnect_1_1_ghm_message.html">wiconnect::GhmMessage</a></div><div class="ttdoc">Contains single entry from goHACK.me message listing. </div><div class="ttdef"><b>Definition:</b> <a href="_ghm_message_8h_source.html#l00046">GhmMessage.h:46</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_ghm_message_list_html"><div class="ttname"><a href="classwiconnect_1_1_ghm_message_list.html">wiconnect::GhmMessageList</a></div><div class="ttdoc">List of goHACK.me messages. </div><div class="ttdef"><b>Definition:</b> <a href="_ghm_message_list_8h_source.html#l00046">GhmMessageList.h:46</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_ghm_interface_html"><div class="ttname"><a href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></div><div class="ttdoc">The provides an interface for http://goHACK.me. </div><div class="ttdef"><b>Definition:</b> <a href="_ghm_interface_8h_source.html#l00081">GhmInterface.h:81</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- a/doc/html/_gpio_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_gpio_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -105,7 +105,7 @@
 <div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#pragma once</span></div>
 <div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
 <div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;WiconnectTypes.h&quot;</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;api/WiconnectTypes.h&quot;</span></div>
 <div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div>
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div>
 <div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="keyword">namespace </span>wiconnect</div>
@@ -128,7 +128,7 @@
 <div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div>
 <div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div>
 <div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;}</div>
-<div class="ttc" id="group__api__core__types_html_ga1cf4dfa71da0b0dc3dc707dacf56cc9c"><div class="ttname"><a href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">wiconnect::Pin</a></div><div class="ttdeci">PinName Pin</div><div class="ttdoc">Pin name on HOST. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00123">sdk.h:123</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga1cf4dfa71da0b0dc3dc707dacf56cc9c"><div class="ttname"><a href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">wiconnect::Pin</a></div><div class="ttdeci">PinName Pin</div><div class="ttdoc">Pin name on HOST. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00134">sdk.h:134</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/_log_func_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_log_func_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -104,7 +104,7 @@
 <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
 <div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#pragma once</span></div>
 <div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;WiconnectTypes.h&quot;</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;api/WiconnectTypes.h&quot;</span></div>
 <div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;FunctionPointer.h&quot;</span></div>
 <div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div>
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="keyword">namespace </span>wiconnect</div>
@@ -169,7 +169,7 @@
 <div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div>
 <div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div>
 <div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;}</div>
-<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00159">WiconnectTypes.h:159</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_log_func_html"><div class="ttname"><a href="classwiconnect_1_1_log_func.html">wiconnect::LogFunc</a></div><div class="ttdoc">Logging callback function. </div><div class="ttdef"><b>Definition:</b> <a href="_log_func_8h_source.html#l00045">LogFunc.h:45</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_function_pointer_html"><div class="ttname"><a href="classwiconnect_1_1_function_pointer.html">wiconnect::FunctionPointer</a></div><div class="ttdoc">Generic function pointer. </div><div class="ttdef"><b>Definition:</b> <a href="_function_pointer_8h_source.html#l00040">FunctionPointer.h:40</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
--- a/doc/html/_network_interface_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_network_interface_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -106,159 +106,178 @@
 <div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
 <div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div>
 <div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;WiconnectTypes.h&quot;</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &quot;types/ScanResultList.h&quot;</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &quot;api/types/ScanResultList.h&quot;</span></div>
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div>
 <div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div>
 <div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="keyword">namespace </span>wiconnect {</div>
 <div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div>
 <div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div>
-<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classwiconnect_1_1_network_interface.html">   49</a></span>&#160;<span class="keyword">class </span><a class="code" href="classwiconnect_1_1_network_interface.html">NetworkInterface</a></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;{</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__setup.html#gaea3e133f2ee8c95d8d108c15561f3847">startWebSetup</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *ssid = NULL, <span class="keyword">const</span> <span class="keywordtype">char</span> *password = NULL, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeHandler = <a class="code" href="classwiconnect_1_1_callback.html">Callback</a>());</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__setup.html#gac5ca67b7bfa587935b5619e441dc8d8a">stopWebSetup</a>();</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__setup.html#gab52d3a01427d0e8bd52460d992144f65">isWebSetupRunning</a>(<span class="keywordtype">bool</span> *isRunningPtr);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__wlan.html#gac439d0af5a17da32d405e25dcba83d16">join</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* ssid = NULL, <span class="keyword">const</span> <span class="keywordtype">char</span> *password = NULL, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeHandler = <a class="code" href="classwiconnect_1_1_callback.html">Callback</a>());</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__wlan.html#ga14dc0f4fa58a7ebb25b77fae22052328">leave</a>();</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__wlan.html#ga047ba9670f60406466391cec5bdd28e5">getNetworkStatus</a>(<a class="code" href="group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99">NetworkStatus</a> *statusPtr);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b">getNetworkJoinResult</a>(<a class="code" href="group__api__network__types.html#ga5f6f5c916a5dd1676f98da7fa511451d">NetworkJoinResult</a> *joinResultPtr);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;<span class="comment">//    WiconnectResult startSoftAp(const char* ssid = NULL, const char *password = NULL, const Callback &amp;clientConnectedCallback = Callback());</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;<span class="comment">//    WiconnectResult stopSoftAp();</span></div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;<span class="comment">//    WiconnectResult getSoftApClientList();</span></div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__util.html#gacdf014d8aca9de33dbc1563c6bb1f956">scan</a>(<a class="code" href="classwiconnect_1_1_scan_result_list.html">ScanResultList</a> &amp;resultList, <span class="keyword">const</span> uint8_t *channelList = NULL, <span class="keyword">const</span> <span class="keywordtype">char</span>* ssid = NULL);</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#ifdef WICONNECT_USE_DEFAULT_STRING_BUFFERS</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#define ALLOW_NULL_STRING_BUFFER = NULL</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#define ALLOW_NULL_STRING_BUFFER</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classwiconnect_1_1_network_interface.html">   55</a></span>&#160;<span class="keyword">class </span><a class="code" href="classwiconnect_1_1_network_interface.html">NetworkInterface</a></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;{</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__setup.html#gaea3e133f2ee8c95d8d108c15561f3847">startWebSetup</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *ssid = NULL, <span class="keyword">const</span> <span class="keywordtype">char</span> *password = NULL, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeHandler = <a class="code" href="classwiconnect_1_1_callback.html">Callback</a>());</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__setup.html#gac5ca67b7bfa587935b5619e441dc8d8a">stopWebSetup</a>();</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__setup.html#gab52d3a01427d0e8bd52460d992144f65">isWebSetupRunning</a>(<span class="keywordtype">bool</span> *isRunningPtr);</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__wlan.html#gac439d0af5a17da32d405e25dcba83d16">join</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* ssid = NULL, <span class="keyword">const</span> <span class="keywordtype">char</span> *password = NULL, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeHandler = <a class="code" href="classwiconnect_1_1_callback.html">Callback</a>());</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__wlan.html#ga14dc0f4fa58a7ebb25b77fae22052328">leave</a>();</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__wlan.html#ga047ba9670f60406466391cec5bdd28e5">getNetworkStatus</a>(<a class="code" href="group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99">NetworkStatus</a> *statusPtr);</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b">getNetworkJoinResult</a>(<a class="code" href="group__api__network__types.html#ga5f6f5c916a5dd1676f98da7fa511451d">NetworkJoinResult</a> *joinResultPtr);</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__wlan.html#gaba16b9918e55c08285cf5b8b50dbabea">getSignalStrength</a>(<a class="code" href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">NetworkSignalStrength</a> *signalStrengthPtr);</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__wlan.html#gaa9db3c463cf6b4f351c37671882dd3ee">getRssi</a>(int32_t *rssiPtr);</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__wlan.html#ga70991a2c5865c8f0b44b67de35f3b6b3">getMacAddress</a>(<a class="code" href="structwiconnect_1_1_mac_address.html">MacAddress</a> *macAddress);</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;</div>
 <div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__util.html#ga1da909dadb6f0e90218927ed350f72bc">ping</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *domain = NULL, uint32_t *timeMsPtr = NULL);</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__util.html#ga1770babfc2abc6da7c085ef92709ee89">lookup</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *domain, uint32_t *ipAddressPtr);</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__settings.html#ga65eb99f880ed739d0f3cd393e5b56eaf">setDhcpEnabled</a>(<span class="keywordtype">bool</span> enabled);</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__settings.html#ga70ec796b88eb6f8e7990dbf3eb2f2eff">getDhcpEnabled</a>(<span class="keywordtype">bool</span> *enabledPtr);</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__settings.html#ga2f7ec21084d3f2835d9c1c201915a9e0">setIpSettings</a>(uint32_t ip, uint32_t netmask, uint32_t gateway);</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__settings.html#ga2f7ec21084d3f2835d9c1c201915a9e0">setIpSettings</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* ip, <span class="keyword">const</span> <span class="keywordtype">char</span>* netmask, <span class="keyword">const</span> <span class="keywordtype">char</span>* gateway);</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b">getIpSettings</a>(uint32_t *ip, uint32_t *netmask, uint32_t *gateway);</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;<span class="comment">//    WiconnectResult startSoftAp(const char* ssid = NULL, const char *password = NULL, const Callback &amp;clientConnectedCallback = Callback());</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;<span class="comment">//    WiconnectResult stopSoftAp();</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;<span class="comment">//    WiconnectResult getSoftApClientList();</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__util.html#gacdf014d8aca9de33dbc1563c6bb1f956">scan</a>(<a class="code" href="classwiconnect_1_1_scan_result_list.html">ScanResultList</a> &amp;resultList, <span class="keyword">const</span> uint8_t *channelList = NULL, <span class="keyword">const</span> <span class="keywordtype">char</span>* ssid = NULL);</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__util.html#ga1da909dadb6f0e90218927ed350f72bc">ping</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *domain = NULL, uint32_t *timeMsPtr = NULL);</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__util.html#ga1770babfc2abc6da7c085ef92709ee89">lookup</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *domain, uint32_t *ipAddressPtr);</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__settings.html#ga65eb99f880ed739d0f3cd393e5b56eaf">setDhcpEnabled</a>(<span class="keywordtype">bool</span> enabled);</div>
 <div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__settings.html#gaba16b9918e55c08285cf5b8b50dbabea">getSignalStrength</a>(<a class="code" href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">NetworkSignalStrength</a> *signalStrengthPtr);</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__settings.html#ga70ec796b88eb6f8e7990dbf3eb2f2eff">getDhcpEnabled</a>(<span class="keywordtype">bool</span> *enabledPtr);</div>
 <div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290">getIpAddress</a>(<span class="keywordtype">char</span> *buffer = NULL);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;</div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__settings.html#ga2f7ec21084d3f2835d9c1c201915a9e0">setIpSettings</a>(uint32_t ip, uint32_t netmask, uint32_t gateway);</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__settings.html#ga2f7ec21084d3f2835d9c1c201915a9e0">setIpSettings</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* ip, <span class="keyword">const</span> <span class="keywordtype">char</span>* netmask, <span class="keyword">const</span> <span class="keywordtype">char</span>* gateway);</div>
 <div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="group__conversion__util.html#ga93bdb8669a70adaa61dc76073ce66591">strToIp</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, uint32_t *intPtr);</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__conversion__util.html#gaff8b0af70f4d4be792b943ad3af27303">ipToStr</a>(uint32_t ip, <span class="keywordtype">char</span> *ipStrBuffer = NULL);</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__conversion__util.html#gacff5a4927d79e8b4c0d5a3050f5950b0">networkStatusToStr</a>(<a class="code" href="group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99">NetworkStatus</a> status);</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__conversion__util.html#ga5a682e671900b9b7f931137deb847fa6">networkJoinResultToStr</a>(<a class="code" href="group__api__network__types.html#ga5f6f5c916a5dd1676f98da7fa511451d">NetworkJoinResult</a> joinResult);</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__conversion__util.html#gad4661f859cfadbe193793898671043c9">signalStrengthToStr</a>(<a class="code" href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">NetworkSignalStrength</a> signalStrenth);</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;    <span class="keyword">static</span> <a class="code" href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">NetworkSignalStrength</a> <a class="code" href="group__conversion__util.html#ga6216eed4cc05c37ce1ed13a0fbb6acd8">rssiToSignalStrength</a>(<span class="keywordtype">int</span> rssi);</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;    <span class="keyword">static</span> <a class="code" href="group__api__network__types.html#ga026bd11cd5df47b7022362243e2d553f">NetworkSecurity</a> <a class="code" href="group__conversion__util.html#gad7d49be19f9ca91bc129668dd50d9e57">strToNetworkSecurity</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str);</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b">getIpSettings</a>(uint32_t *ip, uint32_t *netmask, uint32_t *gateway);</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__settings.html#ga258d8b80064c6ce311a433affe63a0e9">setDnsAddress</a>(uint32_t dnsAddress);</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__network__settings.html#ga585cb71d386ee61db3772f4b3218cb6e">getDnsAddress</a>(uint32_t *dnsAddress);</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f">getIpAddress</a>(<span class="keywordtype">char</span> *buffer ALLOW_NULL_STRING_BUFFER);</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="group__conversion__util.html#ga93bdb8669a70adaa61dc76073ce66591">strToIp</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, uint32_t *intPtr);</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__conversion__util.html#ga02e6b01f11f2283208f051b1b49b634c">ipToStr</a>(uint32_t ip, <span class="keywordtype">char</span> *ipStrBuffer ALLOW_NULL_STRING_BUFFER);</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;</div>
 <div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__conversion__util.html#gae02c549079cfb0350117cd6343a3d66f">networkSecurityToStr</a>(<a class="code" href="group__api__network__types.html#ga026bd11cd5df47b7022362243e2d553f">NetworkSecurity</a> security);</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__conversion__util.html#gacff5a4927d79e8b4c0d5a3050f5950b0">networkStatusToStr</a>(<a class="code" href="group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99">NetworkStatus</a> status);</div>
 <div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="group__conversion__util.html#ga6a479a58591ead92dcf0586e11fcad17">strToSsid</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <a class="code" href="structwiconnect_1_1_ssid.html">Ssid</a> *ssid);</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__conversion__util.html#ga5a682e671900b9b7f931137deb847fa6">networkJoinResultToStr</a>(<a class="code" href="group__api__network__types.html#ga5f6f5c916a5dd1676f98da7fa511451d">NetworkJoinResult</a> joinResult);</div>
 <div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__conversion__util.html#gafce7929a10e16cf9be7307a2f97bef3f">ssidToStr</a>(<span class="keyword">const</span> <a class="code" href="structwiconnect_1_1_ssid.html">Ssid</a> *ssid, <span class="keywordtype">char</span> *ssidStrBuffer = NULL);</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__conversion__util.html#gad4661f859cfadbe193793898671043c9">signalStrengthToStr</a>(<a class="code" href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">NetworkSignalStrength</a> signalStrenth);</div>
 <div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="group__conversion__util.html#ga347f05073370d6872a5cdac74de39b1b">strToMacAddress</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <a class="code" href="structwiconnect_1_1_mac_address.html">MacAddress</a> *macAddress);</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;    <span class="keyword">static</span> <a class="code" href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">NetworkSignalStrength</a> <a class="code" href="group__conversion__util.html#ga6216eed4cc05c37ce1ed13a0fbb6acd8">rssiToSignalStrength</a>(<span class="keywordtype">int</span> rssi);</div>
 <div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__conversion__util.html#ga13ecaf390b4bf4a68b51a6b18e669134">macAddressToStr</a>(<span class="keyword">const</span> <a class="code" href="structwiconnect_1_1_mac_address.html">MacAddress</a> *macAddress, <span class="keywordtype">char</span> *macStrBuffer = NULL);</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;    <span class="keyword">static</span> <a class="code" href="group__api__network__types.html#ga026bd11cd5df47b7022362243e2d553f">NetworkSecurity</a> <a class="code" href="group__conversion__util.html#gad7d49be19f9ca91bc129668dd50d9e57">strToNetworkSecurity</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str);</div>
 <div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;    <a class="code" href="classwiconnect_1_1_network_interface.html">NetworkInterface</a>(<a class="code" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a> *wiconnect);</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> processScanResults(<span class="keywordtype">char</span> *resultStr, <a class="code" href="classwiconnect_1_1_scan_result_list.html">ScanResultList</a> &amp;resultList);</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;<span class="preprocessor">#ifdef WICONNECT_ASYNC_TIMER_ENABLED</span></div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;    <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> completeHandler;</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;    PeriodicTimer monitorTimer;</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;    <span class="keywordtype">void</span> webSetupStatusMonitor();</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;    <span class="keywordtype">void</span> webSetupStatusCheckCallback(<a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> result, <span class="keywordtype">void</span> *arg1, <span class="keywordtype">void</span> *arg2);</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;    <span class="keywordtype">void</span> joinStatusMonitor();</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;    <span class="keywordtype">void</span> joinStatusCheckCallback(<a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> result, <span class="keywordtype">void</span> *arg1, <span class="keywordtype">void</span> *arg2);</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;    <span class="comment">//void scanCompleteCallback(WiconnectResult result, void *arg1, void *arg2);</span></div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;    <a class="code" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a> *wiconnect;</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;};</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;}</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__conversion__util.html#gae02c549079cfb0350117cd6343a3d66f">networkSecurityToStr</a>(<a class="code" href="group__api__network__types.html#ga026bd11cd5df47b7022362243e2d553f">NetworkSecurity</a> security);</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="group__conversion__util.html#ga6a479a58591ead92dcf0586e11fcad17">strToSsid</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <a class="code" href="structwiconnect_1_1_ssid.html">Ssid</a> *ssid);</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__conversion__util.html#gae8b534c249d503aa764017bb088f3890">ssidToStr</a>(<span class="keyword">const</span> <a class="code" href="structwiconnect_1_1_ssid.html">Ssid</a> *ssid, <span class="keywordtype">char</span> *ssidStrBuffer ALLOW_NULL_STRING_BUFFER);</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="group__conversion__util.html#ga347f05073370d6872a5cdac74de39b1b">strToMacAddress</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <a class="code" href="structwiconnect_1_1_mac_address.html">MacAddress</a> *macAddress);</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__conversion__util.html#ga01520d55f1923d90fb899ddef2f21cdf">macAddressToStr</a>(<span class="keyword">const</span> <a class="code" href="structwiconnect_1_1_mac_address.html">MacAddress</a> *macAddress, <span class="keywordtype">char</span> *macStrBuffer ALLOW_NULL_STRING_BUFFER);</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;<span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;    <a class="code" href="classwiconnect_1_1_network_interface.html">NetworkInterface</a>(<a class="code" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a> *wiconnect);</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> processScanResults(<span class="keywordtype">char</span> *resultStr, <a class="code" href="classwiconnect_1_1_scan_result_list.html">ScanResultList</a> &amp;resultList);</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;<span class="preprocessor">#ifdef WICONNECT_ASYNC_TIMER_ENABLED</span></div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;    <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> completeHandler;</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;    PeriodicTimer monitorTimer;</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;    <span class="keywordtype">void</span> webSetupStatusMonitor();</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;    <span class="keywordtype">void</span> webSetupStatusCheckCallback(<a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> result, <span class="keywordtype">void</span> *arg1, <span class="keywordtype">void</span> *arg2);</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;    <span class="keywordtype">void</span> joinStatusMonitor();</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;    <span class="keywordtype">void</span> joinStatusCheckCallback(<a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> result, <span class="keywordtype">void</span> *arg1, <span class="keywordtype">void</span> *arg2);</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;    <span class="comment">//void scanCompleteCallback(WiconnectResult result, void *arg1, void *arg2);</span></div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;    <a class="code" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a> *wiconnect;</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;};</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;}</div>
 <div class="ttc" id="group__api__network__settings_html_ga70ec796b88eb6f8e7990dbf3eb2f2eff"><div class="ttname"><a href="group__api__network__settings.html#ga70ec796b88eb6f8e7990dbf3eb2f2eff">wiconnect::NetworkInterface::getDhcpEnabled</a></div><div class="ttdeci">WiconnectResult getDhcpEnabled(bool *enabledPtr)</div><div class="ttdoc">Get if DHCP enabled. </div></div>
-<div class="ttc" id="group__api__network__types_html_ga026bd11cd5df47b7022362243e2d553f"><div class="ttname"><a href="group__api__network__types.html#ga026bd11cd5df47b7022362243e2d553f">wiconnect::NetworkSecurity</a></div><div class="ttdeci">NetworkSecurity</div><div class="ttdoc">Network security type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00267">WiconnectTypes.h:267</a></div></div>
-<div class="ttc" id="classwiconnect_1_1_network_interface_html"><div class="ttname"><a href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></div><div class="ttdoc">The provides an interface for joining and/or creating a network. It provides other utilities such as ...</div><div class="ttdef"><b>Definition:</b> <a href="_network_interface_8h_source.html#l00049">NetworkInterface.h:49</a></div></div>
+<div class="ttc" id="group__api__network__wlan_html_gaa9db3c463cf6b4f351c37671882dd3ee"><div class="ttname"><a href="group__api__network__wlan.html#gaa9db3c463cf6b4f351c37671882dd3ee">wiconnect::NetworkInterface::getRssi</a></div><div class="ttdeci">WiconnectResult getRssi(int32_t *rssiPtr)</div><div class="ttdoc">Get the RSSI in dBm of WiFi network. </div></div>
+<div class="ttc" id="group__api__network__types_html_ga026bd11cd5df47b7022362243e2d553f"><div class="ttname"><a href="group__api__network__types.html#ga026bd11cd5df47b7022362243e2d553f">wiconnect::NetworkSecurity</a></div><div class="ttdeci">NetworkSecurity</div><div class="ttdoc">Network security type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00281">WiconnectTypes.h:281</a></div></div>
+<div class="ttc" id="group__api__network__settings_html_gabd8eb629fd40defaa9ab22c189652a3f"><div class="ttname"><a href="group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f">wiconnect::NetworkInterface::getIpAddress</a></div><div class="ttdeci">const char * getIpAddress(char *buffer ALLOW_NULL_STRING_BUFFER)</div><div class="ttdoc">Return the current IP address of the module if possible, else return 0.0.0.0. </div></div>
+<div class="ttc" id="classwiconnect_1_1_network_interface_html"><div class="ttname"><a href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></div><div class="ttdoc">The provides an interface for joining and/or creating a network. It provides other utilities such as ...</div><div class="ttdef"><b>Definition:</b> <a href="_network_interface_8h_source.html#l00055">NetworkInterface.h:55</a></div></div>
+<div class="ttc" id="group__conversion__util_html_ga02e6b01f11f2283208f051b1b49b634c"><div class="ttname"><a href="group__conversion__util.html#ga02e6b01f11f2283208f051b1b49b634c">wiconnect::NetworkInterface::ipToStr</a></div><div class="ttdeci">static const char * ipToStr(uint32_t ip, char *ipStrBuffer ALLOW_NULL_STRING_BUFFER)</div><div class="ttdoc">Convert IP address to string. </div></div>
 <div class="ttc" id="group__api__network__settings_html_ga291aef702f1c10bf2970394e3458022b"><div class="ttname"><a href="group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b">wiconnect::NetworkInterface::getIpSettings</a></div><div class="ttdeci">WiconnectResult getIpSettings(uint32_t *ip, uint32_t *netmask, uint32_t *gateway)</div><div class="ttdoc">Get network IP settings. </div></div>
-<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00159">WiconnectTypes.h:159</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_callback_html"><div class="ttname"><a href="classwiconnect_1_1_callback.html">wiconnect::Callback</a></div><div class="ttdoc">Generic callback function. </div><div class="ttdef"><b>Definition:</b> <a href="_callback_8h_source.html#l00049">Callback.h:49</a></div></div>
+<div class="ttc" id="group__api__network__wlan_html_gaba16b9918e55c08285cf5b8b50dbabea"><div class="ttname"><a href="group__api__network__wlan.html#gaba16b9918e55c08285cf5b8b50dbabea">wiconnect::NetworkInterface::getSignalStrength</a></div><div class="ttdeci">WiconnectResult getSignalStrength(NetworkSignalStrength *signalStrengthPtr)</div><div class="ttdoc">Get NetworkSignalStrength of WiFi network module is connected. </div></div>
 <div class="ttc" id="group__api__network__settings_html_ga2f7ec21084d3f2835d9c1c201915a9e0"><div class="ttname"><a href="group__api__network__settings.html#ga2f7ec21084d3f2835d9c1c201915a9e0">wiconnect::NetworkInterface::setIpSettings</a></div><div class="ttdeci">WiconnectResult setIpSettings(uint32_t ip, uint32_t netmask, uint32_t gateway)</div><div class="ttdoc">Set static IP settings. </div></div>
 <div class="ttc" id="group__conversion__util_html_ga5a682e671900b9b7f931137deb847fa6"><div class="ttname"><a href="group__conversion__util.html#ga5a682e671900b9b7f931137deb847fa6">wiconnect::NetworkInterface::networkJoinResultToStr</a></div><div class="ttdeci">static const char * networkJoinResultToStr(NetworkJoinResult joinResult)</div><div class="ttdoc">Convert NetworkJoinResult to string. </div></div>
 <div class="ttc" id="group__conversion__util_html_gae02c549079cfb0350117cd6343a3d66f"><div class="ttname"><a href="group__conversion__util.html#gae02c549079cfb0350117cd6343a3d66f">wiconnect::NetworkInterface::networkSecurityToStr</a></div><div class="ttdeci">static const char * networkSecurityToStr(NetworkSecurity security)</div><div class="ttdoc">Convert NetworkSecurity to string. </div></div>
 <div class="ttc" id="group__conversion__util_html_gad7d49be19f9ca91bc129668dd50d9e57"><div class="ttname"><a href="group__conversion__util.html#gad7d49be19f9ca91bc129668dd50d9e57">wiconnect::NetworkInterface::strToNetworkSecurity</a></div><div class="ttdeci">static NetworkSecurity strToNetworkSecurity(const char *str)</div><div class="ttdoc">Convert string to NetworkSecurity. </div></div>
-<div class="ttc" id="structwiconnect_1_1_mac_address_html"><div class="ttname"><a href="structwiconnect_1_1_mac_address.html">wiconnect::MacAddress</a></div><div class="ttdoc">Network MAC Address type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00293">WiconnectTypes.h:293</a></div></div>
+<div class="ttc" id="structwiconnect_1_1_mac_address_html"><div class="ttname"><a href="structwiconnect_1_1_mac_address.html">wiconnect::MacAddress</a></div><div class="ttdoc">Network MAC Address type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00307">WiconnectTypes.h:307</a></div></div>
+<div class="ttc" id="group__conversion__util_html_gae8b534c249d503aa764017bb088f3890"><div class="ttname"><a href="group__conversion__util.html#gae8b534c249d503aa764017bb088f3890">wiconnect::NetworkInterface::ssidToStr</a></div><div class="ttdeci">static const char * ssidToStr(const Ssid *ssid, char *ssidStrBuffer ALLOW_NULL_STRING_BUFFER)</div><div class="ttdoc">Convert Ssid to string. </div></div>
 <div class="ttc" id="group__api__network__setup_html_gaea3e133f2ee8c95d8d108c15561f3847"><div class="ttname"><a href="group__api__network__setup.html#gaea3e133f2ee8c95d8d108c15561f3847">wiconnect::NetworkInterface::startWebSetup</a></div><div class="ttdeci">WiconnectResult startWebSetup(const char *ssid=NULL, const char *password=NULL, const Callback &amp;completeHandler=Callback())</div><div class="ttdoc">Start the WiConnect WiFi module &#39;web setup&#39; feature. </div></div>
+<div class="ttc" id="group__api__network__settings_html_ga585cb71d386ee61db3772f4b3218cb6e"><div class="ttname"><a href="group__api__network__settings.html#ga585cb71d386ee61db3772f4b3218cb6e">wiconnect::NetworkInterface::getDnsAddress</a></div><div class="ttdeci">WiconnectResult getDnsAddress(uint32_t *dnsAddress)</div><div class="ttdoc">Get the static DNS address. </div></div>
 <div class="ttc" id="group__api__network__util_html_ga1da909dadb6f0e90218927ed350f72bc"><div class="ttname"><a href="group__api__network__util.html#ga1da909dadb6f0e90218927ed350f72bc">wiconnect::NetworkInterface::ping</a></div><div class="ttdeci">WiconnectResult ping(const char *domain=NULL, uint32_t *timeMsPtr=NULL)</div><div class="ttdoc">Ping a WiFi network. </div></div>
 <div class="ttc" id="group__conversion__util_html_ga93bdb8669a70adaa61dc76073ce66591"><div class="ttname"><a href="group__conversion__util.html#ga93bdb8669a70adaa61dc76073ce66591">wiconnect::NetworkInterface::strToIp</a></div><div class="ttdeci">static bool strToIp(const char *str, uint32_t *intPtr)</div><div class="ttdoc">Convert string to IP address. </div></div>
-<div class="ttc" id="group__api__network__settings_html_ga0b8fc3d5be0bae9ffcdc1b4b9aee6290"><div class="ttname"><a href="group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290">wiconnect::NetworkInterface::getIpAddress</a></div><div class="ttdeci">const char * getIpAddress(char *buffer=NULL)</div><div class="ttdoc">Return the current IP address of the module if possible, else return 0.0.0.0. </div></div>
 <div class="ttc" id="group__conversion__util_html_gacff5a4927d79e8b4c0d5a3050f5950b0"><div class="ttname"><a href="group__conversion__util.html#gacff5a4927d79e8b4c0d5a3050f5950b0">wiconnect::NetworkInterface::networkStatusToStr</a></div><div class="ttdeci">static const char * networkStatusToStr(NetworkStatus status)</div><div class="ttdoc">Convert NetworkStatus to string. </div></div>
 <div class="ttc" id="group__api__network__setup_html_gab52d3a01427d0e8bd52460d992144f65"><div class="ttname"><a href="group__api__network__setup.html#gab52d3a01427d0e8bd52460d992144f65">wiconnect::NetworkInterface::isWebSetupRunning</a></div><div class="ttdeci">WiconnectResult isWebSetupRunning(bool *isRunningPtr)</div><div class="ttdoc">Return status of WiConnect WiFi module &#39;web setup&#39; feature. </div></div>
-<div class="ttc" id="group__api__network__settings_html_gaba16b9918e55c08285cf5b8b50dbabea"><div class="ttname"><a href="group__api__network__settings.html#gaba16b9918e55c08285cf5b8b50dbabea">wiconnect::NetworkInterface::getSignalStrength</a></div><div class="ttdeci">WiconnectResult getSignalStrength(NetworkSignalStrength *signalStrengthPtr)</div><div class="ttdoc">Get signal strength to WiFi network. </div></div>
 <div class="ttc" id="group__api__network__settings_html_ga65eb99f880ed739d0f3cd393e5b56eaf"><div class="ttname"><a href="group__api__network__settings.html#ga65eb99f880ed739d0f3cd393e5b56eaf">wiconnect::NetworkInterface::setDhcpEnabled</a></div><div class="ttdeci">WiconnectResult setDhcpEnabled(bool enabled)</div><div class="ttdoc">Set DHCP enabled. </div></div>
 <div class="ttc" id="group__api__network__wlan_html_ga14dc0f4fa58a7ebb25b77fae22052328"><div class="ttname"><a href="group__api__network__wlan.html#ga14dc0f4fa58a7ebb25b77fae22052328">wiconnect::NetworkInterface::leave</a></div><div class="ttdeci">WiconnectResult leave()</div><div class="ttdoc">Leave a WiFi network. </div></div>
-<div class="ttc" id="group__api__network__types_html_gac5aead2b4cca0122a60168e75ea41d36"><div class="ttname"><a href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">wiconnect::NetworkSignalStrength</a></div><div class="ttdeci">NetworkSignalStrength</div><div class="ttdoc">Network RSSI signal level. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00253">WiconnectTypes.h:253</a></div></div>
+<div class="ttc" id="group__api__network__types_html_gac5aead2b4cca0122a60168e75ea41d36"><div class="ttname"><a href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">wiconnect::NetworkSignalStrength</a></div><div class="ttdeci">NetworkSignalStrength</div><div class="ttdoc">Network RSSI signal level. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00267">WiconnectTypes.h:267</a></div></div>
 <div class="ttc" id="group__conversion__util_html_ga347f05073370d6872a5cdac74de39b1b"><div class="ttname"><a href="group__conversion__util.html#ga347f05073370d6872a5cdac74de39b1b">wiconnect::NetworkInterface::strToMacAddress</a></div><div class="ttdeci">static bool strToMacAddress(const char *str, MacAddress *macAddress)</div><div class="ttdoc">Convert string MacAddress. </div></div>
 <div class="ttc" id="group__api__network__util_html_gacdf014d8aca9de33dbc1563c6bb1f956"><div class="ttname"><a href="group__api__network__util.html#gacdf014d8aca9de33dbc1563c6bb1f956">wiconnect::NetworkInterface::scan</a></div><div class="ttdeci">WiconnectResult scan(ScanResultList &amp;resultList, const uint8_t *channelList=NULL, const char *ssid=NULL)</div><div class="ttdoc">Scan for available WiFi networks. </div></div>
-<div class="ttc" id="structwiconnect_1_1_ssid_html"><div class="ttname"><a href="structwiconnect_1_1_ssid.html">wiconnect::Ssid</a></div><div class="ttdoc">Network SSID type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00283">WiconnectTypes.h:283</a></div></div>
-<div class="ttc" id="group__api__network__types_html_ga5f6f5c916a5dd1676f98da7fa511451d"><div class="ttname"><a href="group__api__network__types.html#ga5f6f5c916a5dd1676f98da7fa511451d">wiconnect::NetworkJoinResult</a></div><div class="ttdeci">NetworkJoinResult</div><div class="ttdoc">Network connection status. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00236">WiconnectTypes.h:236</a></div></div>
+<div class="ttc" id="structwiconnect_1_1_ssid_html"><div class="ttname"><a href="structwiconnect_1_1_ssid.html">wiconnect::Ssid</a></div><div class="ttdoc">Network SSID type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00297">WiconnectTypes.h:297</a></div></div>
+<div class="ttc" id="group__api__network__types_html_ga5f6f5c916a5dd1676f98da7fa511451d"><div class="ttname"><a href="group__api__network__types.html#ga5f6f5c916a5dd1676f98da7fa511451d">wiconnect::NetworkJoinResult</a></div><div class="ttdeci">NetworkJoinResult</div><div class="ttdoc">Network connection status. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00250">WiconnectTypes.h:250</a></div></div>
+<div class="ttc" id="group__conversion__util_html_ga01520d55f1923d90fb899ddef2f21cdf"><div class="ttname"><a href="group__conversion__util.html#ga01520d55f1923d90fb899ddef2f21cdf">wiconnect::NetworkInterface::macAddressToStr</a></div><div class="ttdeci">static const char * macAddressToStr(const MacAddress *macAddress, char *macStrBuffer ALLOW_NULL_STRING_BUFFER)</div><div class="ttdoc">Convert MacAddress to string. </div></div>
 <div class="ttc" id="group__api__network__wlan_html_gafefe6e679d7b48a7127d3ed6371fe58b"><div class="ttname"><a href="group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b">wiconnect::NetworkInterface::getNetworkJoinResult</a></div><div class="ttdeci">WiconnectResult getNetworkJoinResult(NetworkJoinResult *joinResultPtr)</div><div class="ttdoc">Get the result of joining the network. </div></div>
-<div class="ttc" id="group__conversion__util_html_ga13ecaf390b4bf4a68b51a6b18e669134"><div class="ttname"><a href="group__conversion__util.html#ga13ecaf390b4bf4a68b51a6b18e669134">wiconnect::NetworkInterface::macAddressToStr</a></div><div class="ttdeci">static const char * macAddressToStr(const MacAddress *macAddress, char *macStrBuffer=NULL)</div><div class="ttdoc">Convert MacAddress to string. </div></div>
 <div class="ttc" id="classwiconnect_1_1_scan_result_list_html"><div class="ttname"><a href="classwiconnect_1_1_scan_result_list.html">wiconnect::ScanResultList</a></div><div class="ttdoc">List of WiFi network scan results. </div><div class="ttdef"><b>Definition:</b> <a href="_scan_result_list_8h_source.html#l00046">ScanResultList.h:46</a></div></div>
+<div class="ttc" id="group__api__network__settings_html_ga258d8b80064c6ce311a433affe63a0e9"><div class="ttname"><a href="group__api__network__settings.html#ga258d8b80064c6ce311a433affe63a0e9">wiconnect::NetworkInterface::setDnsAddress</a></div><div class="ttdeci">WiconnectResult setDnsAddress(uint32_t dnsAddress)</div><div class="ttdoc">Set static DNS Address. </div></div>
 <div class="ttc" id="group__conversion__util_html_gad4661f859cfadbe193793898671043c9"><div class="ttname"><a href="group__conversion__util.html#gad4661f859cfadbe193793898671043c9">wiconnect::NetworkInterface::signalStrengthToStr</a></div><div class="ttdeci">static const char * signalStrengthToStr(NetworkSignalStrength signalStrenth)</div><div class="ttdoc">Convert NetworkSignalStrength to string. </div></div>
 <div class="ttc" id="group__api__network__wlan_html_ga047ba9670f60406466391cec5bdd28e5"><div class="ttname"><a href="group__api__network__wlan.html#ga047ba9670f60406466391cec5bdd28e5">wiconnect::NetworkInterface::getNetworkStatus</a></div><div class="ttdeci">WiconnectResult getNetworkStatus(NetworkStatus *statusPtr)</div><div class="ttdoc">Get connection status to WiFi network. </div></div>
 <div class="ttc" id="group__conversion__util_html_ga6a479a58591ead92dcf0586e11fcad17"><div class="ttname"><a href="group__conversion__util.html#ga6a479a58591ead92dcf0586e11fcad17">wiconnect::NetworkInterface::strToSsid</a></div><div class="ttdeci">static bool strToSsid(const char *str, Ssid *ssid)</div><div class="ttdoc">Convert string Ssid. </div></div>
-<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00074">WiconnectInterface.h:74</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00078">WiconnectInterface.h:78</a></div></div>
 <div class="ttc" id="group__conversion__util_html_ga6216eed4cc05c37ce1ed13a0fbb6acd8"><div class="ttname"><a href="group__conversion__util.html#ga6216eed4cc05c37ce1ed13a0fbb6acd8">wiconnect::NetworkInterface::rssiToSignalStrength</a></div><div class="ttdeci">static NetworkSignalStrength rssiToSignalStrength(int rssi)</div><div class="ttdoc">Convert RSSI (in dBm) to NetworkSignalStrength. </div></div>
 <div class="ttc" id="group__api__network__util_html_ga1770babfc2abc6da7c085ef92709ee89"><div class="ttname"><a href="group__api__network__util.html#ga1770babfc2abc6da7c085ef92709ee89">wiconnect::NetworkInterface::lookup</a></div><div class="ttdeci">WiconnectResult lookup(const char *domain, uint32_t *ipAddressPtr)</div><div class="ttdoc">Resolve domain name into IP address. </div></div>
-<div class="ttc" id="group__conversion__util_html_gafce7929a10e16cf9be7307a2f97bef3f"><div class="ttname"><a href="group__conversion__util.html#gafce7929a10e16cf9be7307a2f97bef3f">wiconnect::NetworkInterface::ssidToStr</a></div><div class="ttdeci">static const char * ssidToStr(const Ssid *ssid, char *ssidStrBuffer=NULL)</div><div class="ttdoc">Convert Ssid to string. </div></div>
 <div class="ttc" id="group__api__network__setup_html_gac5ca67b7bfa587935b5619e441dc8d8a"><div class="ttname"><a href="group__api__network__setup.html#gac5ca67b7bfa587935b5619e441dc8d8a">wiconnect::NetworkInterface::stopWebSetup</a></div><div class="ttdeci">WiconnectResult stopWebSetup()</div><div class="ttdoc">Stop the WiConnect WiFi module &#39;web setup&#39; feature. </div></div>
-<div class="ttc" id="group__api__network__types_html_gab448e57fc1a5e21cbba0283fd1a35d99"><div class="ttname"><a href="group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99">wiconnect::NetworkStatus</a></div><div class="ttdeci">NetworkStatus</div><div class="ttdoc">Network connection status. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00224">WiconnectTypes.h:224</a></div></div>
+<div class="ttc" id="group__api__network__types_html_gab448e57fc1a5e21cbba0283fd1a35d99"><div class="ttname"><a href="group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99">wiconnect::NetworkStatus</a></div><div class="ttdeci">NetworkStatus</div><div class="ttdoc">Network connection status. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00238">WiconnectTypes.h:238</a></div></div>
+<div class="ttc" id="group__api__network__wlan_html_ga70991a2c5865c8f0b44b67de35f3b6b3"><div class="ttname"><a href="group__api__network__wlan.html#ga70991a2c5865c8f0b44b67de35f3b6b3">wiconnect::NetworkInterface::getMacAddress</a></div><div class="ttdeci">WiconnectResult getMacAddress(MacAddress *macAddress)</div><div class="ttdoc">Get MAC address of the WiFi module. </div></div>
 <div class="ttc" id="group__api__network__wlan_html_gac439d0af5a17da32d405e25dcba83d16"><div class="ttname"><a href="group__api__network__wlan.html#gac439d0af5a17da32d405e25dcba83d16">wiconnect::NetworkInterface::join</a></div><div class="ttdeci">WiconnectResult join(const char *ssid=NULL, const char *password=NULL, const Callback &amp;completeHandler=Callback())</div><div class="ttdoc">Join a WiFi network. </div></div>
-<div class="ttc" id="group__conversion__util_html_gaff8b0af70f4d4be792b943ad3af27303"><div class="ttname"><a href="group__conversion__util.html#gaff8b0af70f4d4be792b943ad3af27303">wiconnect::NetworkInterface::ipToStr</a></div><div class="ttdeci">static const char * ipToStr(uint32_t ip, char *ipStrBuffer=NULL)</div><div class="ttdoc">Convert IP address to string. </div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/_periodic_timer_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_periodic_timer_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -104,7 +104,7 @@
 <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
 <div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#pragma once</span></div>
 <div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;WiconnectTypes.h&quot;</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;api/WiconnectTypes.h&quot;</span></div>
 <div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div>
 <div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div>
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="keyword">namespace </span>wiconnect</div>
--- a/doc/html/_pin_irq_handler_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_pin_irq_handler_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -133,7 +133,7 @@
 <div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;</div>
 <div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;}</div>
 <div class="ttc" id="classwiconnect_1_1_callback_html"><div class="ttname"><a href="classwiconnect_1_1_callback.html">wiconnect::Callback</a></div><div class="ttdoc">Generic callback function. </div><div class="ttdef"><b>Definition:</b> <a href="_callback_8h_source.html#l00049">Callback.h:49</a></div></div>
-<div class="ttc" id="group__api__core__types_html_ga1cf4dfa71da0b0dc3dc707dacf56cc9c"><div class="ttname"><a href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">wiconnect::Pin</a></div><div class="ttdeci">PinName Pin</div><div class="ttdoc">Pin name on HOST. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00123">sdk.h:123</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga1cf4dfa71da0b0dc3dc707dacf56cc9c"><div class="ttname"><a href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">wiconnect::Pin</a></div><div class="ttdeci">PinName Pin</div><div class="ttdoc">Pin name on HOST. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00134">sdk.h:134</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/_queued_command_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_queued_command_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -105,7 +105,7 @@
 <div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#pragma once</span></div>
 <div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
 <div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;WiconnectTypes.h&quot;</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;api/WiconnectTypes.h&quot;</span></div>
 <div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div>
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div>
 <div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="keyword">namespace </span>wiconnect</div>
@@ -156,12 +156,12 @@
 <div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div>
 <div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div>
 <div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;}</div>
-<div class="ttc" id="classwiconnect_1_1_network_interface_html"><div class="ttname"><a href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></div><div class="ttdoc">The provides an interface for joining and/or creating a network. It provides other utilities such as ...</div><div class="ttdef"><b>Definition:</b> <a href="_network_interface_8h_source.html#l00049">NetworkInterface.h:49</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_network_interface_html"><div class="ttname"><a href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></div><div class="ttdoc">The provides an interface for joining and/or creating a network. It provides other utilities such as ...</div><div class="ttdef"><b>Definition:</b> <a href="_network_interface_8h_source.html#l00055">NetworkInterface.h:55</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_callback_html"><div class="ttname"><a href="classwiconnect_1_1_callback.html">wiconnect::Callback</a></div><div class="ttdoc">Generic callback function. </div><div class="ttdef"><b>Definition:</b> <a href="_callback_8h_source.html#l00049">Callback.h:49</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_reader_func_html"><div class="ttname"><a href="classwiconnect_1_1_reader_func.html">wiconnect::ReaderFunc</a></div><div class="ttdoc">Generic data reading callback function. </div><div class="ttdef"><b>Definition:</b> <a href="_reader_func_8h_source.html#l00045">ReaderFunc.h:45</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_queued_command_html"><div class="ttname"><a href="classwiconnect_1_1_queued_command.html">wiconnect::QueuedCommand</a></div><div class="ttdoc">Class which contains command for asynchronous processing. </div><div class="ttdef"><b>Definition:</b> <a href="_queued_command_8h_source.html#l00043">QueuedCommand.h:43</a></div></div>
-<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00074">WiconnectInterface.h:74</a></div></div>
-<div class="ttc" id="group__api__core__macro_html_ga2aa16118029ab13ab41514cb8eb93ba7"><div class="ttname"><a href="group__api__core__macro.html#ga2aa16118029ab13ab41514cb8eb93ba7">WICONNECT_MAX_CMD_SIZE</a></div><div class="ttdeci">#define WICONNECT_MAX_CMD_SIZE</div><div class="ttdoc">The maximum command size that may be sent to the WiConnect WiFi module. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00106">WiconnectTypes.h:106</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00078">WiconnectInterface.h:78</a></div></div>
+<div class="ttc" id="group__api__core__macro_html_ga2aa16118029ab13ab41514cb8eb93ba7"><div class="ttname"><a href="group__api__core__macro.html#ga2aa16118029ab13ab41514cb8eb93ba7">WICONNECT_MAX_CMD_SIZE</a></div><div class="ttdeci">#define WICONNECT_MAX_CMD_SIZE</div><div class="ttdoc">The maximum command size that may be sent to the WiConnect WiFi module. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00113">WiconnectTypes.h:113</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/_r_e_a_d_m_e_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_r_e_a_d_m_e_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -121,9 +121,12 @@
 <div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;</div>
 <div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;<span class="comment">// @}</span></div>
 <div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;<span class="comment">// ----------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;<span class="comment">// ----------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;<span class="comment">// @}</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;<span class="comment">// ----------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/_reader_func_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_reader_func_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -104,7 +104,7 @@
 <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
 <div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#pragma once</span></div>
 <div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;WiconnectTypes.h&quot;</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;api/WiconnectTypes.h&quot;</span></div>
 <div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;FunctionPointer.h&quot;</span></div>
 <div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div>
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div>
@@ -167,8 +167,8 @@
 <div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;};</div>
 <div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;</div>
 <div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;}</div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05acfd6d3c1efd03fae8cd443bc01bca8d6"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05acfd6d3c1efd03fae8cd443bc01bca8d6">wiconnect::WICONNECT_ERROR</a></div><div class="ttdoc">Generic error. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00168">WiconnectTypes.h:168</a></div></div>
-<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00159">WiconnectTypes.h:159</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05acfd6d3c1efd03fae8cd443bc01bca8d6"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05acfd6d3c1efd03fae8cd443bc01bca8d6">wiconnect::WICONNECT_ERROR</a></div><div class="ttdoc">Generic error. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00175">WiconnectTypes.h:175</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_reader_func_html"><div class="ttname"><a href="classwiconnect_1_1_reader_func.html">wiconnect::ReaderFunc</a></div><div class="ttdoc">Generic data reading callback function. </div><div class="ttdef"><b>Definition:</b> <a href="_reader_func_8h_source.html#l00045">ReaderFunc.h:45</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_function_pointer_html"><div class="ttname"><a href="classwiconnect_1_1_function_pointer.html">wiconnect::FunctionPointer</a></div><div class="ttdoc">Generic function pointer. </div><div class="ttdef"><b>Definition:</b> <a href="_function_pointer_8h_source.html#l00040">FunctionPointer.h:40</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
--- a/doc/html/_scan_result_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_scan_result_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -106,8 +106,8 @@
 <div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
 <div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div>
 <div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &quot;WiconnectTypes.h&quot;</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &quot;StringUtil.h&quot;</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &quot;api/WiconnectTypes.h&quot;</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &quot;api/StringUtil.h&quot;</span></div>
 <div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div>
 <div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div>
 <div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="keyword">namespace </span>wiconnect</div>
@@ -140,23 +140,25 @@
 <div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    <a class="code" href="group__api__network__types.html#ga026bd11cd5df47b7022362243e2d553f">NetworkSecurity</a> security;</div>
 <div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    <a class="code" href="structwiconnect_1_1_ssid.html">Ssid</a> ssid;</div>
 <div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    <span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>(<span class="keywordtype">size_t</span> size);</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    <span class="keywordtype">void</span> <span class="keyword">operator</span> <span class="keyword">delete</span>(<span class="keywordtype">void</span>*);</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_scan_result_list.html">ScanResultList</a>;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;};</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor">#ifdef WICONNECT_ENABLE_MALLOC</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    <span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>(<span class="keywordtype">size_t</span> size);</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    <span class="keywordtype">void</span> <span class="keyword">operator</span> <span class="keyword">delete</span>(<span class="keywordtype">void</span>*);</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_scan_result_list.html">ScanResultList</a>;</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;};</div>
 <div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div>
 <div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;</div>
 <div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div>
 <div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;}</div>
-<div class="ttc" id="group__api__network__types_html_ga026bd11cd5df47b7022362243e2d553f"><div class="ttname"><a href="group__api__network__types.html#ga026bd11cd5df47b7022362243e2d553f">wiconnect::NetworkSecurity</a></div><div class="ttdeci">NetworkSecurity</div><div class="ttdoc">Network security type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00267">WiconnectTypes.h:267</a></div></div>
-<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00159">WiconnectTypes.h:159</a></div></div>
-<div class="ttc" id="structwiconnect_1_1_mac_address_html"><div class="ttname"><a href="structwiconnect_1_1_mac_address.html">wiconnect::MacAddress</a></div><div class="ttdoc">Network MAC Address type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00293">WiconnectTypes.h:293</a></div></div>
-<div class="ttc" id="group__api__network__types_html_gac5aead2b4cca0122a60168e75ea41d36"><div class="ttname"><a href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">wiconnect::NetworkSignalStrength</a></div><div class="ttdeci">NetworkSignalStrength</div><div class="ttdoc">Network RSSI signal level. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00253">WiconnectTypes.h:253</a></div></div>
-<div class="ttc" id="structwiconnect_1_1_ssid_html"><div class="ttname"><a href="structwiconnect_1_1_ssid.html">wiconnect::Ssid</a></div><div class="ttdoc">Network SSID type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00283">WiconnectTypes.h:283</a></div></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;}</div>
+<div class="ttc" id="group__api__network__types_html_ga026bd11cd5df47b7022362243e2d553f"><div class="ttname"><a href="group__api__network__types.html#ga026bd11cd5df47b7022362243e2d553f">wiconnect::NetworkSecurity</a></div><div class="ttdeci">NetworkSecurity</div><div class="ttdoc">Network security type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00281">WiconnectTypes.h:281</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
+<div class="ttc" id="structwiconnect_1_1_mac_address_html"><div class="ttname"><a href="structwiconnect_1_1_mac_address.html">wiconnect::MacAddress</a></div><div class="ttdoc">Network MAC Address type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00307">WiconnectTypes.h:307</a></div></div>
+<div class="ttc" id="group__api__network__types_html_gac5aead2b4cca0122a60168e75ea41d36"><div class="ttname"><a href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">wiconnect::NetworkSignalStrength</a></div><div class="ttdeci">NetworkSignalStrength</div><div class="ttdoc">Network RSSI signal level. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00267">WiconnectTypes.h:267</a></div></div>
+<div class="ttc" id="structwiconnect_1_1_ssid_html"><div class="ttname"><a href="structwiconnect_1_1_ssid.html">wiconnect::Ssid</a></div><div class="ttdoc">Network SSID type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00297">WiconnectTypes.h:297</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_scan_result_list_html"><div class="ttname"><a href="classwiconnect_1_1_scan_result_list.html">wiconnect::ScanResultList</a></div><div class="ttdoc">List of WiFi network scan results. </div><div class="ttdef"><b>Definition:</b> <a href="_scan_result_list_8h_source.html#l00046">ScanResultList.h:46</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_scan_result_html"><div class="ttname"><a href="classwiconnect_1_1_scan_result.html">wiconnect::ScanResult</a></div><div class="ttdoc">Contains single entry from WiFi scan results. </div><div class="ttdef"><b>Definition:</b> <a href="_scan_result_8h_source.html#l00046">ScanResult.h:46</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
--- a/doc/html/_scan_result_list_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_scan_result_list_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -104,8 +104,8 @@
 <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
 <div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#pragma once</span></div>
 <div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;WiconnectTypes.h&quot;</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;types/ScanResult.h&quot;</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;api/WiconnectTypes.h&quot;</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;ScanResult.h&quot;</span></div>
 <div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div>
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div>
 <div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div>
@@ -119,28 +119,30 @@
 <div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <a class="code" href="classwiconnect_1_1_scan_result_list.html">ScanResultList</a>(<span class="keywordtype">int</span> bufferLen = 0, <span class="keywordtype">void</span> *buffer = NULL);</div>
 <div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    ~<a class="code" href="classwiconnect_1_1_scan_result_list.html">ScanResultList</a>();</div>
 <div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_scan_result.html">ScanResult</a>* getListHead() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="keywordtype">int</span> getCount() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_scan_result.html">ScanResult</a>* getResult(<span class="keywordtype">int</span> i) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_scan_result.html">ScanResult</a>* operator [](<span class="keywordtype">int</span> i) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <a class="code" href="classwiconnect_1_1_scan_result.html">ScanResult</a> *listHead, *listTail;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    uint8_t *buffer;</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    uint8_t *bufferPtr;</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    <span class="keywordtype">int</span> bufferLen;</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <span class="keywordtype">int</span> count;</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> add(<span class="keyword">const</span> <span class="keywordtype">char</span> *channelStr, <span class="keyword">const</span> <span class="keywordtype">char</span> *rssiStr, <span class="keyword">const</span> <span class="keywordtype">char</span>* macStr, <span class="keyword">const</span> <span class="keywordtype">char</span> *rateStr, <span class="keyword">const</span> <span class="keywordtype">char</span> *secStr, <span class="keyword">const</span> <span class="keywordtype">char</span> *ssidStr);</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <span class="keywordtype">void</span> reset(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_scan_result.html">ScanResult</a>* getListHead() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="keywordtype">int</span> getCount() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_scan_result.html">ScanResult</a>* getResult(<span class="keywordtype">int</span> i) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_scan_result.html">ScanResult</a>* operator [](<span class="keywordtype">int</span> i) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    <a class="code" href="classwiconnect_1_1_scan_result.html">ScanResult</a> *listHead, *listTail;</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    uint8_t *buffer;</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    uint8_t *bufferPtr;</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    uint16_t bufferLen;</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    uint16_t bufferRemaining;</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="keywordtype">int</span> count;</div>
 <div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_network_interface.html">NetworkInterface</a>;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;};</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;}</div>
-<div class="ttc" id="classwiconnect_1_1_network_interface_html"><div class="ttname"><a href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></div><div class="ttdoc">The provides an interface for joining and/or creating a network. It provides other utilities such as ...</div><div class="ttdef"><b>Definition:</b> <a href="_network_interface_8h_source.html#l00049">NetworkInterface.h:49</a></div></div>
-<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00159">WiconnectTypes.h:159</a></div></div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> add(<span class="keyword">const</span> <span class="keywordtype">char</span> *channelStr, <span class="keyword">const</span> <span class="keywordtype">char</span> *rssiStr, <span class="keyword">const</span> <span class="keywordtype">char</span>* macStr, <span class="keyword">const</span> <span class="keywordtype">char</span> *rateStr, <span class="keyword">const</span> <span class="keywordtype">char</span> *secStr, <span class="keyword">const</span> <span class="keywordtype">char</span> *ssidStr);</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_network_interface.html">NetworkInterface</a>;</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;};</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;}</div>
+<div class="ttc" id="classwiconnect_1_1_network_interface_html"><div class="ttname"><a href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></div><div class="ttdoc">The provides an interface for joining and/or creating a network. It provides other utilities such as ...</div><div class="ttdef"><b>Definition:</b> <a href="_network_interface_8h_source.html#l00055">NetworkInterface.h:55</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_scan_result_list_html"><div class="ttname"><a href="classwiconnect_1_1_scan_result_list.html">wiconnect::ScanResultList</a></div><div class="ttdoc">List of WiFi network scan results. </div><div class="ttdef"><b>Definition:</b> <a href="_scan_result_list_8h_source.html#l00046">ScanResultList.h:46</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_scan_result_html"><div class="ttname"><a href="classwiconnect_1_1_scan_result.html">wiconnect::ScanResult</a></div><div class="ttdoc">Contains single entry from WiFi scan results. </div><div class="ttdef"><b>Definition:</b> <a href="_scan_result_8h_source.html#l00046">ScanResult.h:46</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
--- a/doc/html/_socket_interface_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_socket_interface_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -106,113 +106,132 @@
 <div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
 <div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;Wiconnect.h&quot;</span></div>
 <div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;types/WiconnectSocket.h&quot;</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &quot;types/SocketIrqHandlerMap.h&quot;</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &quot;types/WiconnectUdpServer.h&quot;</span></div>
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="keyword">namespace </span>wiconnect {</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div>
-<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classwiconnect_1_1_socket_interface.html">   51</a></span>&#160;<span class="keyword">class </span><a class="code" href="classwiconnect_1_1_socket_interface.html">SocketInterface</a></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;{</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106">closeAllSockets</a>();</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a">registerSocketIrqHandler</a>(<a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;handler);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__misc.html#ga820d2fdb12d343212638e55633bd8551">unregisterSocketIrqHandler</a>(<a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__misc.html#ga037cb2813683697342fff01239c7f6f8">connect</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <a class="code" href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">SocketType</a> type, <span class="keyword">const</span> <span class="keywordtype">char</span> *host, uint16_t remortPort, uint16_t localPort, <span class="keyword">const</span> <span class="keywordtype">void</span> *args, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin);</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__tcp.html#ga4a788d604d759b5da51f682b998b9bd2">tcpConnect</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <span class="keyword">const</span> <span class="keywordtype">char</span> *host, uint16_t remortPort, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin = <a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>);</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#ifdef WICONNECT_GPIO_IRQ_ENABLED</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &quot;types/SocketIrqHandlerMap.h&quot;</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="keyword">namespace </span>wiconnect {</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#ifdef WICONNECT_GPIO_IRQ_ENABLED</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#define GPIO_IRQ_ARG_NC ,Pin irqPin = PIN_NC</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#define GPIO_IRQ_ARG ,Pin irqPin</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#define GPIO_IRQ_PARAM ,irqPin</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#define GPIO_IRQ_ARG_NC</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#define GPIO_IRQ_ARG</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#define GPIO_IRQ_PARAM</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div>
+<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classwiconnect_1_1_socket_interface.html">   63</a></span>&#160;<span class="keyword">class </span><a class="code" href="classwiconnect_1_1_socket_interface.html">SocketInterface</a></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;{</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106">closeAllSockets</a>();</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="preprocessor">#ifdef WICONNECT_GPIO_IRQ_ENABLED</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> registerSocketIrqHandler(<a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;handler);</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> unregisterSocketIrqHandler(<a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin);</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__misc.html#gab24204ef309b6e7a52b03b35a7046b45">connect</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <a class="code" href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">SocketType</a> type, <span class="keyword">const</span> <span class="keywordtype">char</span> *host, uint16_t remortPort, uint16_t localPort, <span class="keyword">const</span> <span class="keywordtype">void</span> *args GPIO_IRQ_ARG);</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div>
 <div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__tcp.html#ga563831b33089437233f128483d034578">tcpListen</a>(uint16_t listeningPort, <span class="keywordtype">int</span> maxClients = 0, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin = <a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>);</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__tcp.html#gad8e8632715a38222ce4fea5fe0aaf527">tcpConnect</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <span class="keyword">const</span> <span class="keywordtype">char</span> *host, uint16_t remortPort GPIO_IRQ_ARG_NC);</div>
 <div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;</div>
 <div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;</div>
 <div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
 <div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3">tcpAccept</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <span class="keywordtype">int</span> timeoutMs = <a class="code" href="group__api__core__macro.html#ga580e5f45fee866c845e0d3fd1eb1744a">WICONNECT_WAIT_FOREVER</a>);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa">tcpListen</a>(uint16_t listeningPort, <span class="keywordtype">int</span> maxClients = 0 GPIO_IRQ_ARG_NC);</div>
 <div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0">tcpServerStop</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035">tcpAccept</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, uint32_t timeoutMs = <a class="code" href="group__api__core__macro.html#ga580e5f45fee866c845e0d3fd1eb1744a">WICONNECT_WAIT_FOREVER</a>);</div>
 <div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__tls.html#gacf10d28ced4591d99c4113ebee6382ca">tlsConnect</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <span class="keyword">const</span> <span class="keywordtype">char</span> *host, uint16_t remortPort, <span class="keyword">const</span> <span class="keywordtype">char</span> *certFilename = NULL, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin = <a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0">tcpServerStop</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
 <div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__udp.html#ga80f1d19174124f3d0f246e1c1201b3ec">udpConnect</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <span class="keyword">const</span> <span class="keywordtype">char</span> *host, uint16_t remortPort, uint16_t localPort = <a class="code" href="group__api__socket__macro.html#gae54117ebe433295ef992b9ca83c46d98">SOCKET_ANY_PORT</a>, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin = <a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>);</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__tls.html#ga4e6e89eb9aedec1ff6d25645c33f51e4">tlsConnect</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <span class="keyword">const</span> <span class="keywordtype">char</span> *host, uint16_t remortPort, <span class="keyword">const</span> <span class="keywordtype">char</span> *certFilename = NULL GPIO_IRQ_ARG_NC);</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
 <div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__http.html#ga181a03d883f60dff0c03b65e066f0eed">httpConnect</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <span class="keyword">const</span> <span class="keywordtype">char</span> *url, <span class="keyword">const</span> <a class="code" href="structwiconnect_1_1_http_socket_args.html">HttpSocketArgs</a> *args);</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__udp.html#ga0ca5eabcd64ce45b574205447101f8aa">udpConnect</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <span class="keyword">const</span> <span class="keywordtype">char</span> *host, uint16_t remortPort, uint16_t localPort = <a class="code" href="group__api__socket__macro.html#gae54117ebe433295ef992b9ca83c46d98">SOCKET_ANY_PORT</a> GPIO_IRQ_ARG_NC);</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__udp.html#ga067fb0d662d8e27e3f5b561ded29a51a">udpListen</a>(<a class="code" href="classwiconnect_1_1_wiconnect_udp_server.html">WiconnectUdpServer</a> &amp;udpServer, uint16_t listeningPort);</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;</div>
 <div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__http.html#gac9b6c6a348f790cc8d43889dd72029f6">httpGet</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <span class="keyword">const</span> <span class="keywordtype">char</span> *url, <span class="keywordtype">bool</span> openOnly = <span class="keyword">false</span>, <span class="keyword">const</span> <span class="keywordtype">char</span> *certFilename = NULL);</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__http.html#ga1b6a3ebdbd164f0eb683fc335ef4d365">httpPost</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <span class="keyword">const</span> <span class="keywordtype">char</span> *url, <span class="keyword">const</span> <span class="keywordtype">char</span> *contextType, <span class="keywordtype">bool</span> openOnly = <span class="keyword">true</span>, <span class="keyword">const</span> <span class="keywordtype">char</span> *certFilename = NULL);</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__http.html#gabcb3d69b2b1718e7ebe1ed171dec1f85">httpHead</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <span class="keyword">const</span> <span class="keywordtype">char</span> *url, <span class="keyword">const</span> <span class="keywordtype">char</span> *certFilename = NULL);</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__http.html#gabed18edc44f464bac64ce8a6dc3617ec">httpAddHeader</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keyword">const</span> <span class="keywordtype">char</span> *value);</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__http.html#gadf59ca0783b89ee32f205e33f1bd5517">httpGetStatus</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, uint32_t *statusCodePtr);</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;    <a class="code" href="classwiconnect_1_1_socket_interface.html">SocketInterface</a>(<a class="code" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a> *wiconnect);</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    ~<a class="code" href="classwiconnect_1_1_socket_interface.html">SocketInterface</a>();</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;    SocketIrqHandlerMap irqHandlers;</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    <span class="keywordtype">bool</span> serverConnectedClientList[<a class="code" href="group__api__core__macro.html#ga45fe565132845ca570ded816f25561b0">WICONNECT_MAX_SOCKETS</a>];</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> pollForServerClient(uint8_t *handle = NULL, uint16_t *localPort = NULL, uint16_t *remotePort = NULL, uint32_t *ipAddress = NULL);</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;    <span class="keywordtype">void</span> socketClosedCallback(<span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> *socket);</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__http.html#ga181a03d883f60dff0c03b65e066f0eed">httpConnect</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <span class="keyword">const</span> <span class="keywordtype">char</span> *url, <span class="keyword">const</span> <a class="code" href="structwiconnect_1_1_http_socket_args.html">HttpSocketArgs</a> *args);</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__http.html#gac9b6c6a348f790cc8d43889dd72029f6">httpGet</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <span class="keyword">const</span> <span class="keywordtype">char</span> *url, <span class="keywordtype">bool</span> openOnly = <span class="keyword">false</span>, <span class="keyword">const</span> <span class="keywordtype">char</span> *certFilename = NULL);</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__http.html#ga1b6a3ebdbd164f0eb683fc335ef4d365">httpPost</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <span class="keyword">const</span> <span class="keywordtype">char</span> *url, <span class="keyword">const</span> <span class="keywordtype">char</span> *contextType, <span class="keywordtype">bool</span> openOnly = <span class="keyword">true</span>, <span class="keyword">const</span> <span class="keywordtype">char</span> *certFilename = NULL);</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__http.html#gabcb3d69b2b1718e7ebe1ed171dec1f85">httpHead</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <span class="keyword">const</span> <span class="keywordtype">char</span> *url, <span class="keyword">const</span> <span class="keywordtype">char</span> *certFilename = NULL);</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__http.html#gabed18edc44f464bac64ce8a6dc3617ec">httpAddHeader</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keyword">const</span> <span class="keywordtype">char</span> *value);</div>
 <div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;    <a class="code" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a> *wiconnect;</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;};</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;}</div>
-<div class="ttc" id="group__api__socket__types_html_ga69dc55558df4c81599c5fb3dff98756d"><div class="ttname"><a href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">wiconnect::SocketType</a></div><div class="ttdeci">SocketType</div><div class="ttdoc">Socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00324">WiconnectTypes.h:324</a></div></div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__socket__http.html#gadf59ca0783b89ee32f205e33f1bd5517">httpGetStatus</a>(<a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, uint32_t *statusCodePtr);</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;<span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;    <a class="code" href="classwiconnect_1_1_socket_interface.html">SocketInterface</a>(<a class="code" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a> *wiconnect);</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    ~<a class="code" href="classwiconnect_1_1_socket_interface.html">SocketInterface</a>();</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;<span class="preprocessor">#ifdef WICONNECT_GPIO_IRQ_ENABLED</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;    SocketIrqHandlerMap irqHandlers;</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;    uint32_t serverConnectedClientList;</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> pollForServerClient(uint8_t *handle = NULL, uint16_t *localPort = NULL, uint16_t *remotePort = NULL, uint32_t *ipAddress = NULL);</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;    <span class="keywordtype">void</span> socketClosedCallback(<span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> *socket);</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_ghm_interface.html">GhmInterface</a>;</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;    <a class="code" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a> *wiconnect;</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;};</div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;}</div>
+<div class="ttc" id="group__api__socket__udp_html_ga0ca5eabcd64ce45b574205447101f8aa"><div class="ttname"><a href="group__api__socket__udp.html#ga0ca5eabcd64ce45b574205447101f8aa">wiconnect::SocketInterface::udpConnect</a></div><div class="ttdeci">WiconnectResult udpConnect(WiconnectSocket &amp;socket, const char *host, uint16_t remortPort, uint16_t localPort=SOCKET_ANY_PORT GPIO_IRQ_ARG_NC)</div><div class="ttdoc">Connect to remote UDP server. </div></div>
+<div class="ttc" id="group__api__socket__types_html_ga69dc55558df4c81599c5fb3dff98756d"><div class="ttname"><a href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">wiconnect::SocketType</a></div><div class="ttdeci">SocketType</div><div class="ttdoc">Socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00338">WiconnectTypes.h:338</a></div></div>
 <div class="ttc" id="group__api__socket__http_html_ga1b6a3ebdbd164f0eb683fc335ef4d365"><div class="ttname"><a href="group__api__socket__http.html#ga1b6a3ebdbd164f0eb683fc335ef4d365">wiconnect::SocketInterface::httpPost</a></div><div class="ttdeci">WiconnectResult httpPost(WiconnectSocket &amp;socket, const char *url, const char *contextType, bool openOnly=true, const char *certFilename=NULL)</div><div class="ttdoc">Issue HTTP POST Request. </div></div>
-<div class="ttc" id="group__api__socket__udp_html_ga80f1d19174124f3d0f246e1c1201b3ec"><div class="ttname"><a href="group__api__socket__udp.html#ga80f1d19174124f3d0f246e1c1201b3ec">wiconnect::SocketInterface::udpConnect</a></div><div class="ttdeci">WiconnectResult udpConnect(WiconnectSocket &amp;socket, const char *host, uint16_t remortPort, uint16_t localPort=SOCKET_ANY_PORT, Pin irqPin=PIN_NC)</div><div class="ttdoc">Connect to remote UDP server. </div></div>
-<div class="ttc" id="group__api__socket__tls_html_gacf10d28ced4591d99c4113ebee6382ca"><div class="ttname"><a href="group__api__socket__tls.html#gacf10d28ced4591d99c4113ebee6382ca">wiconnect::SocketInterface::tlsConnect</a></div><div class="ttdeci">WiconnectResult tlsConnect(WiconnectSocket &amp;socket, const char *host, uint16_t remortPort, const char *certFilename=NULL, Pin irqPin=PIN_NC)</div><div class="ttdoc">Connect to remote TLS server. </div></div>
-<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00159">WiconnectTypes.h:159</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_wiconnect_udp_server_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect_udp_server.html">wiconnect::WiconnectUdpServer</a></div><div class="ttdoc">UDP Server Listening socket. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_udp_server_8h_source.html#l00044">WiconnectUdpServer.h:44</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_callback_html"><div class="ttname"><a href="classwiconnect_1_1_callback.html">wiconnect::Callback</a></div><div class="ttdoc">Generic callback function. </div><div class="ttdef"><b>Definition:</b> <a href="_callback_8h_source.html#l00049">Callback.h:49</a></div></div>
-<div class="ttc" id="group__api__core__macro_html_ga45fe565132845ca570ded816f25561b0"><div class="ttname"><a href="group__api__core__macro.html#ga45fe565132845ca570ded816f25561b0">WICONNECT_MAX_SOCKETS</a></div><div class="ttdeci">#define WICONNECT_MAX_SOCKETS</div><div class="ttdoc">The maximum number of simulanteous opened sockets. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00116">WiconnectTypes.h:116</a></div></div>
-<div class="ttc" id="group__api__socket__misc_html_ga94d1eb5407cb8b60ad366ecbe0e1b52a"><div class="ttname"><a href="group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a">wiconnect::SocketInterface::registerSocketIrqHandler</a></div><div class="ttdeci">WiconnectResult registerSocketIrqHandler(Pin irqPin, const Callback &amp;handler)</div><div class="ttdoc">Register a host pin as an external interrupt. When the external interrupt is triggered, the supplied callback is executed. </div></div>
-<div class="ttc" id="group__api__socket__misc_html_ga820d2fdb12d343212638e55633bd8551"><div class="ttname"><a href="group__api__socket__misc.html#ga820d2fdb12d343212638e55633bd8551">wiconnect::SocketInterface::unregisterSocketIrqHandler</a></div><div class="ttdeci">WiconnectResult unregisterSocketIrqHandler(Pin irqPin)</div><div class="ttdoc">Unregister a previously registered IRQ pin. </div></div>
-<div class="ttc" id="group__api__socket__macro_html_gae54117ebe433295ef992b9ca83c46d98"><div class="ttname"><a href="group__api__socket__macro.html#gae54117ebe433295ef992b9ca83c46d98">SOCKET_ANY_PORT</a></div><div class="ttdeci">#define SOCKET_ANY_PORT</div><div class="ttdoc">Default which indicates to use the most optimal port. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00147">WiconnectTypes.h:147</a></div></div>
+<div class="ttc" id="group__api__socket__tcp_html_ga9f4f3e53ea7f4e84d43529da8580aaaa"><div class="ttname"><a href="group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa">wiconnect::SocketInterface::tcpListen</a></div><div class="ttdeci">WiconnectResult tcpListen(uint16_t listeningPort, int maxClients=0 GPIO_IRQ_ARG_NC)</div><div class="ttdoc">Start internal TCP server and listen on specified port. </div></div>
+<div class="ttc" id="group__api__socket__tls_html_ga4e6e89eb9aedec1ff6d25645c33f51e4"><div class="ttname"><a href="group__api__socket__tls.html#ga4e6e89eb9aedec1ff6d25645c33f51e4">wiconnect::SocketInterface::tlsConnect</a></div><div class="ttdeci">WiconnectResult tlsConnect(WiconnectSocket &amp;socket, const char *host, uint16_t remortPort, const char *certFilename=NULL GPIO_IRQ_ARG_NC)</div><div class="ttdoc">Connect to remote TLS server. </div></div>
+<div class="ttc" id="group__api__socket__tcp_html_gad8e8632715a38222ce4fea5fe0aaf527"><div class="ttname"><a href="group__api__socket__tcp.html#gad8e8632715a38222ce4fea5fe0aaf527">wiconnect::SocketInterface::tcpConnect</a></div><div class="ttdeci">WiconnectResult tcpConnect(WiconnectSocket &amp;socket, const char *host, uint16_t remortPort GPIO_IRQ_ARG_NC)</div><div class="ttdoc">Connect to remote TCP server. </div></div>
+<div class="ttc" id="classwiconnect_1_1_ghm_interface_html"><div class="ttname"><a href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></div><div class="ttdoc">The provides an interface for http://goHACK.me. </div><div class="ttdef"><b>Definition:</b> <a href="_ghm_interface_8h_source.html#l00081">GhmInterface.h:81</a></div></div>
+<div class="ttc" id="group__api__socket__macro_html_gae54117ebe433295ef992b9ca83c46d98"><div class="ttname"><a href="group__api__socket__macro.html#gae54117ebe433295ef992b9ca83c46d98">SOCKET_ANY_PORT</a></div><div class="ttdeci">#define SOCKET_ANY_PORT</div><div class="ttdoc">Default which indicates to use the most optimal port. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00154">WiconnectTypes.h:154</a></div></div>
 <div class="ttc" id="group__api__socket__http_html_gabed18edc44f464bac64ce8a6dc3617ec"><div class="ttname"><a href="group__api__socket__http.html#gabed18edc44f464bac64ce8a6dc3617ec">wiconnect::SocketInterface::httpAddHeader</a></div><div class="ttdeci">WiconnectResult httpAddHeader(WiconnectSocket &amp;socket, const char *key, const char *value)</div><div class="ttdoc">Add HTTP header key/value pair to opened HTTP request. </div></div>
 <div class="ttc" id="group__api__socket__misc_html_ga8a80d96efac7cc514fe7fc61d1878106"><div class="ttname"><a href="group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106">wiconnect::SocketInterface::closeAllSockets</a></div><div class="ttdeci">WiconnectResult closeAllSockets()</div><div class="ttdoc">Close all opened sockets. </div></div>
 <div class="ttc" id="group__api__socket__http_html_ga181a03d883f60dff0c03b65e066f0eed"><div class="ttname"><a href="group__api__socket__http.html#ga181a03d883f60dff0c03b65e066f0eed">wiconnect::SocketInterface::httpConnect</a></div><div class="ttdeci">WiconnectResult httpConnect(WiconnectSocket &amp;socket, const char *url, const HttpSocketArgs *args)</div><div class="ttdoc">Connect to remote HTTP server. </div></div>
-<div class="ttc" id="group__api__core__types_html_ga1cf4dfa71da0b0dc3dc707dacf56cc9c"><div class="ttname"><a href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">wiconnect::Pin</a></div><div class="ttdeci">PinName Pin</div><div class="ttdoc">Pin name on HOST. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00123">sdk.h:123</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga1cf4dfa71da0b0dc3dc707dacf56cc9c"><div class="ttname"><a href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">wiconnect::Pin</a></div><div class="ttdeci">PinName Pin</div><div class="ttdoc">Pin name on HOST. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00134">sdk.h:134</a></div></div>
 <div class="ttc" id="group__api__socket__http_html_gac9b6c6a348f790cc8d43889dd72029f6"><div class="ttname"><a href="group__api__socket__http.html#gac9b6c6a348f790cc8d43889dd72029f6">wiconnect::SocketInterface::httpGet</a></div><div class="ttdeci">WiconnectResult httpGet(WiconnectSocket &amp;socket, const char *url, bool openOnly=false, const char *certFilename=NULL)</div><div class="ttdoc">Issue HTTP GET Request. </div></div>
-<div class="ttc" id="group__api__socket__tcp_html_ga0ea4efc810c7c5a9fbd96fcc627633b3"><div class="ttname"><a href="group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3">wiconnect::SocketInterface::tcpAccept</a></div><div class="ttdeci">WiconnectResult tcpAccept(WiconnectSocket &amp;socket, int timeoutMs=WICONNECT_WAIT_FOREVER)</div><div class="ttdoc">Wait for next client to connect to TCP server. </div></div>
+<div class="ttc" id="group__api__socket__tcp_html_ga9e12bc568b7e8d72152e53a90de13035"><div class="ttname"><a href="group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035">wiconnect::SocketInterface::tcpAccept</a></div><div class="ttdeci">WiconnectResult tcpAccept(WiconnectSocket &amp;socket, uint32_t timeoutMs=WICONNECT_WAIT_FOREVER)</div><div class="ttdoc">Wait for next client to connect to TCP server. </div></div>
 <div class="ttc" id="group__api__socket__http_html_gabcb3d69b2b1718e7ebe1ed171dec1f85"><div class="ttname"><a href="group__api__socket__http.html#gabcb3d69b2b1718e7ebe1ed171dec1f85">wiconnect::SocketInterface::httpHead</a></div><div class="ttdeci">WiconnectResult httpHead(WiconnectSocket &amp;socket, const char *url, const char *certFilename=NULL)</div><div class="ttdoc">Issue HTTP HEAD Request. </div></div>
-<div class="ttc" id="group__api__socket__tcp_html_ga4a788d604d759b5da51f682b998b9bd2"><div class="ttname"><a href="group__api__socket__tcp.html#ga4a788d604d759b5da51f682b998b9bd2">wiconnect::SocketInterface::tcpConnect</a></div><div class="ttdeci">WiconnectResult tcpConnect(WiconnectSocket &amp;socket, const char *host, uint16_t remortPort, Pin irqPin=PIN_NC)</div><div class="ttdoc">Connect to remote TCP server. </div></div>
+<div class="ttc" id="group__api__socket__misc_html_gab24204ef309b6e7a52b03b35a7046b45"><div class="ttname"><a href="group__api__socket__misc.html#gab24204ef309b6e7a52b03b35a7046b45">wiconnect::SocketInterface::connect</a></div><div class="ttdeci">WiconnectResult connect(WiconnectSocket &amp;socket, SocketType type, const char *host, uint16_t remortPort, uint16_t localPort, const void *args GPIO_IRQ_ARG)</div><div class="ttdoc">Connect to remote server. </div></div>
 <div class="ttc" id="classwiconnect_1_1_wiconnect_socket_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect_socket.html">wiconnect::WiconnectSocket</a></div><div class="ttdoc">Connection object to remote server. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_socket_8h_source.html#l00043">WiconnectSocket.h:43</a></div></div>
-<div class="ttc" id="group__api__core__macro_html_ga580e5f45fee866c845e0d3fd1eb1744a"><div class="ttname"><a href="group__api__core__macro.html#ga580e5f45fee866c845e0d3fd1eb1744a">WICONNECT_WAIT_FOREVER</a></div><div class="ttdeci">#define WICONNECT_WAIT_FOREVER</div><div class="ttdoc">Never timeout. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00131">WiconnectTypes.h:131</a></div></div>
-<div class="ttc" id="classwiconnect_1_1_socket_interface_html"><div class="ttname"><a href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></div><div class="ttdoc">The provides an interface for creating TCP/UDP/TLS/HTTP client sockets. A client socket connects to a...</div><div class="ttdef"><b>Definition:</b> <a href="_socket_interface_8h_source.html#l00051">SocketInterface.h:51</a></div></div>
+<div class="ttc" id="group__api__core__macro_html_ga580e5f45fee866c845e0d3fd1eb1744a"><div class="ttname"><a href="group__api__core__macro.html#ga580e5f45fee866c845e0d3fd1eb1744a">WICONNECT_WAIT_FOREVER</a></div><div class="ttdeci">#define WICONNECT_WAIT_FOREVER</div><div class="ttdoc">Never timeout. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00138">WiconnectTypes.h:138</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_socket_interface_html"><div class="ttname"><a href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></div><div class="ttdoc">The provides an interface for creating TCP/UDP/TLS/HTTP client sockets. A client socket connects to a...</div><div class="ttdef"><b>Definition:</b> <a href="_socket_interface_8h_source.html#l00063">SocketInterface.h:63</a></div></div>
 <div class="ttc" id="group__api__socket__tcp_html_ga3d0137ebe308674e75f81457c38679d0"><div class="ttname"><a href="group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0">wiconnect::SocketInterface::tcpServerStop</a></div><div class="ttdeci">WiconnectResult tcpServerStop(void)</div><div class="ttdoc">Stop TCP server from listening on port. Close all connected clients. </div></div>
-<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00074">WiconnectInterface.h:74</a></div></div>
-<div class="ttc" id="group__api__socket__tcp_html_ga563831b33089437233f128483d034578"><div class="ttname"><a href="group__api__socket__tcp.html#ga563831b33089437233f128483d034578">wiconnect::SocketInterface::tcpListen</a></div><div class="ttdeci">WiconnectResult tcpListen(uint16_t listeningPort, int maxClients=0, Pin irqPin=PIN_NC)</div><div class="ttdoc">Start internal TCP server and listen on specified port. </div></div>
-<div class="ttc" id="group__api__socket__misc_html_ga037cb2813683697342fff01239c7f6f8"><div class="ttname"><a href="group__api__socket__misc.html#ga037cb2813683697342fff01239c7f6f8">wiconnect::SocketInterface::connect</a></div><div class="ttdeci">WiconnectResult connect(WiconnectSocket &amp;socket, SocketType type, const char *host, uint16_t remortPort, uint16_t localPort, const void *args, Pin irqPin)</div><div class="ttdoc">Connect to remote server. </div></div>
-<div class="ttc" id="structwiconnect_1_1_http_socket_args_html"><div class="ttname"><a href="structwiconnect_1_1_http_socket_args.html">wiconnect::HttpSocketArgs</a></div><div class="ttdoc">Struct for hold HTTP socket configuration. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00348">WiconnectTypes.h:348</a></div></div>
-<div class="ttc" id="group__api__core__macro_html_gaa1dbeca66111f3a22d0ee6b122d69270"><div class="ttname"><a href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a></div><div class="ttdeci">#define PIN_NC</div><div class="ttdoc">Default value for a pin, Not connected. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00117">sdk.h:117</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00078">WiconnectInterface.h:78</a></div></div>
+<div class="ttc" id="group__api__socket__udp_html_ga067fb0d662d8e27e3f5b561ded29a51a"><div class="ttname"><a href="group__api__socket__udp.html#ga067fb0d662d8e27e3f5b561ded29a51a">wiconnect::SocketInterface::udpListen</a></div><div class="ttdeci">WiconnectResult udpListen(WiconnectUdpServer &amp;udpServer, uint16_t listeningPort)</div><div class="ttdoc">Start a UDP server listening on the given port. </div></div>
+<div class="ttc" id="structwiconnect_1_1_http_socket_args_html"><div class="ttname"><a href="structwiconnect_1_1_http_socket_args.html">wiconnect::HttpSocketArgs</a></div><div class="ttdoc">Struct for hold HTTP socket configuration. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00364">WiconnectTypes.h:364</a></div></div>
 <div class="ttc" id="group__api__socket__http_html_gadf59ca0783b89ee32f205e33f1bd5517"><div class="ttname"><a href="group__api__socket__http.html#gadf59ca0783b89ee32f205e33f1bd5517">wiconnect::SocketInterface::httpGetStatus</a></div><div class="ttdeci">WiconnectResult httpGetStatus(WiconnectSocket &amp;socket, uint32_t *statusCodePtr)</div><div class="ttdoc">Get the HTTP status code from HTTP request. </div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
--- a/doc/html/_socket_irq_handler_map_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_socket_irq_handler_map_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -105,7 +105,7 @@
 <div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#pragma once</span></div>
 <div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
 <div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;Wiconnect.h&quot;</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;types/PinIrqHandler.h&quot;</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;PinIrqHandler.h&quot;</span></div>
 <div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div>
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="keyword">namespace </span>wiconnect</div>
 <div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;{</div>
@@ -197,12 +197,12 @@
 <div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div>
 <div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div>
 <div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;}</div>
-<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00159">WiconnectTypes.h:159</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_callback_html"><div class="ttname"><a href="classwiconnect_1_1_callback.html">wiconnect::Callback</a></div><div class="ttdoc">Generic callback function. </div><div class="ttdef"><b>Definition:</b> <a href="_callback_8h_source.html#l00049">Callback.h:49</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05ab9123e9628c3156f34c44913a72b4195"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab9123e9628c3156f34c44913a72b4195">wiconnect::WICONNECT_NOT_FOUND</a></div><div class="ttdoc">Not found. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00181">WiconnectTypes.h:181</a></div></div>
-<div class="ttc" id="group__api__core__types_html_ga1cf4dfa71da0b0dc3dc707dacf56cc9c"><div class="ttname"><a href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">wiconnect::Pin</a></div><div class="ttdeci">PinName Pin</div><div class="ttdoc">Pin name on HOST. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00123">sdk.h:123</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a5d9162280a5269a34245bf53c87401a4"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5d9162280a5269a34245bf53c87401a4">wiconnect::WICONNECT_DUPLICATE</a></div><div class="ttdoc">Duplicate value. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00180">WiconnectTypes.h:180</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7">wiconnect::WICONNECT_SUCCESS</a></div><div class="ttdoc">Command successfully completed. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00165">WiconnectTypes.h:165</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05ab9123e9628c3156f34c44913a72b4195"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab9123e9628c3156f34c44913a72b4195">wiconnect::WICONNECT_NOT_FOUND</a></div><div class="ttdoc">Not found. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00188">WiconnectTypes.h:188</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga1cf4dfa71da0b0dc3dc707dacf56cc9c"><div class="ttname"><a href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">wiconnect::Pin</a></div><div class="ttdeci">PinName Pin</div><div class="ttdoc">Pin name on HOST. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00134">sdk.h:134</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a5d9162280a5269a34245bf53c87401a4"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5d9162280a5269a34245bf53c87401a4">wiconnect::WICONNECT_DUPLICATE</a></div><div class="ttdoc">Duplicate value. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00187">WiconnectTypes.h:187</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7">wiconnect::WICONNECT_SUCCESS</a></div><div class="ttdoc">Command successfully completed. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00172">WiconnectTypes.h:172</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/_string_util_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_string_util_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -379,114 +379,124 @@
 <div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;        <span class="keywordflow">return</span> result;</div>
 <div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;    }</div>
 <div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;    <span class="comment">/*************************************************************************************************/</span></div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> strToUint16(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, uint16_t *uint16Ptr)</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    {</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;        intmax_t r;</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;        <span class="keywordtype">bool</span> result = StringUtil::parseInt(str, &amp;r, 0, USHRT_MAX);</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;        *uint16Ptr = (uint16_t)r;</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;        <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;    }</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;    <span class="comment">/*************************************************************************************************/</span></div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> strToInt32(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, int32_t *int32Ptr)</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;    {</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;        intmax_t r;</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;        <span class="keywordtype">bool</span> result = StringUtil::parseInt(str, &amp;r, INT_MIN, INT_MAX);</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;        *int32Ptr = (int32_t)r;</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;        <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;    }</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    <span class="comment">/*************************************************************************************************/</span></div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;    <span class="comment">// uint32 hex string to uint32</span></div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> strHexToUint32(<span class="keyword">const</span> <span class="keywordtype">char</span> *strHex, uint32_t *uint32Ptr)</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;    <span class="comment">/*************************************************************************************************/</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> strToUint16(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, uint16_t *uint16Ptr)</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    {</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;        intmax_t r;</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;        <span class="keywordtype">bool</span> result = StringUtil::parseInt(str, &amp;r, 0, USHRT_MAX);</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;        *uint16Ptr = (uint16_t)r;</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;        <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;    }</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;    <span class="comment">/*************************************************************************************************/</span></div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> strToUint8(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, uint8_t *uint8Ptr)</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;    {</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;        intmax_t r;</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;        <span class="keywordtype">bool</span> result = StringUtil::parseInt(str, &amp;r, 0, UCHAR_MAX);</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;        *uint8Ptr = (uint8_t)r;</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;        <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;    }</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;    <span class="comment">/*************************************************************************************************/</span></div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> strToInt32(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, int32_t *int32Ptr)</div>
 <div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    {</div>
 <div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;        intmax_t r;</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;        <span class="keywordtype">bool</span> result = StringUtil::parseHex(strHex, &amp;r, 0, UINT_MAX);</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;        *uint32Ptr = (uint32_t)r;</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;        <span class="keywordtype">bool</span> result = StringUtil::parseInt(str, &amp;r, INT_MIN, INT_MAX);</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;        *int32Ptr = (int32_t)r;</div>
 <div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;        <span class="keywordflow">return</span> result;</div>
 <div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    }</div>
 <div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;</div>
 <div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    <span class="comment">/*************************************************************************************************/</span></div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">char</span> *strtok_r(<span class="keywordtype">char</span> *str, <span class="keyword">const</span> <span class="keywordtype">char</span> *delim, <span class="keywordtype">char</span> **nextp)</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;    {</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;        <span class="keywordtype">char</span> *ret;</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;        <span class="keywordflow">if</span> (str == NULL)</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;        {</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;            str = *nextp;</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;        }</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    <span class="comment">// uint32 hex string to uint32</span></div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> strHexToUint32(<span class="keyword">const</span> <span class="keywordtype">char</span> *strHex, uint32_t *uint32Ptr)</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;    {</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;        intmax_t r;</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;        <span class="keywordtype">bool</span> result = StringUtil::parseHex(strHex, &amp;r, 0, UINT_MAX);</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;        *uint32Ptr = (uint32_t)r;</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;        <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;    }</div>
 <div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;        str += strspn(str, delim);</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;        <span class="keywordflow">if</span> (*str == <span class="charliteral">&#39;\0&#39;</span>)</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;        {</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;            <span class="keywordflow">return</span> NULL;</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;        }</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;        ret = str;</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;        str += strcspn(str, delim);</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;        <span class="keywordflow">if</span> (*str)</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;        {</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;            *str++ = <span class="charliteral">&#39;\0&#39;</span>;</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;        }</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;        *nextp = str;</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;        <span class="keywordflow">return</span> ret;</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;    }</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;    <span class="comment">/*************************************************************************************************/</span></div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">char</span> *strtok_r(<span class="keywordtype">char</span> *str, <span class="keyword">const</span> <span class="keywordtype">char</span> *delim, <span class="keywordtype">char</span> **nextp)</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;    {</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;        <span class="keywordtype">char</span> *ret;</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;        <span class="keywordflow">if</span> (str == NULL)</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;        {</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;            str = *nextp;</div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;        }</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;        str += strspn(str, delim);</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;        <span class="keywordflow">if</span> (*str == <span class="charliteral">&#39;\0&#39;</span>)</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;        {</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;            <span class="keywordflow">return</span> NULL;</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;        }</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;        ret = str;</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;        str += strcspn(str, delim);</div>
 <div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;    <span class="comment">/*************************************************************************************************/</span></div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">int</span> strncasecmp(<span class="keyword">const</span> <span class="keywordtype">char</span> *s1, <span class="keyword">const</span> <span class="keywordtype">char</span> *s2, <span class="keywordtype">int</span> n)</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;    {</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;        <span class="keywordflow">if</span> (n == 0)</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;            <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;        <span class="keywordflow">while</span> (n-- != 0 &amp;&amp; tolower(*s1) == tolower(*s2))</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;        {</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;            <span class="keywordflow">if</span> (n == 0 || *s1 == <span class="charliteral">&#39;\0&#39;</span> || *s2 == <span class="charliteral">&#39;\0&#39;</span>)</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;                <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;            s1++;</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;            s2++;</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;        }</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;        <span class="keywordflow">return</span> tolower(*(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *) s1) - tolower(*(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *) s2);</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;    }</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;    <span class="comment">/*************************************************************************************************/</span></div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">int</span> strcasecmp(<span class="keyword">const</span> <span class="keywordtype">char</span> *s1, <span class="keyword">const</span> <span class="keywordtype">char</span> *s2)</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;    {</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;        <span class="keyword">register</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *p1 = (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *) s1;</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;        <span class="keyword">register</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *p2 = (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *) s2;</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;        <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c1, c2;</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;        <span class="keywordflow">if</span> (*str)</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;        {</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;            *str++ = <span class="charliteral">&#39;\0&#39;</span>;</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;        }</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;        *nextp = str;</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;        <span class="keywordflow">return</span> ret;</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    }</div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;    <span class="comment">/*************************************************************************************************/</span></div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">int</span> strncasecmp(<span class="keyword">const</span> <span class="keywordtype">char</span> *s1, <span class="keyword">const</span> <span class="keywordtype">char</span> *s2, <span class="keywordtype">int</span> n)</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;    {</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;        <span class="keywordflow">if</span> (n == 0)</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;            <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;        <span class="keywordflow">while</span> (n-- != 0 &amp;&amp; tolower(*s1) == tolower(*s2))</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;        {</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;            <span class="keywordflow">if</span> (n == 0 || *s1 == <span class="charliteral">&#39;\0&#39;</span> || *s2 == <span class="charliteral">&#39;\0&#39;</span>)</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;                <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;            s1++;</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;            s2++;</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;        }</div>
 <div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;        <span class="keywordflow">if</span> (p1 == p2)</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;            <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;        <span class="keywordflow">return</span> tolower(*(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *) s1) - tolower(*(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *) s2);</div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;    }</div>
 <div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;        <span class="keywordflow">do</span></div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;        {</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;            c1 = tolower (*p1);</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;            c2 = tolower (*p2);</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;            <span class="keywordflow">if</span> (c1 == <span class="charliteral">&#39;\0&#39;</span>)</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;                <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;            ++p1;</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;            ++p2;</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;        }</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;        <span class="keywordflow">while</span> (c1 == c2);</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;        <span class="keywordflow">if</span> (UCHAR_MAX &lt;= INT_MAX)</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;            <span class="keywordflow">return</span> c1 - c2;</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;        <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;            <span class="comment">/* On machines where &#39;char&#39; and &#39;int&#39; are types of the same size, the</span></div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;<span class="comment">               difference of two &#39;unsigned char&#39; values - including the sign bit -</span></div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;<span class="comment">               doesn&#39;t fit in an &#39;int&#39;.  */</span></div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;            <span class="keywordflow">return</span> (c1 &gt; c2 ? 1 : c1 &lt; c2 ? -1 : 0);</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;    }</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;};</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;    <span class="comment">/*************************************************************************************************/</span></div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">int</span> strcasecmp(<span class="keyword">const</span> <span class="keywordtype">char</span> *s1, <span class="keyword">const</span> <span class="keywordtype">char</span> *s2)</div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;    {</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;        <span class="keyword">register</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *p1 = (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *) s1;</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;        <span class="keyword">register</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *p2 = (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *) s2;</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;        <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c1, c2;</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;        <span class="keywordflow">if</span> (p1 == p2)</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;            <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;        <span class="keywordflow">do</span></div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;        {</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;            c1 = tolower (*p1);</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;            c2 = tolower (*p2);</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;            <span class="keywordflow">if</span> (c1 == <span class="charliteral">&#39;\0&#39;</span>)</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;                <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;            ++p1;</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;            ++p2;</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;        }</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;        <span class="keywordflow">while</span> (c1 == c2);</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;        <span class="keywordflow">if</span> (UCHAR_MAX &lt;= INT_MAX)</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;            <span class="keywordflow">return</span> c1 - c2;</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;        <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;            <span class="comment">/* On machines where &#39;char&#39; and &#39;int&#39; are types of the same size, the</span></div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;<span class="comment">               difference of two &#39;unsigned char&#39; values - including the sign bit -</span></div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;<span class="comment">               doesn&#39;t fit in an &#39;int&#39;.  */</span></div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;            <span class="keywordflow">return</span> (c1 &gt; c2 ? 1 : c1 &lt; c2 ? -1 : 0);</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;    }</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;};</div>
 <div class="ttc" id="class_string_util_html"><div class="ttname"><a href="class_string_util.html">StringUtil</a></div><div class="ttdef"><b>Definition:</b> <a href="_string_util_8h_source.html#l00045">StringUtil.h:45</a></div></div>
 <div class="ttc" id="group__api__core__macro_html_ga77baa56c8d3584b953f0a2626e6844ad"><div class="ttname"><a href="group__api__core__macro.html#ga77baa56c8d3584b953f0a2626e6844ad">ARRAY_COUNT</a></div><div class="ttdeci">#define ARRAY_COUNT(x)</div><div class="ttdoc">Return number of elements in static array x. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00084">WiconnectTypes.h:84</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
--- a/doc/html/_timeout_timer_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_timeout_timer_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -115,18 +115,19 @@
 <div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div>
 <div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    <span class="keywordtype">void</span> reset(<span class="keywordtype">void</span>);</div>
 <div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    uint32_t remainingMs(uint32_t timeoutMs);</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    uint32_t readUs();</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <a class="code" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> remainingMs(<a class="code" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs);</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <a class="code" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> readMs();</div>
 <div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <span class="keywordtype">bool</span> timedOut(uint32_t timeoutMs);</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <span class="keywordtype">bool</span> timedOut(<a class="code" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs);</div>
 <div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div>
 <div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    uint32_t _start;</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="keyword">volatile</span> <a class="code" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> _start;</div>
 <div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div>
 <div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;};</div>
 <div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div>
 <div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div>
 <div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;}</div>
+<div class="ttc" id="namespacewiconnect_html_a0c27570b2913afc6339821df7c934810"><div class="ttname"><a href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">wiconnect::TimerTimeout</a></div><div class="ttdeci">unsigned long TimerTimeout</div><div class="ttdoc">Timeout type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00212">WiconnectTypes.h:212</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/_wiconnect_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_wiconnect_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -104,7 +104,7 @@
 <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
 <div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#pragma once</span></div>
 <div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;WiconnectInterface.h&quot;</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;api/WiconnectInterface.h&quot;</span></div>
 <div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div>
 <div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div>
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="keyword">using namespace </span>wiconnect;</div>
--- a/doc/html/_wiconnect_file_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_wiconnect_file_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -158,13 +158,13 @@
 <div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;};</div>
 <div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div>
 <div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;}</div>
-<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00159">WiconnectTypes.h:159</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_wiconnect_file_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect_file.html">wiconnect::WiconnectFile</a></div><div class="ttdoc">WiConnect WiFi module file object. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_file_8h_source.html#l00044">WiconnectFile.h:44</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_file_list_html"><div class="ttname"><a href="classwiconnect_1_1_file_list.html">wiconnect::FileList</a></div><div class="ttdoc">WiConnect WiFi module file listing. </div><div class="ttdef"><b>Definition:</b> <a href="_file_list_8h_source.html#l00044">FileList.h:44</a></div></div>
-<div class="ttc" id="group__api__file__types_html_ga9919a4237eea2b0d1f27c16d64e62c63"><div class="ttname"><a href="group__api__file__types.html#ga9919a4237eea2b0d1f27c16d64e62c63">wiconnect::FileType</a></div><div class="ttdeci">FileType</div><div class="ttdoc">File type type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00383">WiconnectTypes.h:383</a></div></div>
-<div class="ttc" id="group__api__file__types_html_gafbe48908f5c190c3b0f272d3016e609e"><div class="ttname"><a href="group__api__file__types.html#gafbe48908f5c190c3b0f272d3016e609e">wiconnect::FileFlags</a></div><div class="ttdeci">FileFlags</div><div class="ttdoc">File flags type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00364">WiconnectTypes.h:364</a></div></div>
-<div class="ttc" id="group__api__core__macro_html_ga8bc3b8d2e7e7c9d10b23e0a15cd4507a"><div class="ttname"><a href="group__api__core__macro.html#ga8bc3b8d2e7e7c9d10b23e0a15cd4507a">WICONNECT_MAX_FILENAME_SIZE</a></div><div class="ttdeci">#define WICONNECT_MAX_FILENAME_SIZE</div><div class="ttdoc">The maximum Wiconnect Module flash filesystem filename length. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00126">WiconnectTypes.h:126</a></div></div>
-<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00074">WiconnectInterface.h:74</a></div></div>
+<div class="ttc" id="group__api__file__types_html_ga9919a4237eea2b0d1f27c16d64e62c63"><div class="ttname"><a href="group__api__file__types.html#ga9919a4237eea2b0d1f27c16d64e62c63">wiconnect::FileType</a></div><div class="ttdeci">FileType</div><div class="ttdoc">File type type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00399">WiconnectTypes.h:399</a></div></div>
+<div class="ttc" id="group__api__file__types_html_gafbe48908f5c190c3b0f272d3016e609e"><div class="ttname"><a href="group__api__file__types.html#gafbe48908f5c190c3b0f272d3016e609e">wiconnect::FileFlags</a></div><div class="ttdeci">FileFlags</div><div class="ttdoc">File flags type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00380">WiconnectTypes.h:380</a></div></div>
+<div class="ttc" id="group__api__core__macro_html_ga8bc3b8d2e7e7c9d10b23e0a15cd4507a"><div class="ttname"><a href="group__api__core__macro.html#ga8bc3b8d2e7e7c9d10b23e0a15cd4507a">WICONNECT_MAX_FILENAME_SIZE</a></div><div class="ttdeci">#define WICONNECT_MAX_FILENAME_SIZE</div><div class="ttdoc">The maximum Wiconnect Module flash filesystem filename length. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00133">WiconnectTypes.h:133</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00078">WiconnectInterface.h:78</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_file_interface_html"><div class="ttname"><a href="classwiconnect_1_1_file_interface.html">wiconnect::FileInterface</a></div><div class="ttdoc">The provides an interface for creating TCP/UDP/TLS/HTTP client sockets. A client socket connects to a...</div><div class="ttdef"><b>Definition:</b> <a href="_file_interface_8h_source.html#l00068">FileInterface.h:68</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
--- a/doc/html/_wiconnect_interface_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_wiconnect_interface_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -110,262 +110,285 @@
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &quot;types/LogFunc.h&quot;</span></div>
 <div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &quot;types/ReaderFunc.h&quot;</span></div>
 <div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &quot;types/Callback.h&quot;</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &quot;types/QueuedCommand.h&quot;</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &quot;types/CommandQueue.h&quot;</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &quot;types/TimeoutTimer.h&quot;</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &quot;types/PeriodicTimer.h&quot;</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &quot;types/Gpio.h&quot;</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &quot;types/WiconnectSerial.h&quot;</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#include &quot;NetworkInterface.h&quot;</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#include &quot;SocketInterface.h&quot;</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#include &quot;FileInterface.h&quot;</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#ifdef WICONNECT_ENABLE_MALLOC</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#define WICONNECT_MALLOC_ARGS , void* (*malloc_)(size_t) = WICONNECT_DEFAULT_MALLOC, void (*free_)(void*) = WICONNECT_DEFAULT_FREE</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#define WICONNECT_MALLOC_ARGS</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="keyword">namespace </span>wiconnect {</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;</div>
-<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classwiconnect_1_1_wiconnect.html">   74</a></span>&#160;<span class="keyword">class </span><a class="code" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a> : <span class="keyword">public</span> <a class="code" href="classwiconnect_1_1_network_interface.html">NetworkInterface</a>,</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;                  <span class="keyword">public</span> <a class="code" href="classwiconnect_1_1_socket_interface.html">SocketInterface</a>,</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;                  <span class="keyword">public</span> <a class="code" href="classwiconnect_1_1_file_interface.html">FileInterface</a></div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;{</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <a class="code" href="classwiconnect_1_1_wiconnect.html#a285510a2cba5341db387101ac75a4389">Wiconnect</a>(<span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_serial_config.html">SerialConfig</a> &amp;serialConfig, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> <a class="code" href="group__api__core__misc.html#gabec1504eb7f486085dad82c4a94310e3">reset</a> = <a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> wake = <a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>, <span class="keywordtype">bool</span> nonBlocking = <a class="code" href="group__api__core__macro.html#ga347d0e1228e8174563c6bcf48de18401">WICONNECT_DEFAULT_NONBLOCKING</a> WICONNECT_MALLOC_ARGS);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <a class="code" href="classwiconnect_1_1_wiconnect.html#a285510a2cba5341db387101ac75a4389">Wiconnect</a>(<span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_serial_config.html">SerialConfig</a> &amp;serialConfig, <span class="keywordtype">int</span> internalBufferSize, <span class="keywordtype">void</span> *internalBuffer = NULL, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> <a class="code" href="group__api__core__misc.html#gabec1504eb7f486085dad82c4a94310e3">reset</a> = <a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> wake = <a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>, <span class="keywordtype">bool</span> nonBlocking = <a class="code" href="group__api__core__macro.html#ga347d0e1228e8174563c6bcf48de18401">WICONNECT_DEFAULT_NONBLOCKING</a> WICONNECT_MALLOC_ARGS);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    ~<a class="code" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a>();</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="keyword">static</span> <a class="code" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a>* <a class="code" href="group__api__core__misc.html#ga8dcd3ac87afd58b225abb068e835d06e">getInstance</a>();</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__misc.html#gae2e3add2e60543d0e3340ed7a9e034ad">init</a>(<span class="keywordtype">bool</span> bringNetworkUp=<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="group__api__core__misc.html#ga9d6c981a54c6ab964b469e4f247142d6">deinit</a>();</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="group__api__core__misc.html#gab00c7110984f6d6187241d17a4a431ff">isInitialized</a>();</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__misc.html#gabec1504eb7f486085dad82c4a94310e3">reset</a>();</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__misc.html#gad552c8f23dd0a0e8844ee1fc4d9358e5">wakeup</a>();</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="group__api__core__misc.html#ga96ac50d85d8ab376755d7d5325de1713">flush</a>(<span class="keywordtype">int</span> <a class="code" href="group__api__core__macro.html#ga596d1da2fb23f4e748c83d64a47e10b3">delayMs</a> = 500);</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__misc.html#ga4fc195839bc6c6bd0091074cbdc94c4f">getVersion</a>(<span class="keywordtype">char</span> *versionBuffer = NULL, <span class="keywordtype">int</span> versionBufferSize = 0, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback = <a class="code" href="classwiconnect_1_1_callback.html">Callback</a>());</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__misc.html#gad447fe3341539eb9b276d269645bb632">updateFirmware</a>(<span class="keywordtype">bool</span> forced = <span class="keyword">false</span>, <span class="keyword">const</span> <span class="keywordtype">char</span> *versionStr = NULL, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback = <a class="code" href="classwiconnect_1_1_callback.html">Callback</a>());</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">sendCommand</a>(<span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback, <span class="keywordtype">char</span> *responseBuffer, <span class="keywordtype">int</span> responseBufferLen,</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;                                <span class="keywordtype">int</span> timeoutMs, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, <span class="keywordtype">void</span> *user, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, va_list vaList);</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">sendCommand</a>(<span class="keywordtype">char</span> *responseBuffer, <span class="keywordtype">int</span> responseBufferLen, <span class="keywordtype">int</span> timeoutMs, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader,</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;                                <span class="keywordtype">void</span> *user, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, va_list vaList);</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">sendCommand</a>(<span class="keywordtype">char</span> *responseBuffer, <span class="keywordtype">int</span> responseBufferLen, <span class="keywordtype">int</span> timeoutMs, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader,</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;                                <span class="keywordtype">void</span> *user, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">sendCommand</a>( <span class="keywordtype">int</span> timeoutMs, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, <span class="keywordtype">void</span> *user, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">sendCommand</a>(<span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, <span class="keywordtype">void</span> *user, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">sendCommand</a>(<span class="keywordtype">char</span> *responseBuffer, <span class="keywordtype">int</span> responseBufferLen,  <span class="keywordtype">int</span> timeoutMs, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">sendCommand</a>(<span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback, <span class="keywordtype">char</span> *responseBuffer, <span class="keywordtype">int</span> responseBufferLen, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">sendCommand</a>(<span class="keywordtype">char</span> *responseBuffer, <span class="keywordtype">int</span> responseBufferLen, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">sendCommand</a>(<span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">sendCommand</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">sendCommand</a>(<span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback, <span class="keywordtype">int</span> timeoutMs, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">sendCommand</a>(<span class="keywordtype">int</span> timeoutMs, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">sendCommand</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, va_list vaList);</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#gaf48c1ec0b92af2619ab846baaaa471cd">checkCurrentCommand</a>();</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="group__api__core__send__command.html#ga4a9bd29de1d5c496fbcc28ecfa51e7c0">stopCurrentCommand</a>();</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__api__core__misc.html#gad8069679fabb52d44647d27703f1a09a">getLastCommandResponseCodeStr</a>();</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;    uint16_t <a class="code" href="group__api__core__misc.html#ga600215de23210071c42996d04390071e">getLastCommandResponseLength</a>();</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;    <span class="keywordtype">char</span>* <a class="code" href="group__api__core__misc.html#ga27b5d6b8207e4ef0f73875606d628da8">getResponseBuffer</a>();</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__misc.html#gac40b2964149e60245ff3cac6adbcd565">responseToUint32</a>(uint32_t *uint32Ptr);</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__misc.html#gada79343aece515e00f9be4045d3858a0">responseToInt32</a>(int32_t *int32Ptr);</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__settings.html#gace51a2841415a53f54fcce336182f0ec">setSetting</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *settingStr, uint32_t value);</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__settings.html#gace51a2841415a53f54fcce336182f0ec">setSetting</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *settingStr, <span class="keyword">const</span> <span class="keywordtype">char</span> *value);</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__settings.html#ga16d5022d1fbd784fe0fd90a56911c5bc">getSetting</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *settingStr, uint32_t *valuePtr);</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__settings.html#ga16d5022d1fbd784fe0fd90a56911c5bc">getSetting</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *settingStr, <span class="keywordtype">char</span> **valuePtr);</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__settings.html#ga16d5022d1fbd784fe0fd90a56911c5bc">getSetting</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *settingStr, <span class="keywordtype">char</span> *valueBuffer, uint16_t valueBufferLen);</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="group__api__core__settings.html#gaaaf8be221699870053ad98911b066a32">setCommandDefaultTimeout</a>(<span class="keywordtype">int</span> timeoutMs);</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;    <span class="keywordtype">int</span> <a class="code" href="group__api__core__settings.html#gad5d31980a7b1e143f00b0117468c1a7e">getCommandDefaultTimeout</a>();</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &quot;types/TimeoutTimer.h&quot;</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &quot;types/PeriodicTimer.h&quot;</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &quot;types/Gpio.h&quot;</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &quot;types/WiconnectSerial.h&quot;</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#ifdef WICONNECT_ASYNC_TIMER_ENABLED</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &quot;types/QueuedCommand.h&quot;</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#include &quot;types/CommandQueue.h&quot;</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#include &quot;NetworkInterface.h&quot;</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#include &quot;SocketInterface.h&quot;</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#include &quot;FileInterface.h&quot;</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#include &quot;GhmInterface.h&quot;</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#ifdef WICONNECT_ENABLE_MALLOC</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">#define WICONNECT_MALLOC_ARGS , void* (*malloc_)(size_t) = WICONNECT_DEFAULT_MALLOC, void (*free_)(void*) = WICONNECT_DEFAULT_FREE</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="preprocessor">#define WICONNECT_MALLOC_ARGS</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="keyword">namespace </span>wiconnect {</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classwiconnect_1_1_wiconnect.html">   78</a></span>&#160;<span class="keyword">class </span><a class="code" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a> : <span class="keyword">public</span> <a class="code" href="classwiconnect_1_1_network_interface.html">NetworkInterface</a>,</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;                  <span class="keyword">public</span> <a class="code" href="classwiconnect_1_1_socket_interface.html">SocketInterface</a>,</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;                  <span class="keyword">public</span> <a class="code" href="classwiconnect_1_1_file_interface.html">FileInterface</a>,</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;                  <span class="keyword">public</span> <a class="code" href="classwiconnect_1_1_ghm_interface.html">GhmInterface</a></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;{</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <a class="code" href="classwiconnect_1_1_wiconnect.html#a285510a2cba5341db387101ac75a4389">Wiconnect</a>(<span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_serial_config.html">SerialConfig</a> &amp;serialConfig, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> <a class="code" href="group__api__core__misc.html#gabec1504eb7f486085dad82c4a94310e3">reset</a> = <a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> wake = <a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>, <span class="keywordtype">bool</span> nonBlocking = <a class="code" href="group__api__core__macro.html#ga347d0e1228e8174563c6bcf48de18401">WICONNECT_DEFAULT_NONBLOCKING</a> WICONNECT_MALLOC_ARGS);</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <a class="code" href="classwiconnect_1_1_wiconnect.html#a285510a2cba5341db387101ac75a4389">Wiconnect</a>(<span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_serial_config.html">SerialConfig</a> &amp;serialConfig, <span class="keywordtype">int</span> internalBufferSize, <span class="keywordtype">void</span> *internalBuffer = NULL, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> <a class="code" href="group__api__core__misc.html#gabec1504eb7f486085dad82c4a94310e3">reset</a> = <a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> wake = <a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>, <span class="keywordtype">bool</span> nonBlocking = <a class="code" href="group__api__core__macro.html#ga347d0e1228e8174563c6bcf48de18401">WICONNECT_DEFAULT_NONBLOCKING</a> WICONNECT_MALLOC_ARGS);</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    ~<a class="code" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a>();</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    <span class="keyword">static</span> <a class="code" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a>* <a class="code" href="group__api__core__misc.html#ga8dcd3ac87afd58b225abb068e835d06e">getInstance</a>();</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__misc.html#gae2e3add2e60543d0e3340ed7a9e034ad">init</a>(<span class="keywordtype">bool</span> bringNetworkUp=<span class="keyword">false</span>);</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="group__api__core__misc.html#ga9d6c981a54c6ab964b469e4f247142d6">deinit</a>();</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="group__api__core__misc.html#gab00c7110984f6d6187241d17a4a431ff">isInitialized</a>();</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__misc.html#gabec1504eb7f486085dad82c4a94310e3">reset</a>();</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__misc.html#gad552c8f23dd0a0e8844ee1fc4d9358e5">wakeup</a>();</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="group__api__core__misc.html#ga96ac50d85d8ab376755d7d5325de1713">flush</a>(<span class="keywordtype">int</span> <a class="code" href="group__api__core__macro.html#ga596d1da2fb23f4e748c83d64a47e10b3">delayMs</a> = 500);</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__misc.html#ga4fc195839bc6c6bd0091074cbdc94c4f">getVersion</a>(<span class="keywordtype">char</span> *versionBuffer = NULL, <span class="keywordtype">int</span> versionBufferSize = 0, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback = <a class="code" href="classwiconnect_1_1_callback.html">Callback</a>());</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__misc.html#gad447fe3341539eb9b276d269645bb632">updateFirmware</a>(<span class="keywordtype">bool</span> forced = <span class="keyword">false</span>, <span class="keyword">const</span> <span class="keywordtype">char</span> *versionStr = NULL, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback = <a class="code" href="classwiconnect_1_1_callback.html">Callback</a>());</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">sendCommand</a>(<span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback, <span class="keywordtype">char</span> *responseBuffer, <span class="keywordtype">int</span> responseBufferLen,</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;                               <a class="code" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, <span class="keywordtype">void</span> *user, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, va_list vaList);</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">sendCommand</a>(<span class="keywordtype">char</span> *responseBuffer, <span class="keywordtype">int</span> responseBufferLen, <a class="code" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader,</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;                                <span class="keywordtype">void</span> *user, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, va_list vaList);</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">sendCommand</a>(<span class="keywordtype">char</span> *responseBuffer, <span class="keywordtype">int</span> responseBufferLen, <a class="code" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader,</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;                                <span class="keywordtype">void</span> *user, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">sendCommand</a>(<a class="code" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, <span class="keywordtype">void</span> *user, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">sendCommand</a>(<span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, <span class="keywordtype">void</span> *user, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">sendCommand</a>(<span class="keywordtype">char</span> *responseBuffer, <span class="keywordtype">int</span> responseBufferLen, <a class="code" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">sendCommand</a>(<span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback, <span class="keywordtype">char</span> *responseBuffer, <span class="keywordtype">int</span> responseBufferLen, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">sendCommand</a>(<span class="keywordtype">char</span> *responseBuffer, <span class="keywordtype">int</span> responseBufferLen, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">sendCommand</a>(<span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">sendCommand</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">sendCommand</a>(<span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback, <a class="code" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">sendCommand</a>(<a class="code" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, <span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, ...);</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;</div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">sendCommand</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *cmd, va_list vaList);</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__send__command.html#gaf48c1ec0b92af2619ab846baaaa471cd">checkCurrentCommand</a>();</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="group__api__core__send__command.html#ga4a9bd29de1d5c496fbcc28ecfa51e7c0">stopCurrentCommand</a>();</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__api__core__misc.html#gad8069679fabb52d44647d27703f1a09a">getLastCommandResponseCodeStr</a>();</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;    uint16_t <a class="code" href="group__api__core__misc.html#ga600215de23210071c42996d04390071e">getLastCommandResponseLength</a>();</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;    <span class="keywordtype">char</span>* <a class="code" href="group__api__core__misc.html#ga27b5d6b8207e4ef0f73875606d628da8">getResponseBuffer</a>();</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__misc.html#gac40b2964149e60245ff3cac6adbcd565">responseToUint32</a>(uint32_t *uint32Ptr);</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__misc.html#gada79343aece515e00f9be4045d3858a0">responseToInt32</a>(int32_t *int32Ptr);</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;</div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__settings.html#gace51a2841415a53f54fcce336182f0ec">setSetting</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *settingStr, uint32_t value);</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;</div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__settings.html#gace51a2841415a53f54fcce336182f0ec">setSetting</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *settingStr, <span class="keyword">const</span> <span class="keywordtype">char</span> *value);</div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;</div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__settings.html#ga16d5022d1fbd784fe0fd90a56911c5bc">getSetting</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *settingStr, uint32_t *valuePtr);</div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__settings.html#ga16d5022d1fbd784fe0fd90a56911c5bc">getSetting</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *settingStr, <span class="keywordtype">char</span> **valuePtr);</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;</div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <a class="code" href="group__api__core__settings.html#ga16d5022d1fbd784fe0fd90a56911c5bc">getSetting</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *settingStr, <span class="keywordtype">char</span> *valueBuffer, uint16_t valueBufferLen);</div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;</div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;</div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="group__api__core__settings.html#ga851795595a422a14249b7ea9f0038c4c">setBlockingEnabled</a>(<span class="keywordtype">bool</span> blockingEnabled);</div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="group__api__core__settings.html#gaf6115968c49c128717cacd2f06b883ad">getBlockingEnabled</a>(<span class="keywordtype">void</span>);</div>
 <div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="group__api__core__settings.html#ga180b043ec83c53b5bf6b9ef2b187d08d">setPinToGpioMapper</a>(<a class="code" href="namespacewiconnect.html#aadd4d5e6774e21f382c20b594a644470">PinToGpioMapper</a> mapper);</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="group__api__core__settings.html#ga75fb083451ee530a1c19e6a4c1be185e">setDebugLogger</a>(<a class="code" href="classwiconnect_1_1_log_func.html">LogFunc</a> logFunc);</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="group__api__core__settings.html#ga273f67fede26be4a3d5d909c5cf8c7e0">setAssertLogger</a>(<a class="code" href="classwiconnect_1_1_log_func.html">LogFunc</a> assertLogFunc);</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;</div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="group__api__core__settings.html#gacae50138f9388a66496408f9c2bf6a6f">setCommandDefaultTimeout</a>(<a class="code" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs);</div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;</div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;    <a class="code" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> <a class="code" href="group__api__core__settings.html#gad8d98b8d2610f4ea564bede27e87857e">getCommandDefaultTimeout</a>();</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="group__api__core__settings.html#ga180b043ec83c53b5bf6b9ef2b187d08d">setPinToGpioMapper</a>(<a class="code" href="namespacewiconnect.html#aadd4d5e6774e21f382c20b594a644470">PinToGpioMapper</a> mapper);</div>
 <div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;<span class="preprocessor">#ifdef WICONNECT_ASYNC_TIMER_ENABLED</span></div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> enqueueCommand(<a class="code" href="classwiconnect_1_1_queued_command.html">QueuedCommand</a> *command, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;commandCompleteHandler = <a class="code" href="classwiconnect_1_1_callback.html">Callback</a>());</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;    <span class="keywordtype">void</span> setCommandProcessingPeriod(uint32_t periodMs);</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__conversion__util.html#gac96e2d2fca60cba12e7429626f9186be">getWiconnectResultStr</a>(<a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnectResult);</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;<span class="preprocessor">#ifdef WICONNECT_ENABLE_MALLOC</span></div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;    <span class="keywordtype">void</span>* (*_malloc)(size_t);</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;    void (*_free)(<span class="keywordtype">void</span> *);</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_queued_command.html">QueuedCommand</a>;</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span>WiconnectSerial;</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_scan_result.html">ScanResult</a>;</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_scan_result_list.html">ScanResultList</a>;</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a>;</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_wiconnect_file.html">WiconnectFile</a>;</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;    wiconnect::WiconnectSerial serial;</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;    wiconnect::Gpio resetGpio;</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;    wiconnect::Gpio wakeGpio;</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;    <span class="keyword">volatile</span> <span class="keywordtype">bool</span> commandExecuting;</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;    <span class="keywordtype">bool</span> initialized;</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;    <span class="keywordtype">bool</span> nonBlocking;</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;    <a class="code" href="namespacewiconnect.html#aadd4d5e6774e21f382c20b594a644470">PinToGpioMapper</a> pinToGpioMapper;</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;    <span class="keywordtype">char</span> *internalBuffer;</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;    <span class="keywordtype">int</span> internalBufferSize;</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;    <span class="keywordtype">bool</span> internalBufferAlloc;</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;    uint8_t internalProcessingState;</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;    <span class="keywordtype">void</span> *currentCommandId;</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;    wiconnect::TimeoutTimer timeoutTimer;</div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;    <span class="keywordtype">int</span> defaultTimeoutMs;</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;    uint8_t commandHeaderBuffer[32];</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;    <span class="keywordtype">char</span> commandFormatBuffer[<a class="code" href="group__api__core__macro.html#ga2aa16118029ab13ab41514cb8eb93ba7">WICONNECT_MAX_CMD_SIZE</a>];</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;    uint8_t commandContext[96];</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;    <span class="keywordtype">void</span> prepare(<span class="keywordtype">void</span> *internalBuffer, <span class="keywordtype">int</span> internalBufferSize, <span class="keywordtype">bool</span> nonBlocking);</div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <span class="keyword">inline</span> receiveResponse();</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <span class="keyword">inline</span> receivePacket();</div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;    <span class="keywordtype">void</span> issueCommandCallback(<a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> result);</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;</div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;    <a class="code" href="classwiconnect_1_1_log_func.html">LogFunc</a> debugLogger;</div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;    <a class="code" href="classwiconnect_1_1_log_func.html">LogFunc</a> assertLogger;</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;    <span class="keywordtype">void</span> debugLog(<span class="keyword">const</span> <span class="keywordtype">char</span> *msg, ...);</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;<span class="preprocessor">#ifdef WICONNECT_ASYNC_TIMER_ENABLED</span></div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;    wiconnect::PeriodicTimer commandProcessorTimer;</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;    uint32_t commandProcessingPeriod;</div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;    CommandQueue commandQueue;</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;    <a class="code" href="classwiconnect_1_1_queued_command.html">wiconnect::QueuedCommand</a> *currentQueuedCommand;</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;    <span class="keywordtype">void</span> commandProcessingTimerHandler(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;    <span class="keywordtype">void</span> processNextQueuedCommand();</div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;    <span class="keywordtype">void</span> checkQueuedCommandTimeout();</div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;</div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_network_interface.html">NetworkInterface</a>;</div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_socket_interface.html">SocketInterface</a>;</div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_file_interface.html">FileInterface</a>;</div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;};</div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;</div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;}</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;</div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="group__api__core__settings.html#ga75fb083451ee530a1c19e6a4c1be185e">setDebugLogger</a>(<a class="code" href="classwiconnect_1_1_log_func.html">LogFunc</a> logFunc);</div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="group__api__core__settings.html#ga273f67fede26be4a3d5d909c5cf8c7e0">setAssertLogger</a>(<a class="code" href="classwiconnect_1_1_log_func.html">LogFunc</a> assertLogFunc);</div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;</div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;    <span class="comment">// ------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;</div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;<span class="preprocessor">#ifdef WICONNECT_ASYNC_TIMER_ENABLED</span></div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;</div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> enqueueCommand(<a class="code" href="classwiconnect_1_1_queued_command.html">QueuedCommand</a> *command, <span class="keyword">const</span> <a class="code" href="classwiconnect_1_1_callback.html">Callback</a> &amp;commandCompleteHandler = <a class="code" href="classwiconnect_1_1_callback.html">Callback</a>());</div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;</div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;    <span class="keywordtype">void</span> setCommandProcessingPeriod(uint32_t periodMs);</div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;</div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="group__conversion__util.html#gac96e2d2fca60cba12e7429626f9186be">getWiconnectResultStr</a>(<a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnectResult);</div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;<span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;</div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;<span class="preprocessor">#ifdef WICONNECT_ENABLE_MALLOC</span></div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;    <span class="keywordtype">void</span>* (*_malloc)(size_t);</div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;    void (*_free)(<span class="keywordtype">void</span> *);</div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_queued_command.html">QueuedCommand</a>;</div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span>WiconnectSerial;</div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_scan_result.html">ScanResult</a>;</div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;</div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;    wiconnect::WiconnectSerial serial;</div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;    wiconnect::Gpio resetGpio;</div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;    wiconnect::Gpio wakeGpio;</div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;</div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;    <span class="keyword">volatile</span> <span class="keywordtype">bool</span> commandExecuting;</div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;    <span class="keywordtype">bool</span> initialized;</div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;    <span class="keywordtype">bool</span> nonBlocking;</div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;</div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;    <a class="code" href="namespacewiconnect.html#aadd4d5e6774e21f382c20b594a644470">PinToGpioMapper</a> pinToGpioMapper;</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;</div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;    <span class="keywordtype">char</span> *internalBuffer;</div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;    <span class="keywordtype">int</span> internalBufferSize;</div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;    <span class="keywordtype">bool</span> internalBufferAlloc;</div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;    uint8_t internalProcessingState;</div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;    <span class="keywordtype">void</span> *currentCommandId;</div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;</div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;    wiconnect::TimeoutTimer timeoutTimer;</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;    <a class="code" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> defaultTimeoutMs;</div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;</div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;    uint8_t commandHeaderBuffer[32];</div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;    <span class="keywordtype">char</span> commandFormatBuffer[<a class="code" href="group__api__core__macro.html#ga2aa16118029ab13ab41514cb8eb93ba7">WICONNECT_MAX_CMD_SIZE</a>];</div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;    uint8_t commandContext[96];</div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;</div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;    <span class="keywordtype">void</span> prepare(<span class="keywordtype">void</span> *internalBuffer, <span class="keywordtype">int</span> internalBufferSize, <span class="keywordtype">bool</span> nonBlocking);</div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;    <span class="keywordtype">bool</span> configureModuleDataBus(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <span class="keyword">inline</span> receiveResponse();</div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> <span class="keyword">inline</span> receivePacket();</div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;    <span class="keywordtype">void</span> issueCommandCallback(<a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> result);</div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;</div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;<span class="preprocessor">#ifdef WICONNECT_ENABLE_DEBUGGING</span></div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;    <a class="code" href="classwiconnect_1_1_log_func.html">LogFunc</a> debugLogger;</div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;    <a class="code" href="classwiconnect_1_1_log_func.html">LogFunc</a> assertLogger;</div>
 <div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;<span class="preprocessor">#include &quot;sdkTypes.h&quot;</span></div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;    <span class="keywordtype">void</span> debugLog(<span class="keyword">const</span> <span class="keywordtype">char</span> *msg, ...);</div>
 <div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;</div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;<span class="preprocessor">#ifdef WICONNECT_ASYNC_TIMER_ENABLED</span></div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;    wiconnect::PeriodicTimer commandProcessorTimer;</div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;    uint32_t commandProcessingPeriod;</div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;    CommandQueue commandQueue;</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;    <a class="code" href="classwiconnect_1_1_queued_command.html">wiconnect::QueuedCommand</a> *currentQueuedCommand;</div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;</div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;    <span class="keywordtype">void</span> commandProcessingTimerHandler(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;    <span class="keywordtype">void</span> processNextQueuedCommand();</div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;    <span class="keywordtype">void</span> checkQueuedCommandTimeout();</div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;</div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_network_interface.html">NetworkInterface</a>;</div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_socket_interface.html">SocketInterface</a>;</div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_file_interface.html">FileInterface</a>;</div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_ghm_interface.html">GhmInterface</a>;</div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_ghm_message_list.html">GhmMessageList</a>;</div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_ghm_message.html">GhmMessage</a>;</div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_scan_result_list.html">ScanResultList</a>;</div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_wiconnect_file.html">WiconnectFile</a>;</div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a>;</div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_wiconnect_udp_server.html">WiconnectUdpServer</a>;</div>
+<div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;};</div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;</div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;}</div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;</div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;</div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;<span class="preprocessor">#include &quot;sdkTypes.h&quot;</span></div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;</div>
 <div class="ttc" id="group__conversion__util_html_gac96e2d2fca60cba12e7429626f9186be"><div class="ttname"><a href="group__conversion__util.html#gac96e2d2fca60cba12e7429626f9186be">wiconnect::Wiconnect::getWiconnectResultStr</a></div><div class="ttdeci">static const char * getWiconnectResultStr(WiconnectResult wiconnectResult)</div><div class="ttdoc">Converts a WiconnectResult to string representation. </div></div>
+<div class="ttc" id="classwiconnect_1_1_ghm_message_html"><div class="ttname"><a href="classwiconnect_1_1_ghm_message.html">wiconnect::GhmMessage</a></div><div class="ttdoc">Contains single entry from goHACK.me message listing. </div><div class="ttdef"><b>Definition:</b> <a href="_ghm_message_8h_source.html#l00046">GhmMessage.h:46</a></div></div>
 <div class="ttc" id="group__api__core__settings_html_ga273f67fede26be4a3d5d909c5cf8c7e0"><div class="ttname"><a href="group__api__core__settings.html#ga273f67fede26be4a3d5d909c5cf8c7e0">wiconnect::Wiconnect::setAssertLogger</a></div><div class="ttdeci">void setAssertLogger(LogFunc assertLogFunc)</div><div class="ttdoc">Sets callback used when Wiconnect Library hits and internal assertion. </div></div>
 <div class="ttc" id="group__api__core__misc_html_gad8069679fabb52d44647d27703f1a09a"><div class="ttname"><a href="group__api__core__misc.html#gad8069679fabb52d44647d27703f1a09a">wiconnect::Wiconnect::getLastCommandResponseCodeStr</a></div><div class="ttdeci">const char * getLastCommandResponseCodeStr()</div><div class="ttdoc">When the WiConnect WiFi module returns a response, it contains a response code in the header...</div></div>
-<div class="ttc" id="namespacewiconnect_html_aadd4d5e6774e21f382c20b594a644470"><div class="ttname"><a href="namespacewiconnect.html#aadd4d5e6774e21f382c20b594a644470">wiconnect::PinToGpioMapper</a></div><div class="ttdeci">int8_t(* PinToGpioMapper)(Pin pin)</div><div class="ttdoc">Function pointer for mapping from a host pin to a WiConnect Module GPIO. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00199">WiconnectTypes.h:199</a></div></div>
-<div class="ttc" id="classwiconnect_1_1_network_interface_html"><div class="ttname"><a href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></div><div class="ttdoc">The provides an interface for joining and/or creating a network. It provides other utilities such as ...</div><div class="ttdef"><b>Definition:</b> <a href="_network_interface_8h_source.html#l00049">NetworkInterface.h:49</a></div></div>
-<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00159">WiconnectTypes.h:159</a></div></div>
+<div class="ttc" id="namespacewiconnect_html_aadd4d5e6774e21f382c20b594a644470"><div class="ttname"><a href="namespacewiconnect.html#aadd4d5e6774e21f382c20b594a644470">wiconnect::PinToGpioMapper</a></div><div class="ttdeci">int8_t(* PinToGpioMapper)(Pin pin)</div><div class="ttdoc">Function pointer for mapping from a host pin to a WiConnect Module GPIO. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00206">WiconnectTypes.h:206</a></div></div>
+<div class="ttc" id="group__api__core__settings_html_ga851795595a422a14249b7ea9f0038c4c"><div class="ttname"><a href="group__api__core__settings.html#ga851795595a422a14249b7ea9f0038c4c">wiconnect::Wiconnect::setBlockingEnabled</a></div><div class="ttdeci">void setBlockingEnabled(bool blockingEnabled)</div><div class="ttdoc">Sets if API calls are blocking or non-blocking. </div></div>
+<div class="ttc" id="classwiconnect_1_1_wiconnect_udp_server_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect_udp_server.html">wiconnect::WiconnectUdpServer</a></div><div class="ttdoc">UDP Server Listening socket. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_udp_server_8h_source.html#l00044">WiconnectUdpServer.h:44</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_network_interface_html"><div class="ttname"><a href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></div><div class="ttdoc">The provides an interface for joining and/or creating a network. It provides other utilities such as ...</div><div class="ttdef"><b>Definition:</b> <a href="_network_interface_8h_source.html#l00055">NetworkInterface.h:55</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
 <div class="ttc" id="group__api__core__misc_html_gabec1504eb7f486085dad82c4a94310e3"><div class="ttname"><a href="group__api__core__misc.html#gabec1504eb7f486085dad82c4a94310e3">wiconnect::Wiconnect::reset</a></div><div class="ttdeci">WiconnectResult reset()</div><div class="ttdoc">Toggle the WiConnect WiFi module reset signal. </div></div>
 <div class="ttc" id="group__api__core__misc_html_ga96ac50d85d8ab376755d7d5325de1713"><div class="ttname"><a href="group__api__core__misc.html#ga96ac50d85d8ab376755d7d5325de1713">wiconnect::Wiconnect::flush</a></div><div class="ttdeci">void flush(int delayMs=500)</div><div class="ttdoc">Flush any received data in serial RX buffer and terminate any commands on WiConnect WiFi module...</div></div>
 <div class="ttc" id="classwiconnect_1_1_callback_html"><div class="ttname"><a href="classwiconnect_1_1_callback.html">wiconnect::Callback</a></div><div class="ttdoc">Generic callback function. </div><div class="ttdef"><b>Definition:</b> <a href="_callback_8h_source.html#l00049">Callback.h:49</a></div></div>
 <div class="ttc" id="group__api__core__misc_html_gad552c8f23dd0a0e8844ee1fc4d9358e5"><div class="ttname"><a href="group__api__core__misc.html#gad552c8f23dd0a0e8844ee1fc4d9358e5">wiconnect::Wiconnect::wakeup</a></div><div class="ttdeci">WiconnectResult wakeup()</div><div class="ttdoc">Toggle the WiConnect WiFi moduel wakeup signal. </div></div>
-<div class="ttc" id="classwiconnect_1_1_serial_config_html"><div class="ttname"><a href="classwiconnect_1_1_serial_config.html">wiconnect::SerialConfig</a></div><div class="ttdoc">Host<->Wiconnect Module serial configuration. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00129">sdk.h:129</a></div></div>
-<div class="ttc" id="group__api__core__send__command_html_ga3a2637e5ce300a03c448edf1eff13c2c"><div class="ttname"><a href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">wiconnect::Wiconnect::sendCommand</a></div><div class="ttdeci">WiconnectResult sendCommand(const Callback &amp;completeCallback, char *responseBuffer, int responseBufferLen, int timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd, va_list vaList)</div><div class="ttdoc">Send command to WiConnect WiFi module. </div></div>
+<div class="ttc" id="classwiconnect_1_1_serial_config_html"><div class="ttname"><a href="classwiconnect_1_1_serial_config.html">wiconnect::SerialConfig</a></div><div class="ttdoc">Host<->Wiconnect Module serial configuration. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00140">sdk.h:140</a></div></div>
+<div class="ttc" id="group__api__core__settings_html_gad8d98b8d2610f4ea564bede27e87857e"><div class="ttname"><a href="group__api__core__settings.html#gad8d98b8d2610f4ea564bede27e87857e">wiconnect::Wiconnect::getCommandDefaultTimeout</a></div><div class="ttdeci">TimerTimeout getCommandDefaultTimeout()</div><div class="ttdoc">Returns the current default maximum API execution time. </div></div>
 <div class="ttc" id="group__api__core__settings_html_ga75fb083451ee530a1c19e6a4c1be185e"><div class="ttname"><a href="group__api__core__settings.html#ga75fb083451ee530a1c19e6a4c1be185e">wiconnect::Wiconnect::setDebugLogger</a></div><div class="ttdeci">void setDebugLogger(LogFunc logFunc)</div><div class="ttdoc">Sets callback function used to debug WiConnect WiFi module RX/TX serial data. </div></div>
 <div class="ttc" id="group__api__core__misc_html_ga8dcd3ac87afd58b225abb068e835d06e"><div class="ttname"><a href="group__api__core__misc.html#ga8dcd3ac87afd58b225abb068e835d06e">wiconnect::Wiconnect::getInstance</a></div><div class="ttdeci">static Wiconnect * getInstance()</div><div class="ttdoc">Get instance of previously instantiated Wiconnect Library. </div></div>
 <div class="ttc" id="group__api__core__send__command_html_gaf48c1ec0b92af2619ab846baaaa471cd"><div class="ttname"><a href="group__api__core__send__command.html#gaf48c1ec0b92af2619ab846baaaa471cd">wiconnect::Wiconnect::checkCurrentCommand</a></div><div class="ttdeci">WiconnectResult checkCurrentCommand()</div><div class="ttdoc">Check the status of the currently executing command. </div></div>
+<div class="ttc" id="classwiconnect_1_1_ghm_message_list_html"><div class="ttname"><a href="classwiconnect_1_1_ghm_message_list.html">wiconnect::GhmMessageList</a></div><div class="ttdoc">List of goHACK.me messages. </div><div class="ttdef"><b>Definition:</b> <a href="_ghm_message_list_8h_source.html#l00046">GhmMessageList.h:46</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_wiconnect_file_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect_file.html">wiconnect::WiconnectFile</a></div><div class="ttdoc">WiConnect WiFi module file object. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_file_8h_source.html#l00044">WiconnectFile.h:44</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_ghm_interface_html"><div class="ttname"><a href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></div><div class="ttdoc">The provides an interface for http://goHACK.me. </div><div class="ttdef"><b>Definition:</b> <a href="_ghm_interface_8h_source.html#l00081">GhmInterface.h:81</a></div></div>
+<div class="ttc" id="group__api__core__settings_html_gacae50138f9388a66496408f9c2bf6a6f"><div class="ttname"><a href="group__api__core__settings.html#gacae50138f9388a66496408f9c2bf6a6f">wiconnect::Wiconnect::setCommandDefaultTimeout</a></div><div class="ttdeci">void setCommandDefaultTimeout(TimerTimeout timeoutMs)</div><div class="ttdoc">Sets the default maximum time an API method may execute before terminating and return a timeout error...</div></div>
 <div class="ttc" id="group__api__core__misc_html_gac40b2964149e60245ff3cac6adbcd565"><div class="ttname"><a href="group__api__core__misc.html#gac40b2964149e60245ff3cac6adbcd565">wiconnect::Wiconnect::responseToUint32</a></div><div class="ttdeci">WiconnectResult responseToUint32(uint32_t *uint32Ptr)</div><div class="ttdoc">Helper method to convert previous response to uint32. </div></div>
 <div class="ttc" id="classwiconnect_1_1_reader_func_html"><div class="ttname"><a href="classwiconnect_1_1_reader_func.html">wiconnect::ReaderFunc</a></div><div class="ttdoc">Generic data reading callback function. </div><div class="ttdef"><b>Definition:</b> <a href="_reader_func_8h_source.html#l00045">ReaderFunc.h:45</a></div></div>
 <div class="ttc" id="group__api__core__misc_html_ga9d6c981a54c6ab964b469e4f247142d6"><div class="ttname"><a href="group__api__core__misc.html#ga9d6c981a54c6ab964b469e4f247142d6">wiconnect::Wiconnect::deinit</a></div><div class="ttdeci">void deinit()</div><div class="ttdoc">De-initialize library. </div></div>
 <div class="ttc" id="group__api__core__misc_html_ga27b5d6b8207e4ef0f73875606d628da8"><div class="ttname"><a href="group__api__core__misc.html#ga27b5d6b8207e4ef0f73875606d628da8">wiconnect::Wiconnect::getResponseBuffer</a></div><div class="ttdeci">char * getResponseBuffer()</div><div class="ttdoc">Return pointer to internal response buffer. </div></div>
-<div class="ttc" id="group__api__core__settings_html_gaaaf8be221699870053ad98911b066a32"><div class="ttname"><a href="group__api__core__settings.html#gaaaf8be221699870053ad98911b066a32">wiconnect::Wiconnect::setCommandDefaultTimeout</a></div><div class="ttdeci">void setCommandDefaultTimeout(int timeoutMs)</div><div class="ttdoc">Sets the default maximum time an API method may execute before terminating and return a timeout error...</div></div>
 <div class="ttc" id="group__api__core__settings_html_gace51a2841415a53f54fcce336182f0ec"><div class="ttname"><a href="group__api__core__settings.html#gace51a2841415a53f54fcce336182f0ec">wiconnect::Wiconnect::setSetting</a></div><div class="ttdeci">WiconnectResult setSetting(const char *settingStr, uint32_t value)</div><div class="ttdoc">Set a module setting. </div></div>
 <div class="ttc" id="classwiconnect_1_1_queued_command_html"><div class="ttname"><a href="classwiconnect_1_1_queued_command.html">wiconnect::QueuedCommand</a></div><div class="ttdoc">Class which contains command for asynchronous processing. </div><div class="ttdef"><b>Definition:</b> <a href="_queued_command_8h_source.html#l00043">QueuedCommand.h:43</a></div></div>
-<div class="ttc" id="group__api__core__types_html_ga1cf4dfa71da0b0dc3dc707dacf56cc9c"><div class="ttname"><a href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">wiconnect::Pin</a></div><div class="ttdeci">PinName Pin</div><div class="ttdoc">Pin name on HOST. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00123">sdk.h:123</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga1cf4dfa71da0b0dc3dc707dacf56cc9c"><div class="ttname"><a href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">wiconnect::Pin</a></div><div class="ttdeci">PinName Pin</div><div class="ttdoc">Pin name on HOST. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00134">sdk.h:134</a></div></div>
 <div class="ttc" id="group__api__core__misc_html_gae2e3add2e60543d0e3340ed7a9e034ad"><div class="ttname"><a href="group__api__core__misc.html#gae2e3add2e60543d0e3340ed7a9e034ad">wiconnect::Wiconnect::init</a></div><div class="ttdeci">WiconnectResult init(bool bringNetworkUp=false)</div><div class="ttdoc">Initialize library and communication link with WiConnect WiFi module. </div></div>
 <div class="ttc" id="group__api__core__settings_html_ga16d5022d1fbd784fe0fd90a56911c5bc"><div class="ttname"><a href="group__api__core__settings.html#ga16d5022d1fbd784fe0fd90a56911c5bc">wiconnect::Wiconnect::getSetting</a></div><div class="ttdeci">WiconnectResult getSetting(const char *settingStr, uint32_t *valuePtr)</div><div class="ttdoc">Get a module setting. </div></div>
 <div class="ttc" id="group__api__core__settings_html_ga180b043ec83c53b5bf6b9ef2b187d08d"><div class="ttname"><a href="group__api__core__settings.html#ga180b043ec83c53b5bf6b9ef2b187d08d">wiconnect::Wiconnect::setPinToGpioMapper</a></div><div class="ttdeci">void setPinToGpioMapper(PinToGpioMapper mapper)</div><div class="ttdoc">Sets a mapping function used to convert from a host Pin to WiConnect WiFi module GPIO. </div></div>
+<div class="ttc" id="group__api__core__send__command_html_gadd23f2f86fcc0a438dad798ab3353505"><div class="ttname"><a href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">wiconnect::Wiconnect::sendCommand</a></div><div class="ttdeci">WiconnectResult sendCommand(const Callback &amp;completeCallback, char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd, va_list vaList)</div><div class="ttdoc">Send command to WiConnect WiFi module. </div></div>
 <div class="ttc" id="classwiconnect_1_1_log_func_html"><div class="ttname"><a href="classwiconnect_1_1_log_func.html">wiconnect::LogFunc</a></div><div class="ttdoc">Logging callback function. </div><div class="ttdef"><b>Definition:</b> <a href="_log_func_8h_source.html#l00045">LogFunc.h:45</a></div></div>
 <div class="ttc" id="group__api__core__send__command_html_ga4a9bd29de1d5c496fbcc28ecfa51e7c0"><div class="ttname"><a href="group__api__core__send__command.html#ga4a9bd29de1d5c496fbcc28ecfa51e7c0">wiconnect::Wiconnect::stopCurrentCommand</a></div><div class="ttdeci">void stopCurrentCommand()</div><div class="ttdoc">Stop the currently executing command. </div></div>
 <div class="ttc" id="group__api__core__misc_html_gada79343aece515e00f9be4045d3858a0"><div class="ttname"><a href="group__api__core__misc.html#gada79343aece515e00f9be4045d3858a0">wiconnect::Wiconnect::responseToInt32</a></div><div class="ttdeci">WiconnectResult responseToInt32(int32_t *int32Ptr)</div><div class="ttdoc">Helper method to convert previous response to int32. </div></div>
+<div class="ttc" id="namespacewiconnect_html_a0c27570b2913afc6339821df7c934810"><div class="ttname"><a href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">wiconnect::TimerTimeout</a></div><div class="ttdeci">unsigned long TimerTimeout</div><div class="ttdoc">Timeout type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00212">WiconnectTypes.h:212</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_wiconnect_socket_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect_socket.html">wiconnect::WiconnectSocket</a></div><div class="ttdoc">Connection object to remote server. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_socket_8h_source.html#l00043">WiconnectSocket.h:43</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_wiconnect_html_a285510a2cba5341db387101ac75a4389"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html#a285510a2cba5341db387101ac75a4389">wiconnect::Wiconnect::Wiconnect</a></div><div class="ttdeci">Wiconnect(const SerialConfig &amp;serialConfig, Pin reset=PIN_NC, Pin wake=PIN_NC, bool nonBlocking=WICONNECT_DEFAULT_NONBLOCKING WICONNECT_MALLOC_ARGS)</div><div class="ttdoc">WiConnect class constructor. </div></div>
 <div class="ttc" id="group__api__core__misc_html_ga600215de23210071c42996d04390071e"><div class="ttname"><a href="group__api__core__misc.html#ga600215de23210071c42996d04390071e">wiconnect::Wiconnect::getLastCommandResponseLength</a></div><div class="ttdeci">uint16_t getLastCommandResponseLength()</div><div class="ttdoc">Return the length in bytes of the previous response. </div></div>
 <div class="ttc" id="classwiconnect_1_1_scan_result_list_html"><div class="ttname"><a href="classwiconnect_1_1_scan_result_list.html">wiconnect::ScanResultList</a></div><div class="ttdoc">List of WiFi network scan results. </div><div class="ttdef"><b>Definition:</b> <a href="_scan_result_list_8h_source.html#l00046">ScanResultList.h:46</a></div></div>
-<div class="ttc" id="classwiconnect_1_1_socket_interface_html"><div class="ttname"><a href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></div><div class="ttdoc">The provides an interface for creating TCP/UDP/TLS/HTTP client sockets. A client socket connects to a...</div><div class="ttdef"><b>Definition:</b> <a href="_socket_interface_8h_source.html#l00051">SocketInterface.h:51</a></div></div>
-<div class="ttc" id="group__api__core__settings_html_gad5d31980a7b1e143f00b0117468c1a7e"><div class="ttname"><a href="group__api__core__settings.html#gad5d31980a7b1e143f00b0117468c1a7e">wiconnect::Wiconnect::getCommandDefaultTimeout</a></div><div class="ttdeci">int getCommandDefaultTimeout()</div><div class="ttdoc">Returns the current default maximum API execution time. </div></div>
-<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00074">WiconnectInterface.h:74</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_socket_interface_html"><div class="ttname"><a href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></div><div class="ttdoc">The provides an interface for creating TCP/UDP/TLS/HTTP client sockets. A client socket connects to a...</div><div class="ttdef"><b>Definition:</b> <a href="_socket_interface_8h_source.html#l00063">SocketInterface.h:63</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00078">WiconnectInterface.h:78</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_file_interface_html"><div class="ttname"><a href="classwiconnect_1_1_file_interface.html">wiconnect::FileInterface</a></div><div class="ttdoc">The provides an interface for creating TCP/UDP/TLS/HTTP client sockets. A client socket connects to a...</div><div class="ttdef"><b>Definition:</b> <a href="_file_interface_8h_source.html#l00068">FileInterface.h:68</a></div></div>
-<div class="ttc" id="group__api__core__macro_html_ga347d0e1228e8174563c6bcf48de18401"><div class="ttname"><a href="group__api__core__macro.html#ga347d0e1228e8174563c6bcf48de18401">WICONNECT_DEFAULT_NONBLOCKING</a></div><div class="ttdeci">#define WICONNECT_DEFAULT_NONBLOCKING</div><div class="ttdoc">The default blocking mode of the Library. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00099">sdk.h:99</a></div></div>
-<div class="ttc" id="group__api__core__macro_html_ga596d1da2fb23f4e748c83d64a47e10b3"><div class="ttname"><a href="group__api__core__macro.html#ga596d1da2fb23f4e748c83d64a47e10b3">delayMs</a></div><div class="ttdeci">#define delayMs(ms)</div><div class="ttdoc">Function to stop processor for specified number of milliseconds. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00180">sdk.h:180</a></div></div>
-<div class="ttc" id="group__api__core__macro_html_ga2aa16118029ab13ab41514cb8eb93ba7"><div class="ttname"><a href="group__api__core__macro.html#ga2aa16118029ab13ab41514cb8eb93ba7">WICONNECT_MAX_CMD_SIZE</a></div><div class="ttdeci">#define WICONNECT_MAX_CMD_SIZE</div><div class="ttdoc">The maximum command size that may be sent to the WiConnect WiFi module. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00106">WiconnectTypes.h:106</a></div></div>
-<div class="ttc" id="group__api__core__macro_html_gaa1dbeca66111f3a22d0ee6b122d69270"><div class="ttname"><a href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a></div><div class="ttdeci">#define PIN_NC</div><div class="ttdoc">Default value for a pin, Not connected. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00117">sdk.h:117</a></div></div>
+<div class="ttc" id="group__api__core__macro_html_ga347d0e1228e8174563c6bcf48de18401"><div class="ttname"><a href="group__api__core__macro.html#ga347d0e1228e8174563c6bcf48de18401">WICONNECT_DEFAULT_NONBLOCKING</a></div><div class="ttdeci">#define WICONNECT_DEFAULT_NONBLOCKING</div><div class="ttdoc">The default blocking mode of the Library. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00105">sdk.h:105</a></div></div>
+<div class="ttc" id="group__api__core__macro_html_ga596d1da2fb23f4e748c83d64a47e10b3"><div class="ttname"><a href="group__api__core__macro.html#ga596d1da2fb23f4e748c83d64a47e10b3">delayMs</a></div><div class="ttdeci">#define delayMs(ms)</div><div class="ttdoc">Function to stop processor for specified number of milliseconds. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00191">sdk.h:191</a></div></div>
+<div class="ttc" id="group__api__core__macro_html_ga2aa16118029ab13ab41514cb8eb93ba7"><div class="ttname"><a href="group__api__core__macro.html#ga2aa16118029ab13ab41514cb8eb93ba7">WICONNECT_MAX_CMD_SIZE</a></div><div class="ttdeci">#define WICONNECT_MAX_CMD_SIZE</div><div class="ttdoc">The maximum command size that may be sent to the WiConnect WiFi module. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00113">WiconnectTypes.h:113</a></div></div>
+<div class="ttc" id="group__api__core__macro_html_gaa1dbeca66111f3a22d0ee6b122d69270"><div class="ttname"><a href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a></div><div class="ttdeci">#define PIN_NC</div><div class="ttdoc">Default value for a pin, Not connected. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00128">sdk.h:128</a></div></div>
 <div class="ttc" id="group__api__core__misc_html_ga4fc195839bc6c6bd0091074cbdc94c4f"><div class="ttname"><a href="group__api__core__misc.html#ga4fc195839bc6c6bd0091074cbdc94c4f">wiconnect::Wiconnect::getVersion</a></div><div class="ttdeci">WiconnectResult getVersion(char *versionBuffer=NULL, int versionBufferSize=0, const Callback &amp;completeCallback=Callback())</div><div class="ttdoc">Return current version of WiConnect WiFi module. </div></div>
 <div class="ttc" id="group__api__core__misc_html_gab00c7110984f6d6187241d17a4a431ff"><div class="ttname"><a href="group__api__core__misc.html#gab00c7110984f6d6187241d17a4a431ff">wiconnect::Wiconnect::isInitialized</a></div><div class="ttdeci">bool isInitialized()</div><div class="ttdoc">Return TRUE if library is able to communicated with WiConnect WiFi module. FALSE else. </div></div>
 <div class="ttc" id="classwiconnect_1_1_scan_result_html"><div class="ttname"><a href="classwiconnect_1_1_scan_result.html">wiconnect::ScanResult</a></div><div class="ttdoc">Contains single entry from WiFi scan results. </div><div class="ttdef"><b>Definition:</b> <a href="_scan_result_8h_source.html#l00046">ScanResult.h:46</a></div></div>
 <div class="ttc" id="group__api__core__misc_html_gad447fe3341539eb9b276d269645bb632"><div class="ttname"><a href="group__api__core__misc.html#gad447fe3341539eb9b276d269645bb632">wiconnect::Wiconnect::updateFirmware</a></div><div class="ttdeci">WiconnectResult updateFirmware(bool forced=false, const char *versionStr=NULL, const Callback &amp;completeCallback=Callback())</div><div class="ttdoc">Update the wifi module&#39;s internal firmware. </div></div>
+<div class="ttc" id="group__api__core__settings_html_gaf6115968c49c128717cacd2f06b883ad"><div class="ttname"><a href="group__api__core__settings.html#gaf6115968c49c128717cacd2f06b883ad">wiconnect::Wiconnect::getBlockingEnabled</a></div><div class="ttdeci">bool getBlockingEnabled(void)</div><div class="ttdoc">Gets if API calls are blocking or non-blocking. </div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/_wiconnect_serial_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_wiconnect_serial_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -104,7 +104,7 @@
 <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
 <div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#pragma once</span></div>
 <div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;WiconnectTypes.h&quot;</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;api/WiconnectTypes.h&quot;</span></div>
 <div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div>
 <div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div>
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="keyword">namespace </span>wiconnect</div>
@@ -116,23 +116,29 @@
 <div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    WiconnectSerial(<span class="keyword">const</span> SerialConfig  &amp;config, Wiconnect *wiconnect = NULL);</div>
 <div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    <span class="keyword">virtual</span> ~WiconnectSerial();</div>
 <div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <span class="keywordtype">void</span> flush(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <span class="keywordtype">int</span> write(<span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">int</span> bytesToWrite, <span class="keywordtype">int</span> timeoutMs);</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <span class="keywordtype">int</span> read(<span class="keywordtype">void</span> *data, <span class="keywordtype">int</span> bytesToRead, <span class="keywordtype">int</span> timeoutMs);</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    TimeoutTimer timeoutTimer;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">#ifdef WICONNECT_SERIAL_RX_BUFFER</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    uint8_t ringBuffer[32];</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <span class="keywordtype">bool</span> bufferAlloc;</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    <span class="keywordtype">void</span> rxIrqHandler(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;};</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;}</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <span class="keywordtype">void</span> initialize(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <span class="keywordtype">void</span> flush(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <span class="keywordtype">int</span> write(<span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">int</span> bytesToWrite, <a class="code" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs);</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    <span class="keywordtype">int</span> read(<span class="keywordtype">void</span> *data, <span class="keywordtype">int</span> bytesToRead, <a class="code" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs);</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    uint32_t getBaud(){ <span class="keywordflow">return</span> baudRate; }</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    TimeoutTimer timeoutTimer;</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    uint32_t baudRate;</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#ifdef WICONNECT_SERIAL_RX_BUFFER</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    uint8_t ringBuffer[32];</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    <span class="keywordtype">bool</span> bufferAlloc;</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <span class="keywordtype">void</span> rxIrqHandler(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;};</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;}</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div>
+<div class="ttc" id="namespacewiconnect_html_a0c27570b2913afc6339821df7c934810"><div class="ttname"><a href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">wiconnect::TimerTimeout</a></div><div class="ttdeci">unsigned long TimerTimeout</div><div class="ttdoc">Timeout type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00212">WiconnectTypes.h:212</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/_wiconnect_socket_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_wiconnect_socket_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -105,7 +105,7 @@
 <div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#pragma once</span></div>
 <div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
 <div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;WiconnectTypes.h&quot;</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;api/WiconnectTypes.h&quot;</span></div>
 <div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div>
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="keyword">namespace </span>wiconnect</div>
 <div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;{</div>
@@ -126,7 +126,7 @@
 <div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> puts(<span class="keyword">const</span> <span class="keywordtype">char</span> *s, <span class="keywordtype">bool</span> flush = <span class="keyword">true</span>);</div>
 <div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> getc(uint8_t *c);</div>
 <div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> printf(<span class="keyword">const</span> <span class="keywordtype">char</span>* format, ...);</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> flushTxBuffer();</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    <span class="keyword">virtual</span> <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> flushTxBuffer();</div>
 <div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    <span class="keywordtype">void</span> clearRxBuffer();</div>
 <div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div>
 <div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    uint8_t *getTxBuffer();</div>
@@ -145,30 +145,31 @@
 <div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div>
 <div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="keyword">protected</span>:</div>
 <div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keywordtype">bool</span> connected;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    <a class="code" href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">SocketType</a> type;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    uint8_t handle;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <span class="keywordtype">char</span> host[<a class="code" href="group__api__core__macro.html#ga7c5dcedd35669199b46bb292b3d3b525">WICONNECT_MAX_HOST_SIZE</a>];</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    uint16_t localPort;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    uint16_t remotePort;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <a class="code" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a> *wiconnect;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    Buffer txBuffer;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    Buffer rxBuffer;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> init(uint8_t handle, <a class="code" href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">SocketType</a> type, <span class="keyword">const</span> <span class="keywordtype">char</span> *host, uint16_t remotePort, uint16_t localPort);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> writeDataCallback(<span class="keywordtype">void</span> *user, <span class="keywordtype">void</span> *data, <span class="keywordtype">int</span> maxReadSize, <span class="keywordtype">int</span> *bytesRead);</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_socket_interface.html">SocketInterface</a>;</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    <span class="keywordtype">bool</span> enableAutoClose;</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    <a class="code" href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">SocketType</a> type;</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    uint8_t handle;</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    <span class="keywordtype">char</span> host[<a class="code" href="group__api__core__macro.html#ga7c5dcedd35669199b46bb292b3d3b525">WICONNECT_MAX_HOST_SIZE</a>];</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    uint16_t localPort;</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    uint16_t remotePort;</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <a class="code" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a> *wiconnect;</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    Buffer txBuffer;</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    Buffer rxBuffer;</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> init(uint8_t handle, <a class="code" href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">SocketType</a> type, <span class="keyword">const</span> <span class="keywordtype">char</span> *host, uint16_t remotePort, uint16_t localPort);</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_socket_interface.html">SocketInterface</a>;</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classwiconnect_1_1_ghm_interface.html">GhmInterface</a>;</div>
 <div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;};</div>
 <div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;</div>
 <div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div>
 <div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;}</div>
-<div class="ttc" id="group__api__socket__types_html_ga69dc55558df4c81599c5fb3dff98756d"><div class="ttname"><a href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">wiconnect::SocketType</a></div><div class="ttdeci">SocketType</div><div class="ttdoc">Socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00324">WiconnectTypes.h:324</a></div></div>
-<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00159">WiconnectTypes.h:159</a></div></div>
-<div class="ttc" id="group__api__core__macro_html_ga7c5dcedd35669199b46bb292b3d3b525"><div class="ttname"><a href="group__api__core__macro.html#ga7c5dcedd35669199b46bb292b3d3b525">WICONNECT_MAX_HOST_SIZE</a></div><div class="ttdeci">#define WICONNECT_MAX_HOST_SIZE</div><div class="ttdoc">The maximum server string length. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00121">WiconnectTypes.h:121</a></div></div>
+<div class="ttc" id="group__api__socket__types_html_ga69dc55558df4c81599c5fb3dff98756d"><div class="ttname"><a href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">wiconnect::SocketType</a></div><div class="ttdeci">SocketType</div><div class="ttdoc">Socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00338">WiconnectTypes.h:338</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_ghm_interface_html"><div class="ttname"><a href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></div><div class="ttdoc">The provides an interface for http://goHACK.me. </div><div class="ttdef"><b>Definition:</b> <a href="_ghm_interface_8h_source.html#l00081">GhmInterface.h:81</a></div></div>
+<div class="ttc" id="group__api__core__macro_html_ga7c5dcedd35669199b46bb292b3d3b525"><div class="ttname"><a href="group__api__core__macro.html#ga7c5dcedd35669199b46bb292b3d3b525">WICONNECT_MAX_HOST_SIZE</a></div><div class="ttdeci">#define WICONNECT_MAX_HOST_SIZE</div><div class="ttdoc">The maximum server string length. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00128">WiconnectTypes.h:128</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_wiconnect_socket_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect_socket.html">wiconnect::WiconnectSocket</a></div><div class="ttdoc">Connection object to remote server. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_socket_8h_source.html#l00043">WiconnectSocket.h:43</a></div></div>
-<div class="ttc" id="classwiconnect_1_1_socket_interface_html"><div class="ttname"><a href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></div><div class="ttdoc">The provides an interface for creating TCP/UDP/TLS/HTTP client sockets. A client socket connects to a...</div><div class="ttdef"><b>Definition:</b> <a href="_socket_interface_8h_source.html#l00051">SocketInterface.h:51</a></div></div>
-<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00074">WiconnectInterface.h:74</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_socket_interface_html"><div class="ttname"><a href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></div><div class="ttdoc">The provides an interface for creating TCP/UDP/TLS/HTTP client sockets. A client socket connects to a...</div><div class="ttdef"><b>Definition:</b> <a href="_socket_interface_8h_source.html#l00063">SocketInterface.h:63</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00078">WiconnectInterface.h:78</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/_wiconnect_types_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/_wiconnect_types_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -106,7 +106,7 @@
 <div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
 <div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
 <div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;stdarg.h&gt;</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;stddef.h&gt;</span></div>
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div>
 <div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &quot;sdk.h&quot;</span></div>
 <div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div>
@@ -131,320 +131,389 @@
 <div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga77baa56c8d3584b953f0a2626e6844ad">   84</a></span>&#160;<span class="preprocessor">#define ARRAY_COUNT(x) (sizeof (x) / sizeof *(x))</span></div>
 <div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div>
 <div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div>
-<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#gab27aa3ef76302b5221766abfd4f47e64">   92</a></span>&#160;<span class="preprocessor">#define WICONNECT_FAILED(result, func) ((int)(result = (func)) &lt; (int)wiconnect::WICONNECT_SUCCESS)</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;</div>
-<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#gabb158b483cd6d8a8d2d4bf8d38bc9830">   99</a></span>&#160;<span class="preprocessor">#define WICONNECT_SUCCEEDED(result, func) ((result = (func)) == wiconnect::WICONNECT_SUCCESS)</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div>
+<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#gab27aa3ef76302b5221766abfd4f47e64">   93</a></span>&#160;<span class="preprocessor">#define WICONNECT_FAILED(result, func) ((int)(result = (func)) &lt; (int)wiconnect::WICONNECT_SUCCESS)</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#gabb158b483cd6d8a8d2d4bf8d38bc9830">  100</a></span>&#160;<span class="preprocessor">#define WICONNECT_SUCCEEDED(result, func) ((result = (func)) == wiconnect::WICONNECT_SUCCESS)</span></div>
 <div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div>
-<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga2aa16118029ab13ab41514cb8eb93ba7">  106</a></span>&#160;<span class="preprocessor">#define WICONNECT_MAX_CMD_SIZE 128</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div>
-<div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga1525d7c98c2da34fc1a64de49253abdb">  111</a></span>&#160;<span class="preprocessor">#define WICONNECT_MAX_VERSION_SIZE 96</span></div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div>
-<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga45fe565132845ca570ded816f25561b0">  116</a></span>&#160;<span class="preprocessor">#define WICONNECT_MAX_SOCKETS 8</span></div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div>
-<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga7c5dcedd35669199b46bb292b3d3b525">  121</a></span>&#160;<span class="preprocessor">#define WICONNECT_MAX_HOST_SIZE 64</span></div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;</div>
-<div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga8bc3b8d2e7e7c9d10b23e0a15cd4507a">  126</a></span>&#160;<span class="preprocessor">#define WICONNECT_MAX_FILENAME_SIZE 96</span></div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div>
-<div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga580e5f45fee866c845e0d3fd1eb1744a">  131</a></span>&#160;<span class="preprocessor">#define WICONNECT_WAIT_FOREVER 0xFFFFFFFF</span></div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;</div>
-<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga12620767dcf50182fb9f72fe5d995301">  136</a></span>&#160;<span class="preprocessor">#define WICONNECT_NO_WAIT 0</span></div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;</div>
-<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga6d336ec791dcd22238d2fc4995fb9431">  141</a></span>&#160;<span class="preprocessor">#define WICONNECT_FIRMWARE_UPDATE_TIMEOUT 90000</span></div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div>
-<div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="group__api__socket__macro.html#gae54117ebe433295ef992b9ca83c46d98">  147</a></span>&#160;<span class="preprocessor">#define SOCKET_ANY_PORT (uint16_t)0</span></div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;</div>
-<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="group__api__socket__macro.html#ga311741238658c89ea9344d32c0cec923">  152</a></span>&#160;<span class="preprocessor">#define SOCKET_INVALID_HANDLE ((uint8_t)0xFF)</span></div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div>
-<div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">  159</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;{</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    <span class="comment">// Status Codes</span></div>
-<div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ad345e256266694df078c99eaee04f789">  162</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ad345e256266694df078c99eaee04f789">WICONNECT_ABORTED</a>               = 3,    </div>
-<div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5bff05280d726da505c6e6ec2f085bd1">  163</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5bff05280d726da505c6e6ec2f085bd1">WICONNECT_IDLE</a>                  = 2,    </div>
-<div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a289d83a8cf2d1e1f272134d8268925c0">  164</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a289d83a8cf2d1e1f272134d8268925c0">WICONNECT_PROCESSING</a>            = 1,    </div>
-<div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7">  165</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7">WICONNECT_SUCCESS</a>               = 0,    </div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    <span class="comment">// Error codes</span></div>
-<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05acfd6d3c1efd03fae8cd443bc01bca8d6">  168</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05acfd6d3c1efd03fae8cd443bc01bca8d6">WICONNECT_ERROR</a>                 = -1,   </div>
-<div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a511a4e6fa8470f52110fc64f04cfe5ff">  169</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a511a4e6fa8470f52110fc64f04cfe5ff">WICONNECT_CMD_RESPONSE_ERROR</a>    = -2,   </div>
-<div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a25c48e037bc3615840b81461db6385b5">  170</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a25c48e037bc3615840b81461db6385b5">WICONNECT_NULL_BUFFER</a>           = -3,   </div>
-<div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05afea61b8f5d17f6be2aee2ce5b6bb7c43">  171</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05afea61b8f5d17f6be2aee2ce5b6bb7c43">WICONNECT_NOT_INITIALIZED</a>       = -4,   </div>
-<div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a2b2577cc3efe2cb37fda7dead222878f">  172</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a2b2577cc3efe2cb37fda7dead222878f">WICONNECT_OVERFLOW</a>              = -5,   </div>
-<div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ae6a9fb0c6333a0431e5775da996087ac">  173</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ae6a9fb0c6333a0431e5775da996087ac">WICONNECT_TIMEOUT</a>               = -6,   </div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;<span class="comment">//    WICONNECT_RESPONSE_HANDLER_NULL = -7,   ///&lt;</span></div>
-<div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab17f003b5f90e88328bbc76435f9f2e5">  175</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab17f003b5f90e88328bbc76435f9f2e5">WICONNECT_RESPONSE_PARSE_ERROR</a>  = -8,   </div>
-<div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a376da897f3a629fd71abd9db9f4cea83">  176</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a376da897f3a629fd71abd9db9f4cea83">WICONNECT_ANOTHER_CMD_EXECUTING</a> = -9,   </div>
-<div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ae96c2edcdade2809cdb60a8a5b0983fa">  177</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ae96c2edcdade2809cdb60a8a5b0983fa">WICONNECT_BAD_ARG</a>               = -10,  </div>
-<div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab18f839c77a6a1f964c096980ef24adc">  178</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab18f839c77a6a1f964c096980ef24adc">WICONNECT_UNSUPPORTED</a>           = -11,  </div>
-<div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab16dea725fe7b09d91a7651f18174cff">  179</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab16dea725fe7b09d91a7651f18174cff">WICONNECT_PINNAME_TO_GPIO_MAPPER_NULL</a> = -12,    </div>
-<div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5d9162280a5269a34245bf53c87401a4">  180</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5d9162280a5269a34245bf53c87401a4">WICONNECT_DUPLICATE</a>             = -13,  </div>
-<div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab9123e9628c3156f34c44913a72b4195">  181</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab9123e9628c3156f34c44913a72b4195">WICONNECT_NOT_FOUND</a>             = -14,  </div>
-<div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a8d6d7c580a7aa3c4d64d41cac6e0307a">  182</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a8d6d7c580a7aa3c4d64d41cac6e0307a">WICONNECT_PINNAME_TO_GPIO_NO_MAPPING</a> = -15, </div>
-<div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05aecb3384d1dc5a61345346a8cd63527b2">  183</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05aecb3384d1dc5a61345346a8cd63527b2">WICONNECT_NOT_CONNECTED</a>         = -16,  </div>
-<div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a7d4f9bd8b2b8ccc2ad902271e5241b02">  184</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a7d4f9bd8b2b8ccc2ad902271e5241b02">WICONNECT_UNDERFLOW</a>             = -17,  </div>
-<div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a28240905349a60a6b52bddbbd152ea5e">  185</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a28240905349a60a6b52bddbbd152ea5e">WICONNECT_MONITOR_NOT_AVAILABLE</a> = -18,  </div>
-<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab3f9c2611514967ca4f155e35f522cc2">  186</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab3f9c2611514967ca4f155e35f522cc2">WICONNECT_NOT_OPENED_FOR_READING</a> = -19, </div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;} <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>;</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;</div>
-<div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="namespacewiconnect.html#aadd4d5e6774e21f382c20b594a644470">  199</a></span>&#160;<span class="keyword">typedef</span> int8_t (*<a class="code" href="namespacewiconnect.html#aadd4d5e6774e21f382c20b594a644470">PinToGpioMapper</a>)(<a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> pin);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;{</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    <span class="keywordtype">int</span> size;</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    uint8_t *buffer;</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    uint8_t *ptr;</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    <span class="keywordtype">int</span> bytesPending;</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;    <span class="keywordtype">bool</span> allocated;</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;} Buffer;</div>
+<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga436d782bd2cdce3696eadda1083416af">  107</a></span>&#160;<span class="preprocessor">#define WICONNECT_IS_PROCESSING(result, func) ((result = (func)) == wiconnect::WICONNECT_PROCESSING)</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div>
+<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga2aa16118029ab13ab41514cb8eb93ba7">  113</a></span>&#160;<span class="preprocessor">#define WICONNECT_MAX_CMD_SIZE 128</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;</div>
+<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga1525d7c98c2da34fc1a64de49253abdb">  118</a></span>&#160;<span class="preprocessor">#define WICONNECT_MAX_VERSION_SIZE 96</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div>
+<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga45fe565132845ca570ded816f25561b0">  123</a></span>&#160;<span class="preprocessor">#define WICONNECT_MAX_SOCKETS 8</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div>
+<div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga7c5dcedd35669199b46bb292b3d3b525">  128</a></span>&#160;<span class="preprocessor">#define WICONNECT_MAX_HOST_SIZE 64</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div>
+<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga8bc3b8d2e7e7c9d10b23e0a15cd4507a">  133</a></span>&#160;<span class="preprocessor">#define WICONNECT_MAX_FILENAME_SIZE 96</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div>
+<div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga580e5f45fee866c845e0d3fd1eb1744a">  138</a></span>&#160;<span class="preprocessor">#define WICONNECT_WAIT_FOREVER 0xFFFFFFFFUL</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;</div>
+<div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga12620767dcf50182fb9f72fe5d995301">  143</a></span>&#160;<span class="preprocessor">#define WICONNECT_NO_WAIT 0</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div>
+<div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga6d336ec791dcd22238d2fc4995fb9431">  148</a></span>&#160;<span class="preprocessor">#define WICONNECT_FIRMWARE_UPDATE_TIMEOUT 90000UL</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;</div>
+<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="group__api__socket__macro.html#gae54117ebe433295ef992b9ca83c46d98">  154</a></span>&#160;<span class="preprocessor">#define SOCKET_ANY_PORT (uint16_t)0</span></div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;</div>
+<div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="group__api__socket__macro.html#ga311741238658c89ea9344d32c0cec923">  159</a></span>&#160;<span class="preprocessor">#define SOCKET_INVALID_HANDLE ((uint8_t)0xFF)</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div>
+<div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">  166</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;{</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    <span class="comment">// Status Codes</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ad345e256266694df078c99eaee04f789">  169</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ad345e256266694df078c99eaee04f789">WICONNECT_ABORTED</a>               = 3,    </div>
+<div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5bff05280d726da505c6e6ec2f085bd1">  170</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5bff05280d726da505c6e6ec2f085bd1">WICONNECT_IDLE</a>                  = 2,    </div>
+<div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a289d83a8cf2d1e1f272134d8268925c0">  171</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a289d83a8cf2d1e1f272134d8268925c0">WICONNECT_PROCESSING</a>            = 1,    </div>
+<div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7">  172</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7">WICONNECT_SUCCESS</a>               = 0,    </div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <span class="comment">// Error codes</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05acfd6d3c1efd03fae8cd443bc01bca8d6">  175</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05acfd6d3c1efd03fae8cd443bc01bca8d6">WICONNECT_ERROR</a>                 = -1,   </div>
+<div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a511a4e6fa8470f52110fc64f04cfe5ff">  176</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a511a4e6fa8470f52110fc64f04cfe5ff">WICONNECT_CMD_RESPONSE_ERROR</a>    = -2,   </div>
+<div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a25c48e037bc3615840b81461db6385b5">  177</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a25c48e037bc3615840b81461db6385b5">WICONNECT_NULL_BUFFER</a>           = -3,   </div>
+<div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05afea61b8f5d17f6be2aee2ce5b6bb7c43">  178</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05afea61b8f5d17f6be2aee2ce5b6bb7c43">WICONNECT_NOT_INITIALIZED</a>       = -4,   </div>
+<div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a2b2577cc3efe2cb37fda7dead222878f">  179</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a2b2577cc3efe2cb37fda7dead222878f">WICONNECT_OVERFLOW</a>              = -5,   </div>
+<div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ae6a9fb0c6333a0431e5775da996087ac">  180</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ae6a9fb0c6333a0431e5775da996087ac">WICONNECT_TIMEOUT</a>               = -6,   </div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;<span class="comment">//    WICONNECT_RESPONSE_HANDLER_NULL = -7,   ///&lt;</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab17f003b5f90e88328bbc76435f9f2e5">  182</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab17f003b5f90e88328bbc76435f9f2e5">WICONNECT_RESPONSE_PARSE_ERROR</a>  = -8,   </div>
+<div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a376da897f3a629fd71abd9db9f4cea83">  183</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a376da897f3a629fd71abd9db9f4cea83">WICONNECT_ANOTHER_CMD_EXECUTING</a> = -9,   </div>
+<div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ae96c2edcdade2809cdb60a8a5b0983fa">  184</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ae96c2edcdade2809cdb60a8a5b0983fa">WICONNECT_BAD_ARG</a>               = -10,  </div>
+<div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab18f839c77a6a1f964c096980ef24adc">  185</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab18f839c77a6a1f964c096980ef24adc">WICONNECT_UNSUPPORTED</a>           = -11,  </div>
+<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab16dea725fe7b09d91a7651f18174cff">  186</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab16dea725fe7b09d91a7651f18174cff">WICONNECT_PINNAME_TO_GPIO_MAPPER_NULL</a> = -12,    </div>
+<div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5d9162280a5269a34245bf53c87401a4">  187</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5d9162280a5269a34245bf53c87401a4">WICONNECT_DUPLICATE</a>             = -13,  </div>
+<div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab9123e9628c3156f34c44913a72b4195">  188</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab9123e9628c3156f34c44913a72b4195">WICONNECT_NOT_FOUND</a>             = -14,  </div>
+<div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a8d6d7c580a7aa3c4d64d41cac6e0307a">  189</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a8d6d7c580a7aa3c4d64d41cac6e0307a">WICONNECT_PINNAME_TO_GPIO_NO_MAPPING</a> = -15, </div>
+<div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05aecb3384d1dc5a61345346a8cd63527b2">  190</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05aecb3384d1dc5a61345346a8cd63527b2">WICONNECT_NOT_CONNECTED</a>         = -16,  </div>
+<div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a7d4f9bd8b2b8ccc2ad902271e5241b02">  191</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a7d4f9bd8b2b8ccc2ad902271e5241b02">WICONNECT_UNDERFLOW</a>             = -17,  </div>
+<div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a28240905349a60a6b52bddbbd152ea5e">  192</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a28240905349a60a6b52bddbbd152ea5e">WICONNECT_MONITOR_NOT_AVAILABLE</a> = -18,  </div>
+<div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab3f9c2611514967ca4f155e35f522cc2">  193</a></span>&#160;    <a class="code" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab3f9c2611514967ca4f155e35f522cc2">WICONNECT_NOT_OPENED_FOR_READING</a> = -19, </div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;} <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>;</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;</div>
+<div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="namespacewiconnect.html#aadd4d5e6774e21f382c20b594a644470">  206</a></span>&#160;<span class="keyword">typedef</span> int8_t (*<a class="code" href="namespacewiconnect.html#aadd4d5e6774e21f382c20b594a644470">PinToGpioMapper</a>)(<a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> pin);</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div>
+<div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">  212</a></span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a>;</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;</div>
 <div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;<span class="comment">// ----------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;</div>
-<div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99">  224</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;{</div>
-<div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6a4dd5a93528f27eb983bf856b9f5067">  226</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6a4dd5a93528f27eb983bf856b9f5067">NETWORK_STATUS_DOWN</a>,            </div>
-<div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a8e40c9f169976770c3e65b9c0e44874c">  227</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a8e40c9f169976770c3e65b9c0e44874c">NETWORK_STATUS_WIFI_ONLY</a>,       </div>
-<div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6d6f2fd76cab833e55bc398541c52b46">  228</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6d6f2fd76cab833e55bc398541c52b46">NETWORK_STATUS_UP</a>,              </div>
-<div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a2916360f96699b2bf42cf5e122562497">  229</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a2916360f96699b2bf42cf5e122562497">NETWORK_STATUS_JOINING</a>          </div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;} <a class="code" href="group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99">NetworkStatus</a>;</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;{</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;    <span class="keywordtype">int</span> size;</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    uint8_t *buffer;</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    uint8_t *ptr;</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    <span class="keywordtype">int</span> bytesPending;</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    <span class="keywordtype">bool</span> allocated;</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;} Buffer;</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;<span class="comment">// ----------------------------------------------------------------------------</span></div>
 <div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;</div>
-<div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ga5f6f5c916a5dd1676f98da7fa511451d">  236</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;{</div>
-<div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da2ac6866940725552e31532002ef649a5">  238</a></span>&#160;    <a class="code" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da2ac6866940725552e31532002ef649a5">NETWORK_JOIN_RESULT_NONE</a>,           </div>
-<div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabfbb179ad94f8d5a57a9da86de9c65a8">  239</a></span>&#160;    <a class="code" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabfbb179ad94f8d5a57a9da86de9c65a8">NETWORK_JOIN_RESULT_SUCCESS</a>,        </div>
-<div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da60569216928bd30142e2e143eaf58475">  240</a></span>&#160;    <a class="code" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da60569216928bd30142e2e143eaf58475">NETWORK_JOIN_RESULT_JOINING</a>,        </div>
-<div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daea6aa0a779a2823eadafa82dda6b7304">  241</a></span>&#160;    <a class="code" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daea6aa0a779a2823eadafa82dda6b7304">NETWORK_JOIN_RESULT_NO_SSID</a>,        </div>
-<div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da02f32115d4a39e6028e5ebb4944f0bec">  242</a></span>&#160;    <a class="code" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da02f32115d4a39e6028e5ebb4944f0bec">NETWORK_JOIN_RESULT_NO_PASSWORD</a>,    </div>
-<div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabb8da6425a24810668eade3488113957">  243</a></span>&#160;    <a class="code" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabb8da6425a24810668eade3488113957">NETWORK_JOIN_RESULT_BAD_SECURITY</a>,   </div>
-<div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da5c790fb0440c39d95ec785e1c31c3cb2">  244</a></span>&#160;    <a class="code" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da5c790fb0440c39d95ec785e1c31c3cb2">NETWORK_JOIN_RESULT_NOT_FOUND</a>,      </div>
-<div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da76b3ad647f00a3dc52e71e4ed670e7dc">  245</a></span>&#160;    <a class="code" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da76b3ad647f00a3dc52e71e4ed670e7dc">NETWORK_JOIN_RESULT_FAILED</a>,         </div>
-<div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daed880c261bae590a5f59aebb01b6912c">  246</a></span>&#160;    <a class="code" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daed880c261bae590a5f59aebb01b6912c">NETWORK_JOIN_RESULT_ABORTED</a>,        </div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;} <a class="code" href="group__api__network__types.html#ga5f6f5c916a5dd1676f98da7fa511451d">NetworkJoinResult</a>;</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;</div>
-<div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">  253</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;{</div>
-<div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2911018510263b4d6db772cf6ea69385">  255</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2911018510263b4d6db772cf6ea69385">NETWORK_RSSI_EXCELLENT</a>              = 0,    </div>
-<div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36ad77f98cf80b81d4c5277672402c0b713">  256</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36ad77f98cf80b81d4c5277672402c0b713">NETWORK_RSSI_VERY_GOOD</a>              = 1,    </div>
-<div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a5aa38a03f1ec4cdcdd1f0c41dfd19533">  257</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a5aa38a03f1ec4cdcdd1f0c41dfd19533">NETWORK_RSSI_GOOD</a>                   = 2,    </div>
-<div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2728fe7e544bee45b00ef95117085eae">  258</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2728fe7e544bee45b00ef95117085eae">NETWORK_RSSI_POOR</a>                   = 3,    </div>
-<div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36ab0e9cbbf4e2c6dee74d2639caef2cffa">  259</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36ab0e9cbbf4e2c6dee74d2639caef2cffa">NETWORK_RSSI_VERY_POOR</a>              = 4,    </div>
-<div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a095c1eef3bdeb16e33b1f6a976e9f6c4">  260</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a095c1eef3bdeb16e33b1f6a976e9f6c4">NETWORK_RSSI_UNKNOWN</a>                = 5     </div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;} <a class="code" href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">NetworkSignalStrength</a>;</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;</div>
+<div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99">  238</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;{</div>
+<div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6a4dd5a93528f27eb983bf856b9f5067">  240</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6a4dd5a93528f27eb983bf856b9f5067">NETWORK_STATUS_DOWN</a>,            </div>
+<div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a8e40c9f169976770c3e65b9c0e44874c">  241</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a8e40c9f169976770c3e65b9c0e44874c">NETWORK_STATUS_WIFI_ONLY</a>,       </div>
+<div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6d6f2fd76cab833e55bc398541c52b46">  242</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6d6f2fd76cab833e55bc398541c52b46">NETWORK_STATUS_UP</a>,              </div>
+<div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a2916360f96699b2bf42cf5e122562497">  243</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a2916360f96699b2bf42cf5e122562497">NETWORK_STATUS_JOINING</a>          </div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;} <a class="code" href="group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99">NetworkStatus</a>;</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;</div>
+<div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ga5f6f5c916a5dd1676f98da7fa511451d">  250</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;{</div>
+<div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da2ac6866940725552e31532002ef649a5">  252</a></span>&#160;    <a class="code" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da2ac6866940725552e31532002ef649a5">NETWORK_JOIN_RESULT_NONE</a>,           </div>
+<div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabfbb179ad94f8d5a57a9da86de9c65a8">  253</a></span>&#160;    <a class="code" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabfbb179ad94f8d5a57a9da86de9c65a8">NETWORK_JOIN_RESULT_SUCCESS</a>,        </div>
+<div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da60569216928bd30142e2e143eaf58475">  254</a></span>&#160;    <a class="code" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da60569216928bd30142e2e143eaf58475">NETWORK_JOIN_RESULT_JOINING</a>,        </div>
+<div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daea6aa0a779a2823eadafa82dda6b7304">  255</a></span>&#160;    <a class="code" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daea6aa0a779a2823eadafa82dda6b7304">NETWORK_JOIN_RESULT_NO_SSID</a>,        </div>
+<div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da02f32115d4a39e6028e5ebb4944f0bec">  256</a></span>&#160;    <a class="code" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da02f32115d4a39e6028e5ebb4944f0bec">NETWORK_JOIN_RESULT_NO_PASSWORD</a>,    </div>
+<div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabb8da6425a24810668eade3488113957">  257</a></span>&#160;    <a class="code" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabb8da6425a24810668eade3488113957">NETWORK_JOIN_RESULT_BAD_SECURITY</a>,   </div>
+<div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da5c790fb0440c39d95ec785e1c31c3cb2">  258</a></span>&#160;    <a class="code" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da5c790fb0440c39d95ec785e1c31c3cb2">NETWORK_JOIN_RESULT_NOT_FOUND</a>,      </div>
+<div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da76b3ad647f00a3dc52e71e4ed670e7dc">  259</a></span>&#160;    <a class="code" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da76b3ad647f00a3dc52e71e4ed670e7dc">NETWORK_JOIN_RESULT_FAILED</a>,         </div>
+<div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daed880c261bae590a5f59aebb01b6912c">  260</a></span>&#160;    <a class="code" href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daed880c261bae590a5f59aebb01b6912c">NETWORK_JOIN_RESULT_ABORTED</a>,        </div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;} <a class="code" href="group__api__network__types.html#ga5f6f5c916a5dd1676f98da7fa511451d">NetworkJoinResult</a>;</div>
 <div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;</div>
-<div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ga026bd11cd5df47b7022362243e2d553f">  267</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">  267</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
 <div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;{</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;    NETWORK_SECURITY_OPEN,</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    NETWORK_SECURITY_WEP_PSK,</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    NETWORK_SECURITY_WPA_AES_PSK,</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;    NETWORK_SECURITY_WPA_TKIP_PSK,</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;    NETWORK_SECURITY_WPA2_AES_PSK,</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;    NETWORK_SECURITY_WPA2_MIXED_PSK,</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;    NETWORK_SECURITY_WPA2_TKIP_PSK,</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    NETWORK_SECURITY_UNKNOWN</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;} <a class="code" href="group__api__network__types.html#ga026bd11cd5df47b7022362243e2d553f">NetworkSecurity</a>;</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;</div>
-<div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_ssid.html">  283</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;{</div>
-<div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_ssid.html#ab8b77bf8f59ef8c17d8f6e59f1ceab7a">  285</a></span>&#160;    uint8_t val[32];        </div>
-<div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_ssid.html#a7dd62e15567d9de9e9191f9aaba6a0a3">  286</a></span>&#160;    uint8_t <a class="code" href="structwiconnect_1_1_ssid.html#a7dd62e15567d9de9e9191f9aaba6a0a3">len</a>;            </div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;} <a class="code" href="structwiconnect_1_1_ssid.html">Ssid</a>;</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;</div>
-<div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_mac_address.html">  293</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;{</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    uint8_t octet[6];</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;} <a class="code" href="structwiconnect_1_1_mac_address.html">MacAddress</a>;</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;</div>
-<div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ga04b095d2e2f32a3fd23e346a4be969d8">  302</a></span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">char</span> <a class="code" href="group__api__network__types.html#ga04b095d2e2f32a3fd23e346a4be969d8">MacAddressStrBuffer</a>[18];</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;</div>
-<div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ga38e0a82235258f96340b9ce2c6e1426c">  308</a></span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">char</span> <a class="code" href="group__api__network__types.html#ga38e0a82235258f96340b9ce2c6e1426c">SsidStrBuffer</a>[129];</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;</div>
-<div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gaa68646bb07ee9f174097b60ac7327342">  314</a></span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">char</span> <a class="code" href="group__api__network__types.html#gaa68646bb07ee9f174097b60ac7327342">IpStrBuffer</a>[18];</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;<span class="comment">// ----------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;</div>
-<div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">  324</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;{</div>
-<div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da6469a1b9d8fa6448c0f6f13e0028a60e">  326</a></span>&#160;    <a class="code" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da6469a1b9d8fa6448c0f6f13e0028a60e">SOCKET_TYPE_UNKNOWN</a>,    </div>
-<div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756daece967eb28f8913c30bc70fa1e0e5ff9">  327</a></span>&#160;    <a class="code" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756daece967eb28f8913c30bc70fa1e0e5ff9">SOCKET_TYPE_TCP</a>,        </div>
-<div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da0c365c200e62d61bf22798c25ccb96b4">  328</a></span>&#160;    <a class="code" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da0c365c200e62d61bf22798c25ccb96b4">SOCKET_TYPE_TLS</a>,        </div>
-<div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756dab1b41b1c4daf8d171414b68e9033cfbc">  329</a></span>&#160;    <a class="code" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756dab1b41b1c4daf8d171414b68e9033cfbc">SOCKET_TYPE_UDP</a>,        </div>
-<div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751">  330</a></span>&#160;    <a class="code" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751">SOCKET_TYPE_HTTP</a>,       </div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;} <a class="code" href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">SocketType</a>;</div>
+<div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2911018510263b4d6db772cf6ea69385">  269</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2911018510263b4d6db772cf6ea69385">NETWORK_RSSI_EXCELLENT</a>              = 0,    </div>
+<div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36ad77f98cf80b81d4c5277672402c0b713">  270</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36ad77f98cf80b81d4c5277672402c0b713">NETWORK_RSSI_VERY_GOOD</a>              = 1,    </div>
+<div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a5aa38a03f1ec4cdcdd1f0c41dfd19533">  271</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a5aa38a03f1ec4cdcdd1f0c41dfd19533">NETWORK_RSSI_GOOD</a>                   = 2,    </div>
+<div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2728fe7e544bee45b00ef95117085eae">  272</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2728fe7e544bee45b00ef95117085eae">NETWORK_RSSI_POOR</a>                   = 3,    </div>
+<div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36ab0e9cbbf4e2c6dee74d2639caef2cffa">  273</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36ab0e9cbbf4e2c6dee74d2639caef2cffa">NETWORK_RSSI_VERY_POOR</a>              = 4,    </div>
+<div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a095c1eef3bdeb16e33b1f6a976e9f6c4">  274</a></span>&#160;    <a class="code" href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a095c1eef3bdeb16e33b1f6a976e9f6c4">NETWORK_RSSI_UNKNOWN</a>                = 5     </div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;} <a class="code" href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">NetworkSignalStrength</a>;</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;</div>
+<div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ga026bd11cd5df47b7022362243e2d553f">  281</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;{</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;    NETWORK_SECURITY_OPEN,</div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    NETWORK_SECURITY_WEP_PSK,</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    NETWORK_SECURITY_WPA_AES_PSK,</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;    NETWORK_SECURITY_WPA_TKIP_PSK,</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    NETWORK_SECURITY_WPA2_AES_PSK,</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    NETWORK_SECURITY_WPA2_MIXED_PSK,</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;    NETWORK_SECURITY_WPA2_TKIP_PSK,</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;    NETWORK_SECURITY_UNKNOWN</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;} <a class="code" href="group__api__network__types.html#ga026bd11cd5df47b7022362243e2d553f">NetworkSecurity</a>;</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;</div>
+<div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_ssid.html">  297</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;{</div>
+<div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_ssid.html#ab8b77bf8f59ef8c17d8f6e59f1ceab7a">  299</a></span>&#160;    uint8_t val[32];        </div>
+<div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_ssid.html#a7dd62e15567d9de9e9191f9aaba6a0a3">  300</a></span>&#160;    uint8_t <a class="code" href="structwiconnect_1_1_ssid.html#a7dd62e15567d9de9e9191f9aaba6a0a3">len</a>;            </div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;} <a class="code" href="structwiconnect_1_1_ssid.html">Ssid</a>;</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;</div>
+<div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_mac_address.html">  307</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;{</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    uint8_t octet[6];</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;} <a class="code" href="structwiconnect_1_1_mac_address.html">MacAddress</a>;</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;</div>
+<div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ga04b095d2e2f32a3fd23e346a4be969d8">  316</a></span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">char</span> <a class="code" href="group__api__network__types.html#ga04b095d2e2f32a3fd23e346a4be969d8">MacAddressStrBuffer</a>[18];</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;</div>
+<div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="group__api__network__types.html#ga38e0a82235258f96340b9ce2c6e1426c">  322</a></span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">char</span> <a class="code" href="group__api__network__types.html#ga38e0a82235258f96340b9ce2c6e1426c">SsidStrBuffer</a>[129];</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;</div>
+<div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="group__api__network__types.html#gaa68646bb07ee9f174097b60ac7327342">  328</a></span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">char</span> <a class="code" href="group__api__network__types.html#gaa68646bb07ee9f174097b60ac7327342">IpStrBuffer</a>[18];</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;<span class="comment">// ----------------------------------------------------------------------------</span></div>
 <div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;</div>
-<div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#gadc1d6e26d4138c536bd5dce7ed4569d6">  337</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;{</div>
-<div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6afc257aa28936e9fa8a332995b5449685">  339</a></span>&#160;    <a class="code" href="group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6afc257aa28936e9fa8a332995b5449685">SOCKET_HTTP_GET</a>,        </div>
-<div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6ab271a5cd1775076aeb8c25fc14da12cb">  340</a></span>&#160;    <a class="code" href="group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6ab271a5cd1775076aeb8c25fc14da12cb">SOCKET_HTTP_POST</a>,       </div>
-<div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6a6d256a218aac67dffe66ae6c49a61236">  341</a></span>&#160;    <a class="code" href="group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6a6d256a218aac67dffe66ae6c49a61236">SOCKET_HTTP_HEAD</a>,       </div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;} <a class="code" href="group__api__socket__types.html#gadc1d6e26d4138c536bd5dce7ed4569d6">HttpSocketType</a>;</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;</div>
-<div class="line"><a name="l00348"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_http_socket_args.html">  348</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;{</div>
-<div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_http_socket_args.html#a401fd2b9a75ec8c76d59bd798d36e25b">  350</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structwiconnect_1_1_http_socket_args.html#a401fd2b9a75ec8c76d59bd798d36e25b">contextType</a>;    </div>
-<div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_http_socket_args.html#a6dda2d739bd2c43d1b63d7a526ecf95c">  351</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structwiconnect_1_1_http_socket_args.html#a6dda2d739bd2c43d1b63d7a526ecf95c">certName</a>;       </div>
-<div class="line"><a name="l00352"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_http_socket_args.html#a57564bc3fed87b9ab2d3f4fff3d2dc24">  352</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="structwiconnect_1_1_http_socket_args.html#a57564bc3fed87b9ab2d3f4fff3d2dc24">openOnly</a>;              </div>
-<div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_http_socket_args.html#adffa0b3f63392a28c19aef272c918772">  353</a></span>&#160;    <a class="code" href="group__api__socket__types.html#gadc1d6e26d4138c536bd5dce7ed4569d6">HttpSocketType</a> <a class="code" href="structwiconnect_1_1_http_socket_args.html#adffa0b3f63392a28c19aef272c918772">type</a>;        </div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;} <a class="code" href="structwiconnect_1_1_http_socket_args.html">HttpSocketArgs</a>;</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;<span class="comment">// ----------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;</div>
+<div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">  338</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;{</div>
+<div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da6469a1b9d8fa6448c0f6f13e0028a60e">  340</a></span>&#160;    <a class="code" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da6469a1b9d8fa6448c0f6f13e0028a60e">SOCKET_TYPE_UNKNOWN</a>,    </div>
+<div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756daece967eb28f8913c30bc70fa1e0e5ff9">  341</a></span>&#160;    <a class="code" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756daece967eb28f8913c30bc70fa1e0e5ff9">SOCKET_TYPE_TCP</a>,        </div>
+<div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da0c365c200e62d61bf22798c25ccb96b4">  342</a></span>&#160;    <a class="code" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da0c365c200e62d61bf22798c25ccb96b4">SOCKET_TYPE_TLS</a>,        </div>
+<div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756dab1b41b1c4daf8d171414b68e9033cfbc">  343</a></span>&#160;    <a class="code" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756dab1b41b1c4daf8d171414b68e9033cfbc">SOCKET_TYPE_UDP</a>,        </div>
+<div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751">  344</a></span>&#160;    <a class="code" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751">SOCKET_TYPE_HTTP</a>,       </div>
+<div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da77625728d545a400e0eae1483225ff91">  345</a></span>&#160;    <a class="code" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da77625728d545a400e0eae1483225ff91">SOCKET_TYPE_UDPS</a>,       </div>
+<div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da94c82597ad724e81c0bace9ed64ebc5f">  346</a></span>&#160;    <a class="code" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da94c82597ad724e81c0bace9ed64ebc5f">SOCKET_TYPE_GHM</a>,        </div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;} <a class="code" href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">SocketType</a>;</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;</div>
+<div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#gadc1d6e26d4138c536bd5dce7ed4569d6">  353</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;{</div>
+<div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6afc257aa28936e9fa8a332995b5449685">  355</a></span>&#160;    <a class="code" href="group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6afc257aa28936e9fa8a332995b5449685">SOCKET_HTTP_GET</a>,        </div>
+<div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6ab271a5cd1775076aeb8c25fc14da12cb">  356</a></span>&#160;    <a class="code" href="group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6ab271a5cd1775076aeb8c25fc14da12cb">SOCKET_HTTP_POST</a>,       </div>
+<div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6a6d256a218aac67dffe66ae6c49a61236">  357</a></span>&#160;    <a class="code" href="group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6a6d256a218aac67dffe66ae6c49a61236">SOCKET_HTTP_HEAD</a>,       </div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;} <a class="code" href="group__api__socket__types.html#gadc1d6e26d4138c536bd5dce7ed4569d6">HttpSocketType</a>;</div>
 <div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;</div>
-<div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gafbe48908f5c190c3b0f272d3016e609e">  364</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
+<div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_http_socket_args.html">  364</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
 <div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;{</div>
-<div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eac40bade251c1d671283d3ab2515725a6">  366</a></span>&#160;    <a class="code" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eac40bade251c1d671283d3ab2515725a6">FILE_FLAG_NONE</a>          = 0,            </div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;</div>
-<div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaff56da02ac3626bf5636e0aa6ffff78a">  368</a></span>&#160;    <a class="code" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaff56da02ac3626bf5636e0aa6ffff78a">FILE_FLAG_VALID</a>         = (1 &lt;&lt; 0),     </div>
-<div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea94ddbab88df5f29013d5deb3f3d092c5">  369</a></span>&#160;    <a class="code" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea94ddbab88df5f29013d5deb3f3d092c5">FILE_FLAG_EXECUTABLE</a>    = (1 &lt;&lt; 1),     </div>
-<div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea07f098f34c015d1c81d7592b476312e6">  370</a></span>&#160;    <a class="code" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea07f098f34c015d1c81d7592b476312e6">FILE_FLAG_ENCRYPTED</a>     = (1 &lt;&lt; 2),     </div>
-<div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaad3ddfddf9e28a26df73b689e0898df0">  371</a></span>&#160;    <a class="code" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaad3ddfddf9e28a26df73b689e0898df0">FILE_FLAG_INTERNAL</a>      = (1 &lt;&lt; 3),     </div>
-<div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaffe90e6784ad43acffbf823502a6a7bf">  372</a></span>&#160;    <a class="code" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaffe90e6784ad43acffbf823502a6a7bf">FILE_FLAG_BOOTABLE</a>      = (1 &lt;&lt; 4),     </div>
-<div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea3864357fd0b63b4cd6594d00c2194ca8">  373</a></span>&#160;    <a class="code" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea3864357fd0b63b4cd6594d00c2194ca8">FILE_FLAG_USER</a>          = (1 &lt;&lt; 5),     </div>
-<div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaa74f44cd76d69e9f32d70a2b13c8c4e2">  374</a></span>&#160;    <a class="code" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaa74f44cd76d69e9f32d70a2b13c8c4e2">FILE_FLAG_ESSENTIAL</a>     = (1 &lt;&lt; 6),     </div>
+<div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_http_socket_args.html#a401fd2b9a75ec8c76d59bd798d36e25b">  366</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structwiconnect_1_1_http_socket_args.html#a401fd2b9a75ec8c76d59bd798d36e25b">contextType</a>;    </div>
+<div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_http_socket_args.html#a6dda2d739bd2c43d1b63d7a526ecf95c">  367</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structwiconnect_1_1_http_socket_args.html#a6dda2d739bd2c43d1b63d7a526ecf95c">certName</a>;       </div>
+<div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_http_socket_args.html#a57564bc3fed87b9ab2d3f4fff3d2dc24">  368</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="structwiconnect_1_1_http_socket_args.html#a57564bc3fed87b9ab2d3f4fff3d2dc24">openOnly</a>;              </div>
+<div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_http_socket_args.html#adffa0b3f63392a28c19aef272c918772">  369</a></span>&#160;    <a class="code" href="group__api__socket__types.html#gadc1d6e26d4138c536bd5dce7ed4569d6">HttpSocketType</a> <a class="code" href="structwiconnect_1_1_http_socket_args.html#adffa0b3f63392a28c19aef272c918772">type</a>;        </div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;} <a class="code" href="structwiconnect_1_1_http_socket_args.html">HttpSocketArgs</a>;</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;<span class="comment">// ----------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;</div>
 <div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;</div>
-<div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea21f35fd8f0a4e38d91d5d1f5c5cc977f">  376</a></span>&#160;    <a class="code" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea21f35fd8f0a4e38d91d5d1f5c5cc977f">FILE_FLAG_INVALID</a>       = 0xFFFF        </div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;} <a class="code" href="group__api__file__types.html#gafbe48908f5c190c3b0f272d3016e609e">FileFlags</a>;</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;</div>
-<div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ga9919a4237eea2b0d1f27c16d64e62c63">  383</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;{</div>
-<div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63ac2bf941d4f7f23cabf7c781c5741dc04">  385</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63ac2bf941d4f7f23cabf7c781c5741dc04">FILE_TYPE_UPGRADE_APP</a>   = 0x00,         </div>
-<div class="line"><a name="l00386"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63ad127cd0d4eeefee993a24b4d5095bfe7">  386</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63ad127cd0d4eeefee993a24b4d5095bfe7">FILE_TYPE_WIFI_FW</a>       = 0x01,         </div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;</div>
-<div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a681a5a935adbd3aefdbb3639c36a4169">  388</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a681a5a935adbd3aefdbb3639c36a4169">FILE_TYPE_REGULAR_APP</a>   = 0x81,         </div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;</div>
-<div class="line"><a name="l00390"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a2271e7ab227bf95699c260a258902eeb">  390</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a2271e7ab227bf95699c260a258902eeb">FILE_TYPE_USER_RANGE_START</a> = 150,       </div>
-<div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a2958dab5107b78cd1c14400770ab9b4e">  391</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a2958dab5107b78cd1c14400770ab9b4e">FILE_TYPE_USER_RANGE_END</a> = 199,         </div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;</div>
-<div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63aaa4d15bf30361c1026fe15e029e9c3e2">  393</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63aaa4d15bf30361c1026fe15e029e9c3e2">FILE_TYPE_TEMPORY</a>       = 0xF9,         </div>
-<div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a5df6fc01411942aabcf83731d0d02d52">  394</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a5df6fc01411942aabcf83731d0d02d52">FILE_TYPE_GPIO_CONFIG</a>   = 0xFA,         </div>
-<div class="line"><a name="l00395"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a35624c078c19b7b632d832d15c0d1ef0">  395</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a35624c078c19b7b632d832d15c0d1ef0">FILE_TYPE_COMMAND_HELP</a>  = 0xFB,         </div>
-<div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a244c4ea312de84a2f4cabaff386fcffd">  396</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a244c4ea312de84a2f4cabaff386fcffd">FILE_TYPE_SDC_CAPS</a>      = 0xFC,         </div>
-<div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63afd6c376410552b54187a162e2c6fdad2">  397</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63afd6c376410552b54187a162e2c6fdad2">FILE_TYPE_SETUP_SCRIPT</a>  = 0xFD,         </div>
-<div class="line"><a name="l00398"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a2508195aa2793d49c5c6a24879b52206">  398</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a2508195aa2793d49c5c6a24879b52206">FILE_TYPE_MISC_FIX_LEN</a>  = 0xFE,         </div>
-<div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a077782e07756b6dc93f96e9a0cca5c9e">  399</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a077782e07756b6dc93f96e9a0cca5c9e">FILE_TYPE_UNKNOWN</a>       = 0xFF,         </div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;    FILE_TYPE_ANY           = <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a077782e07756b6dc93f96e9a0cca5c9e">FILE_TYPE_UNKNOWN</a></div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;} <a class="code" href="group__api__file__types.html#ga9919a4237eea2b0d1f27c16d64e62c63">FileType</a>;</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;</div>
+<div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gafbe48908f5c190c3b0f272d3016e609e">  380</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;{</div>
+<div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eac40bade251c1d671283d3ab2515725a6">  382</a></span>&#160;    <a class="code" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eac40bade251c1d671283d3ab2515725a6">FILE_FLAG_NONE</a>          = 0,            </div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;</div>
+<div class="line"><a name="l00384"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaff56da02ac3626bf5636e0aa6ffff78a">  384</a></span>&#160;    <a class="code" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaff56da02ac3626bf5636e0aa6ffff78a">FILE_FLAG_VALID</a>         = (1 &lt;&lt; 0),     </div>
+<div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea94ddbab88df5f29013d5deb3f3d092c5">  385</a></span>&#160;    <a class="code" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea94ddbab88df5f29013d5deb3f3d092c5">FILE_FLAG_EXECUTABLE</a>    = (1 &lt;&lt; 1),     </div>
+<div class="line"><a name="l00386"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea07f098f34c015d1c81d7592b476312e6">  386</a></span>&#160;    <a class="code" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea07f098f34c015d1c81d7592b476312e6">FILE_FLAG_ENCRYPTED</a>     = (1 &lt;&lt; 2),     </div>
+<div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaad3ddfddf9e28a26df73b689e0898df0">  387</a></span>&#160;    <a class="code" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaad3ddfddf9e28a26df73b689e0898df0">FILE_FLAG_INTERNAL</a>      = (1 &lt;&lt; 3),     </div>
+<div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaffe90e6784ad43acffbf823502a6a7bf">  388</a></span>&#160;    <a class="code" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaffe90e6784ad43acffbf823502a6a7bf">FILE_FLAG_BOOTABLE</a>      = (1 &lt;&lt; 4),     </div>
+<div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea3864357fd0b63b4cd6594d00c2194ca8">  389</a></span>&#160;    <a class="code" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea3864357fd0b63b4cd6594d00c2194ca8">FILE_FLAG_USER</a>          = (1 &lt;&lt; 5),     </div>
+<div class="line"><a name="l00390"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaa74f44cd76d69e9f32d70a2b13c8c4e2">  390</a></span>&#160;    <a class="code" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaa74f44cd76d69e9f32d70a2b13c8c4e2">FILE_FLAG_ESSENTIAL</a>     = (1 &lt;&lt; 6),     </div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;</div>
+<div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea21f35fd8f0a4e38d91d5d1f5c5cc977f">  392</a></span>&#160;    <a class="code" href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea21f35fd8f0a4e38d91d5d1f5c5cc977f">FILE_FLAG_INVALID</a>       = 0xFFFF        </div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;} <a class="code" href="group__api__file__types.html#gafbe48908f5c190c3b0f272d3016e609e">FileFlags</a>;</div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;</div>
+<div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="group__api__file__types.html#ga9919a4237eea2b0d1f27c16d64e62c63">  399</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;{</div>
+<div class="line"><a name="l00401"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63ac2bf941d4f7f23cabf7c781c5741dc04">  401</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63ac2bf941d4f7f23cabf7c781c5741dc04">FILE_TYPE_UPGRADE_APP</a>   = 0x00,         </div>
+<div class="line"><a name="l00402"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63ad127cd0d4eeefee993a24b4d5095bfe7">  402</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63ad127cd0d4eeefee993a24b4d5095bfe7">FILE_TYPE_WIFI_FW</a>       = 0x01,         </div>
 <div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;<span class="comment">// Forward declarations</span></div>
+<div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a681a5a935adbd3aefdbb3639c36a4169">  404</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a681a5a935adbd3aefdbb3639c36a4169">FILE_TYPE_REGULAR_APP</a>   = 0x81,         </div>
 <div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;<span class="keyword">class </span>Wiconnect;</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;<span class="keyword">class </span>TimeoutTimer;</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;<span class="keyword">class </span>PeriodicTimer;</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;<span class="keyword">class </span>QueuedCommand;</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;<span class="keyword">class </span>CommandQueue;</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;<span class="keyword">class </span>LogFunc;</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;<span class="keyword">class </span>ReaderFunc;</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;<span class="keyword">class </span>Callback;</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;<span class="keyword">class </span>ScanResult;</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;<span class="keyword">class </span>ScanResultList;</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;<span class="keyword">class </span>WiconnectSocket;</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;<span class="keyword">class </span>WiconnectSerial;</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;<span class="keyword">class </span>WiconnectFile;</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;<span class="keyword">class </span>FileList;</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;<span class="keyword">class </span>Gpio;</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;<span class="keyword">class </span>SocketIrqHandlerMap;</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;}</div>
-<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63a2508195aa2793d49c5c6a24879b52206"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a2508195aa2793d49c5c6a24879b52206">wiconnect::FILE_TYPE_MISC_FIX_LEN</a></div><div class="ttdoc">Miscellaneous fixed length file. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00398">WiconnectTypes.h:398</a></div></div>
-<div class="ttc" id="structwiconnect_1_1_ssid_html_a7dd62e15567d9de9e9191f9aaba6a0a3"><div class="ttname"><a href="structwiconnect_1_1_ssid.html#a7dd62e15567d9de9e9191f9aaba6a0a3">wiconnect::Ssid::len</a></div><div class="ttdeci">uint8_t len</div><div class="ttdoc">The length in bytes of the SSID raw data. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00286">WiconnectTypes.h:286</a></div></div>
-<div class="ttc" id="group__api__socket__types_html_ga69dc55558df4c81599c5fb3dff98756d"><div class="ttname"><a href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">wiconnect::SocketType</a></div><div class="ttdeci">SocketType</div><div class="ttdoc">Socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00324">WiconnectTypes.h:324</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05acfd6d3c1efd03fae8cd443bc01bca8d6"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05acfd6d3c1efd03fae8cd443bc01bca8d6">wiconnect::WICONNECT_ERROR</a></div><div class="ttdoc">Generic error. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00168">WiconnectTypes.h:168</a></div></div>
-<div class="ttc" id="group__api__network__types_html_gga5f6f5c916a5dd1676f98da7fa511451dabb8da6425a24810668eade3488113957"><div class="ttname"><a href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabb8da6425a24810668eade3488113957">wiconnect::NETWORK_JOIN_RESULT_BAD_SECURITY</a></div><div class="ttdoc">The specified security type is not supported by the network. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00243">WiconnectTypes.h:243</a></div></div>
-<div class="ttc" id="group__api__network__types_html_ggab448e57fc1a5e21cbba0283fd1a35d99a6d6f2fd76cab833e55bc398541c52b46"><div class="ttname"><a href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6d6f2fd76cab833e55bc398541c52b46">wiconnect::NETWORK_STATUS_UP</a></div><div class="ttdoc">Conntected to network and have IP address. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00228">WiconnectTypes.h:228</a></div></div>
-<div class="ttc" id="group__api__network__types_html_ga026bd11cd5df47b7022362243e2d553f"><div class="ttname"><a href="group__api__network__types.html#ga026bd11cd5df47b7022362243e2d553f">wiconnect::NetworkSecurity</a></div><div class="ttdeci">NetworkSecurity</div><div class="ttdoc">Network security type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00267">WiconnectTypes.h:267</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a25c48e037bc3615840b81461db6385b5"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a25c48e037bc3615840b81461db6385b5">wiconnect::WICONNECT_NULL_BUFFER</a></div><div class="ttdoc">Null buffer supplied. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00170">WiconnectTypes.h:170</a></div></div>
-<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63a2958dab5107b78cd1c14400770ab9b4e"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a2958dab5107b78cd1c14400770ab9b4e">wiconnect::FILE_TYPE_USER_RANGE_END</a></div><div class="ttdoc">User type end index. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00391">WiconnectTypes.h:391</a></div></div>
-<div class="ttc" id="namespacewiconnect_html_aadd4d5e6774e21f382c20b594a644470"><div class="ttname"><a href="namespacewiconnect.html#aadd4d5e6774e21f382c20b594a644470">wiconnect::PinToGpioMapper</a></div><div class="ttdeci">int8_t(* PinToGpioMapper)(Pin pin)</div><div class="ttdoc">Function pointer for mapping from a host pin to a WiConnect Module GPIO. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00199">WiconnectTypes.h:199</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a376da897f3a629fd71abd9db9f4cea83"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a376da897f3a629fd71abd9db9f4cea83">wiconnect::WICONNECT_ANOTHER_CMD_EXECUTING</a></div><div class="ttdoc">Currently executing another command. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00176">WiconnectTypes.h:176</a></div></div>
-<div class="ttc" id="group__api__network__types_html_ggac5aead2b4cca0122a60168e75ea41d36ab0e9cbbf4e2c6dee74d2639caef2cffa"><div class="ttname"><a href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36ab0e9cbbf4e2c6dee74d2639caef2cffa">wiconnect::NETWORK_RSSI_VERY_POOR</a></div><div class="ttdoc">< -71 dBm </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00259">WiconnectTypes.h:259</a></div></div>
-<div class="ttc" id="structwiconnect_1_1_http_socket_args_html_a401fd2b9a75ec8c76d59bd798d36e25b"><div class="ttname"><a href="structwiconnect_1_1_http_socket_args.html#a401fd2b9a75ec8c76d59bd798d36e25b">wiconnect::HttpSocketArgs::contextType</a></div><div class="ttdeci">const char * contextType</div><div class="ttdoc">A POST Request &#39;context-type&#39; value. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00350">WiconnectTypes.h:350</a></div></div>
-<div class="ttc" id="group__api__socket__types_html_gga69dc55558df4c81599c5fb3dff98756daece967eb28f8913c30bc70fa1e0e5ff9"><div class="ttname"><a href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756daece967eb28f8913c30bc70fa1e0e5ff9">wiconnect::SOCKET_TYPE_TCP</a></div><div class="ttdoc">TCP Socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00327">WiconnectTypes.h:327</a></div></div>
-<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63ad127cd0d4eeefee993a24b4d5095bfe7"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63ad127cd0d4eeefee993a24b4d5095bfe7">wiconnect::FILE_TYPE_WIFI_FW</a></div><div class="ttdoc">Wifi firmware binary. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00386">WiconnectTypes.h:386</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05ae6a9fb0c6333a0431e5775da996087ac"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ae6a9fb0c6333a0431e5775da996087ac">wiconnect::WICONNECT_TIMEOUT</a></div><div class="ttdoc">Command timed out. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00173">WiconnectTypes.h:173</a></div></div>
-<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00159">WiconnectTypes.h:159</a></div></div>
-<div class="ttc" id="group__api__file__types_html_ggafbe48908f5c190c3b0f272d3016e609ea21f35fd8f0a4e38d91d5d1f5c5cc977f"><div class="ttname"><a href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea21f35fd8f0a4e38d91d5d1f5c5cc977f">wiconnect::FILE_FLAG_INVALID</a></div><div class="ttdoc">File flags invalid. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00376">WiconnectTypes.h:376</a></div></div>
-<div class="ttc" id="group__api__network__types_html_gga5f6f5c916a5dd1676f98da7fa511451da2ac6866940725552e31532002ef649a5"><div class="ttname"><a href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da2ac6866940725552e31532002ef649a5">wiconnect::NETWORK_JOIN_RESULT_NONE</a></div><div class="ttdoc">Haven&#39;t attempted to join. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00238">WiconnectTypes.h:238</a></div></div>
-<div class="ttc" id="structwiconnect_1_1_mac_address_html"><div class="ttname"><a href="structwiconnect_1_1_mac_address.html">wiconnect::MacAddress</a></div><div class="ttdoc">Network MAC Address type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00293">WiconnectTypes.h:293</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05ab9123e9628c3156f34c44913a72b4195"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab9123e9628c3156f34c44913a72b4195">wiconnect::WICONNECT_NOT_FOUND</a></div><div class="ttdoc">Not found. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00181">WiconnectTypes.h:181</a></div></div>
-<div class="ttc" id="group__api__socket__types_html_gga69dc55558df4c81599c5fb3dff98756dab1b41b1c4daf8d171414b68e9033cfbc"><div class="ttname"><a href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756dab1b41b1c4daf8d171414b68e9033cfbc">wiconnect::SOCKET_TYPE_UDP</a></div><div class="ttdoc">UDP Socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00329">WiconnectTypes.h:329</a></div></div>
-<div class="ttc" id="group__api__socket__types_html_gadc1d6e26d4138c536bd5dce7ed4569d6"><div class="ttname"><a href="group__api__socket__types.html#gadc1d6e26d4138c536bd5dce7ed4569d6">wiconnect::HttpSocketType</a></div><div class="ttdeci">HttpSocketType</div><div class="ttdoc">HTTP Socket sub-type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00337">WiconnectTypes.h:337</a></div></div>
-<div class="ttc" id="group__api__network__types_html_gga5f6f5c916a5dd1676f98da7fa511451daed880c261bae590a5f59aebb01b6912c"><div class="ttname"><a href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daed880c261bae590a5f59aebb01b6912c">wiconnect::NETWORK_JOIN_RESULT_ABORTED</a></div><div class="ttdoc">Joining was aborted (via command) </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00246">WiconnectTypes.h:246</a></div></div>
-<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63a2271e7ab227bf95699c260a258902eeb"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a2271e7ab227bf95699c260a258902eeb">wiconnect::FILE_TYPE_USER_RANGE_START</a></div><div class="ttdoc">User type start index. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00390">WiconnectTypes.h:390</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a289d83a8cf2d1e1f272134d8268925c0"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a289d83a8cf2d1e1f272134d8268925c0">wiconnect::WICONNECT_PROCESSING</a></div><div class="ttdoc">Library processing current command. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00164">WiconnectTypes.h:164</a></div></div>
-<div class="ttc" id="group__api__network__types_html_ggac5aead2b4cca0122a60168e75ea41d36a095c1eef3bdeb16e33b1f6a976e9f6c4"><div class="ttname"><a href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a095c1eef3bdeb16e33b1f6a976e9f6c4">wiconnect::NETWORK_RSSI_UNKNOWN</a></div><div class="ttdoc">Not available. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00260">WiconnectTypes.h:260</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a7d4f9bd8b2b8ccc2ad902271e5241b02"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a7d4f9bd8b2b8ccc2ad902271e5241b02">wiconnect::WICONNECT_UNDERFLOW</a></div><div class="ttdoc">Data underflow. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00184">WiconnectTypes.h:184</a></div></div>
-<div class="ttc" id="group__api__network__types_html_ggab448e57fc1a5e21cbba0283fd1a35d99a6a4dd5a93528f27eb983bf856b9f5067"><div class="ttname"><a href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6a4dd5a93528f27eb983bf856b9f5067">wiconnect::NETWORK_STATUS_DOWN</a></div><div class="ttdoc">Not connected to network. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00226">WiconnectTypes.h:226</a></div></div>
-<div class="ttc" id="group__api__network__types_html_ga38e0a82235258f96340b9ce2c6e1426c"><div class="ttname"><a href="group__api__network__types.html#ga38e0a82235258f96340b9ce2c6e1426c">wiconnect::SsidStrBuffer</a></div><div class="ttdeci">char SsidStrBuffer[129]</div><div class="ttdoc">Buffer to hold a SSID string. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00308">WiconnectTypes.h:308</a></div></div>
-<div class="ttc" id="group__api__network__types_html_ggab448e57fc1a5e21cbba0283fd1a35d99a8e40c9f169976770c3e65b9c0e44874c"><div class="ttname"><a href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a8e40c9f169976770c3e65b9c0e44874c">wiconnect::NETWORK_STATUS_WIFI_ONLY</a></div><div class="ttdoc">Connected to network but don&#39;t have IP address. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00227">WiconnectTypes.h:227</a></div></div>
-<div class="ttc" id="group__api__file__types_html_ggafbe48908f5c190c3b0f272d3016e609eac40bade251c1d671283d3ab2515725a6"><div class="ttname"><a href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eac40bade251c1d671283d3ab2515725a6">wiconnect::FILE_FLAG_NONE</a></div><div class="ttdoc">No flags. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00366">WiconnectTypes.h:366</a></div></div>
-<div class="ttc" id="group__api__socket__types_html_gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751"><div class="ttname"><a href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751">wiconnect::SOCKET_TYPE_HTTP</a></div><div class="ttdoc">HTTP Socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00330">WiconnectTypes.h:330</a></div></div>
-<div class="ttc" id="group__api__network__types_html_ga04b095d2e2f32a3fd23e346a4be969d8"><div class="ttname"><a href="group__api__network__types.html#ga04b095d2e2f32a3fd23e346a4be969d8">wiconnect::MacAddressStrBuffer</a></div><div class="ttdeci">char MacAddressStrBuffer[18]</div><div class="ttdoc">Buffer to hold a MAC address string. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00302">WiconnectTypes.h:302</a></div></div>
-<div class="ttc" id="group__api__socket__types_html_ggadc1d6e26d4138c536bd5dce7ed4569d6a6d256a218aac67dffe66ae6c49a61236"><div class="ttname"><a href="group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6a6d256a218aac67dffe66ae6c49a61236">wiconnect::SOCKET_HTTP_HEAD</a></div><div class="ttdoc">HTTP HEAD Request socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00341">WiconnectTypes.h:341</a></div></div>
-<div class="ttc" id="group__api__file__types_html_ggafbe48908f5c190c3b0f272d3016e609eaffe90e6784ad43acffbf823502a6a7bf"><div class="ttname"><a href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaffe90e6784ad43acffbf823502a6a7bf">wiconnect::FILE_FLAG_BOOTABLE</a></div><div class="ttdoc">File bootable. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00372">WiconnectTypes.h:372</a></div></div>
-<div class="ttc" id="group__api__file__types_html_ggafbe48908f5c190c3b0f272d3016e609ea07f098f34c015d1c81d7592b476312e6"><div class="ttname"><a href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea07f098f34c015d1c81d7592b476312e6">wiconnect::FILE_FLAG_ENCRYPTED</a></div><div class="ttdoc">File encrypted. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00370">WiconnectTypes.h:370</a></div></div>
-<div class="ttc" id="group__api__network__types_html_gga5f6f5c916a5dd1676f98da7fa511451da5c790fb0440c39d95ec785e1c31c3cb2"><div class="ttname"><a href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da5c790fb0440c39d95ec785e1c31c3cb2">wiconnect::NETWORK_JOIN_RESULT_NOT_FOUND</a></div><div class="ttdoc">The network with the configured SSID was not found. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00244">WiconnectTypes.h:244</a></div></div>
-<div class="ttc" id="group__api__network__types_html_ggac5aead2b4cca0122a60168e75ea41d36ad77f98cf80b81d4c5277672402c0b713"><div class="ttname"><a href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36ad77f98cf80b81d4c5277672402c0b713">wiconnect::NETWORK_RSSI_VERY_GOOD</a></div><div class="ttdoc">> -35 dBm </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00256">WiconnectTypes.h:256</a></div></div>
-<div class="ttc" id="group__api__file__types_html_ga9919a4237eea2b0d1f27c16d64e62c63"><div class="ttname"><a href="group__api__file__types.html#ga9919a4237eea2b0d1f27c16d64e62c63">wiconnect::FileType</a></div><div class="ttdeci">FileType</div><div class="ttdoc">File type type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00383">WiconnectTypes.h:383</a></div></div>
-<div class="ttc" id="group__api__core__types_html_ga1cf4dfa71da0b0dc3dc707dacf56cc9c"><div class="ttname"><a href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">wiconnect::Pin</a></div><div class="ttdeci">PinName Pin</div><div class="ttdoc">Pin name on HOST. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00123">sdk.h:123</a></div></div>
-<div class="ttc" id="group__api__network__types_html_gga5f6f5c916a5dd1676f98da7fa511451daea6aa0a779a2823eadafa82dda6b7304"><div class="ttname"><a href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daea6aa0a779a2823eadafa82dda6b7304">wiconnect::NETWORK_JOIN_RESULT_NO_SSID</a></div><div class="ttdoc">The SSID has not be configured. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00241">WiconnectTypes.h:241</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05ab18f839c77a6a1f964c096980ef24adc"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab18f839c77a6a1f964c096980ef24adc">wiconnect::WICONNECT_UNSUPPORTED</a></div><div class="ttdoc">Command / parameter not supported. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00178">WiconnectTypes.h:178</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05afea61b8f5d17f6be2aee2ce5b6bb7c43"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05afea61b8f5d17f6be2aee2ce5b6bb7c43">wiconnect::WICONNECT_NOT_INITIALIZED</a></div><div class="ttdoc">Library not initialed. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00171">WiconnectTypes.h:171</a></div></div>
-<div class="ttc" id="group__api__file__types_html_ggafbe48908f5c190c3b0f272d3016e609ea3864357fd0b63b4cd6594d00c2194ca8"><div class="ttname"><a href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea3864357fd0b63b4cd6594d00c2194ca8">wiconnect::FILE_FLAG_USER</a></div><div class="ttdoc">File created by user. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00373">WiconnectTypes.h:373</a></div></div>
-<div class="ttc" id="group__api__network__types_html_gga5f6f5c916a5dd1676f98da7fa511451da02f32115d4a39e6028e5ebb4944f0bec"><div class="ttname"><a href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da02f32115d4a39e6028e5ebb4944f0bec">wiconnect::NETWORK_JOIN_RESULT_NO_PASSWORD</a></div><div class="ttdoc">The network requires a password and none has been set. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00242">WiconnectTypes.h:242</a></div></div>
-<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63afd6c376410552b54187a162e2c6fdad2"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63afd6c376410552b54187a162e2c6fdad2">wiconnect::FILE_TYPE_SETUP_SCRIPT</a></div><div class="ttdoc">Setup script file. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00397">WiconnectTypes.h:397</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a28240905349a60a6b52bddbbd152ea5e"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a28240905349a60a6b52bddbbd152ea5e">wiconnect::WICONNECT_MONITOR_NOT_AVAILABLE</a></div><div class="ttdoc">Background processing monitor is not available (i.e in use) </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00185">WiconnectTypes.h:185</a></div></div>
-<div class="ttc" id="group__api__file__types_html_ggafbe48908f5c190c3b0f272d3016e609eaff56da02ac3626bf5636e0aa6ffff78a"><div class="ttname"><a href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaff56da02ac3626bf5636e0aa6ffff78a">wiconnect::FILE_FLAG_VALID</a></div><div class="ttdoc">File valid. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00368">WiconnectTypes.h:368</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05ae96c2edcdade2809cdb60a8a5b0983fa"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ae96c2edcdade2809cdb60a8a5b0983fa">wiconnect::WICONNECT_BAD_ARG</a></div><div class="ttdoc">Bad argument supplied. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00177">WiconnectTypes.h:177</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a5bff05280d726da505c6e6ec2f085bd1"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5bff05280d726da505c6e6ec2f085bd1">wiconnect::WICONNECT_IDLE</a></div><div class="ttdoc">Library not processing any commands. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00163">WiconnectTypes.h:163</a></div></div>
-<div class="ttc" id="group__api__socket__types_html_ggadc1d6e26d4138c536bd5dce7ed4569d6ab271a5cd1775076aeb8c25fc14da12cb"><div class="ttname"><a href="group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6ab271a5cd1775076aeb8c25fc14da12cb">wiconnect::SOCKET_HTTP_POST</a></div><div class="ttdoc">HTTP POST Request socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00340">WiconnectTypes.h:340</a></div></div>
-<div class="ttc" id="group__api__file__types_html_ggafbe48908f5c190c3b0f272d3016e609ea94ddbab88df5f29013d5deb3f3d092c5"><div class="ttname"><a href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea94ddbab88df5f29013d5deb3f3d092c5">wiconnect::FILE_FLAG_EXECUTABLE</a></div><div class="ttdoc">File executable. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00369">WiconnectTypes.h:369</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05aecb3384d1dc5a61345346a8cd63527b2"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05aecb3384d1dc5a61345346a8cd63527b2">wiconnect::WICONNECT_NOT_CONNECTED</a></div><div class="ttdoc">Not connected. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00183">WiconnectTypes.h:183</a></div></div>
-<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63a5df6fc01411942aabcf83731d0d02d52"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a5df6fc01411942aabcf83731d0d02d52">wiconnect::FILE_TYPE_GPIO_CONFIG</a></div><div class="ttdoc">GPIO configuration file. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00394">WiconnectTypes.h:394</a></div></div>
-<div class="ttc" id="structwiconnect_1_1_http_socket_args_html_adffa0b3f63392a28c19aef272c918772"><div class="ttname"><a href="structwiconnect_1_1_http_socket_args.html#adffa0b3f63392a28c19aef272c918772">wiconnect::HttpSocketArgs::type</a></div><div class="ttdeci">HttpSocketType type</div><div class="ttdoc">The type of HTTP connection. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00353">WiconnectTypes.h:353</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a511a4e6fa8470f52110fc64f04cfe5ff"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a511a4e6fa8470f52110fc64f04cfe5ff">wiconnect::WICONNECT_CMD_RESPONSE_ERROR</a></div><div class="ttdoc">Module returned error code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00169">WiconnectTypes.h:169</a></div></div>
-<div class="ttc" id="group__api__file__types_html_gafbe48908f5c190c3b0f272d3016e609e"><div class="ttname"><a href="group__api__file__types.html#gafbe48908f5c190c3b0f272d3016e609e">wiconnect::FileFlags</a></div><div class="ttdeci">FileFlags</div><div class="ttdoc">File flags type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00364">WiconnectTypes.h:364</a></div></div>
-<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63a244c4ea312de84a2f4cabaff386fcffd"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a244c4ea312de84a2f4cabaff386fcffd">wiconnect::FILE_TYPE_SDC_CAPS</a></div><div class="ttdoc">SDC / goHACK.me file. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00396">WiconnectTypes.h:396</a></div></div>
-<div class="ttc" id="group__api__network__types_html_gac5aead2b4cca0122a60168e75ea41d36"><div class="ttname"><a href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">wiconnect::NetworkSignalStrength</a></div><div class="ttdeci">NetworkSignalStrength</div><div class="ttdoc">Network RSSI signal level. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00253">WiconnectTypes.h:253</a></div></div>
-<div class="ttc" id="group__api__socket__types_html_gga69dc55558df4c81599c5fb3dff98756da0c365c200e62d61bf22798c25ccb96b4"><div class="ttname"><a href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da0c365c200e62d61bf22798c25ccb96b4">wiconnect::SOCKET_TYPE_TLS</a></div><div class="ttdoc">TLS Socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00328">WiconnectTypes.h:328</a></div></div>
-<div class="ttc" id="group__api__network__types_html_ggac5aead2b4cca0122a60168e75ea41d36a2911018510263b4d6db772cf6ea69385"><div class="ttname"><a href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2911018510263b4d6db772cf6ea69385">wiconnect::NETWORK_RSSI_EXCELLENT</a></div><div class="ttdoc">> -20 dBm </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00255">WiconnectTypes.h:255</a></div></div>
-<div class="ttc" id="group__api__file__types_html_ggafbe48908f5c190c3b0f272d3016e609eaad3ddfddf9e28a26df73b689e0898df0"><div class="ttname"><a href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaad3ddfddf9e28a26df73b689e0898df0">wiconnect::FILE_FLAG_INTERNAL</a></div><div class="ttdoc">File on internal module flash. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00371">WiconnectTypes.h:371</a></div></div>
-<div class="ttc" id="structwiconnect_1_1_ssid_html"><div class="ttname"><a href="structwiconnect_1_1_ssid.html">wiconnect::Ssid</a></div><div class="ttdoc">Network SSID type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00283">WiconnectTypes.h:283</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a5d9162280a5269a34245bf53c87401a4"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5d9162280a5269a34245bf53c87401a4">wiconnect::WICONNECT_DUPLICATE</a></div><div class="ttdoc">Duplicate value. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00180">WiconnectTypes.h:180</a></div></div>
-<div class="ttc" id="group__api__network__types_html_ga5f6f5c916a5dd1676f98da7fa511451d"><div class="ttname"><a href="group__api__network__types.html#ga5f6f5c916a5dd1676f98da7fa511451d">wiconnect::NetworkJoinResult</a></div><div class="ttdeci">NetworkJoinResult</div><div class="ttdoc">Network connection status. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00236">WiconnectTypes.h:236</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05ad345e256266694df078c99eaee04f789"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ad345e256266694df078c99eaee04f789">wiconnect::WICONNECT_ABORTED</a></div><div class="ttdoc">Command was aborted. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00162">WiconnectTypes.h:162</a></div></div>
-<div class="ttc" id="group__api__socket__types_html_ggadc1d6e26d4138c536bd5dce7ed4569d6afc257aa28936e9fa8a332995b5449685"><div class="ttname"><a href="group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6afc257aa28936e9fa8a332995b5449685">wiconnect::SOCKET_HTTP_GET</a></div><div class="ttdoc">HTTP GET Request socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00339">WiconnectTypes.h:339</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05ab17f003b5f90e88328bbc76435f9f2e5"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab17f003b5f90e88328bbc76435f9f2e5">wiconnect::WICONNECT_RESPONSE_PARSE_ERROR</a></div><div class="ttdoc">Failed to parse module response. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00175">WiconnectTypes.h:175</a></div></div>
-<div class="ttc" id="structwiconnect_1_1_http_socket_args_html_a6dda2d739bd2c43d1b63d7a526ecf95c"><div class="ttname"><a href="structwiconnect_1_1_http_socket_args.html#a6dda2d739bd2c43d1b63d7a526ecf95c">wiconnect::HttpSocketArgs::certName</a></div><div class="ttdeci">const char * certName</div><div class="ttdoc">TLS certificate filename on module flash file system. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00351">WiconnectTypes.h:351</a></div></div>
-<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63a681a5a935adbd3aefdbb3639c36a4169"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a681a5a935adbd3aefdbb3639c36a4169">wiconnect::FILE_TYPE_REGULAR_APP</a></div><div class="ttdoc">Regular application. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00388">WiconnectTypes.h:388</a></div></div>
-<div class="ttc" id="group__api__file__types_html_ggafbe48908f5c190c3b0f272d3016e609eaa74f44cd76d69e9f32d70a2b13c8c4e2"><div class="ttname"><a href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaa74f44cd76d69e9f32d70a2b13c8c4e2">wiconnect::FILE_FLAG_ESSENTIAL</a></div><div class="ttdoc">File is essential. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00374">WiconnectTypes.h:374</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a2b2577cc3efe2cb37fda7dead222878f"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a2b2577cc3efe2cb37fda7dead222878f">wiconnect::WICONNECT_OVERFLOW</a></div><div class="ttdoc">Buffer overflowed. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00172">WiconnectTypes.h:172</a></div></div>
-<div class="ttc" id="group__api__network__types_html_ggac5aead2b4cca0122a60168e75ea41d36a5aa38a03f1ec4cdcdd1f0c41dfd19533"><div class="ttname"><a href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a5aa38a03f1ec4cdcdd1f0c41dfd19533">wiconnect::NETWORK_RSSI_GOOD</a></div><div class="ttdoc">> -50 dBm </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00257">WiconnectTypes.h:257</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05ab16dea725fe7b09d91a7651f18174cff"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab16dea725fe7b09d91a7651f18174cff">wiconnect::WICONNECT_PINNAME_TO_GPIO_MAPPER_NULL</a></div><div class="ttdoc">The pinToGpioMapper hasn&#39;t been set. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00179">WiconnectTypes.h:179</a></div></div>
-<div class="ttc" id="group__api__network__types_html_gga5f6f5c916a5dd1676f98da7fa511451dabfbb179ad94f8d5a57a9da86de9c65a8"><div class="ttname"><a href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabfbb179ad94f8d5a57a9da86de9c65a8">wiconnect::NETWORK_JOIN_RESULT_SUCCESS</a></div><div class="ttdoc">Successfully joined the network. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00239">WiconnectTypes.h:239</a></div></div>
-<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63aaa4d15bf30361c1026fe15e029e9c3e2"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63aaa4d15bf30361c1026fe15e029e9c3e2">wiconnect::FILE_TYPE_TEMPORY</a></div><div class="ttdoc">Temporary file. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00393">WiconnectTypes.h:393</a></div></div>
-<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63a077782e07756b6dc93f96e9a0cca5c9e"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a077782e07756b6dc93f96e9a0cca5c9e">wiconnect::FILE_TYPE_UNKNOWN</a></div><div class="ttdoc">Unknown file type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00399">WiconnectTypes.h:399</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7">wiconnect::WICONNECT_SUCCESS</a></div><div class="ttdoc">Command successfully completed. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00165">WiconnectTypes.h:165</a></div></div>
-<div class="ttc" id="group__api__network__types_html_ggab448e57fc1a5e21cbba0283fd1a35d99a2916360f96699b2bf42cf5e122562497"><div class="ttname"><a href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a2916360f96699b2bf42cf5e122562497">wiconnect::NETWORK_STATUS_JOINING</a></div><div class="ttdoc">Joining a network. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00229">WiconnectTypes.h:229</a></div></div>
-<div class="ttc" id="group__api__network__types_html_gab448e57fc1a5e21cbba0283fd1a35d99"><div class="ttname"><a href="group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99">wiconnect::NetworkStatus</a></div><div class="ttdeci">NetworkStatus</div><div class="ttdoc">Network connection status. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00224">WiconnectTypes.h:224</a></div></div>
-<div class="ttc" id="group__api__network__types_html_gga5f6f5c916a5dd1676f98da7fa511451da76b3ad647f00a3dc52e71e4ed670e7dc"><div class="ttname"><a href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da76b3ad647f00a3dc52e71e4ed670e7dc">wiconnect::NETWORK_JOIN_RESULT_FAILED</a></div><div class="ttdoc">Failed to join the network. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00245">WiconnectTypes.h:245</a></div></div>
-<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63a35624c078c19b7b632d832d15c0d1ef0"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a35624c078c19b7b632d832d15c0d1ef0">wiconnect::FILE_TYPE_COMMAND_HELP</a></div><div class="ttdoc">WiConnect command help file. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00395">WiconnectTypes.h:395</a></div></div>
-<div class="ttc" id="group__api__network__types_html_gaa68646bb07ee9f174097b60ac7327342"><div class="ttname"><a href="group__api__network__types.html#gaa68646bb07ee9f174097b60ac7327342">wiconnect::IpStrBuffer</a></div><div class="ttdeci">char IpStrBuffer[18]</div><div class="ttdoc">Buffer to hold an IP address string. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00314">WiconnectTypes.h:314</a></div></div>
-<div class="ttc" id="group__api__network__types_html_ggac5aead2b4cca0122a60168e75ea41d36a2728fe7e544bee45b00ef95117085eae"><div class="ttname"><a href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2728fe7e544bee45b00ef95117085eae">wiconnect::NETWORK_RSSI_POOR</a></div><div class="ttdoc">> -70 dBm </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00258">WiconnectTypes.h:258</a></div></div>
-<div class="ttc" id="structwiconnect_1_1_http_socket_args_html"><div class="ttname"><a href="structwiconnect_1_1_http_socket_args.html">wiconnect::HttpSocketArgs</a></div><div class="ttdoc">Struct for hold HTTP socket configuration. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00348">WiconnectTypes.h:348</a></div></div>
-<div class="ttc" id="group__api__network__types_html_gga5f6f5c916a5dd1676f98da7fa511451da60569216928bd30142e2e143eaf58475"><div class="ttname"><a href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da60569216928bd30142e2e143eaf58475">wiconnect::NETWORK_JOIN_RESULT_JOINING</a></div><div class="ttdoc">Currently attempting to join. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00240">WiconnectTypes.h:240</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a8d6d7c580a7aa3c4d64d41cac6e0307a"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a8d6d7c580a7aa3c4d64d41cac6e0307a">wiconnect::WICONNECT_PINNAME_TO_GPIO_NO_MAPPING</a></div><div class="ttdoc">No mapping found for given pin. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00182">WiconnectTypes.h:182</a></div></div>
-<div class="ttc" id="structwiconnect_1_1_http_socket_args_html_a57564bc3fed87b9ab2d3f4fff3d2dc24"><div class="ttname"><a href="structwiconnect_1_1_http_socket_args.html#a57564bc3fed87b9ab2d3f4fff3d2dc24">wiconnect::HttpSocketArgs::openOnly</a></div><div class="ttdeci">bool openOnly</div><div class="ttdoc">Only open the connection, don&#39;t issue the request yet. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00352">WiconnectTypes.h:352</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05ab3f9c2611514967ca4f155e35f522cc2"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab3f9c2611514967ca4f155e35f522cc2">wiconnect::WICONNECT_NOT_OPENED_FOR_READING</a></div><div class="ttdoc">The file is not open for reading. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00186">WiconnectTypes.h:186</a></div></div>
-<div class="ttc" id="group__api__socket__types_html_gga69dc55558df4c81599c5fb3dff98756da6469a1b9d8fa6448c0f6f13e0028a60e"><div class="ttname"><a href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da6469a1b9d8fa6448c0f6f13e0028a60e">wiconnect::SOCKET_TYPE_UNKNOWN</a></div><div class="ttdoc">Socket type not known. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00326">WiconnectTypes.h:326</a></div></div>
-<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63ac2bf941d4f7f23cabf7c781c5741dc04"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63ac2bf941d4f7f23cabf7c781c5741dc04">wiconnect::FILE_TYPE_UPGRADE_APP</a></div><div class="ttdoc">Internal upgrade application. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00385">WiconnectTypes.h:385</a></div></div>
+<div class="line"><a name="l00406"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a2271e7ab227bf95699c260a258902eeb">  406</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a2271e7ab227bf95699c260a258902eeb">FILE_TYPE_USER_RANGE_START</a> = 150,       </div>
+<div class="line"><a name="l00407"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a2958dab5107b78cd1c14400770ab9b4e">  407</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a2958dab5107b78cd1c14400770ab9b4e">FILE_TYPE_USER_RANGE_END</a> = 199,         </div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;</div>
+<div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63aaa4d15bf30361c1026fe15e029e9c3e2">  409</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63aaa4d15bf30361c1026fe15e029e9c3e2">FILE_TYPE_TEMPORY</a>       = 0xF9,         </div>
+<div class="line"><a name="l00410"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a5df6fc01411942aabcf83731d0d02d52">  410</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a5df6fc01411942aabcf83731d0d02d52">FILE_TYPE_GPIO_CONFIG</a>   = 0xFA,         </div>
+<div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a35624c078c19b7b632d832d15c0d1ef0">  411</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a35624c078c19b7b632d832d15c0d1ef0">FILE_TYPE_COMMAND_HELP</a>  = 0xFB,         </div>
+<div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a244c4ea312de84a2f4cabaff386fcffd">  412</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a244c4ea312de84a2f4cabaff386fcffd">FILE_TYPE_SDC_CAPS</a>      = 0xFC,         </div>
+<div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63afd6c376410552b54187a162e2c6fdad2">  413</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63afd6c376410552b54187a162e2c6fdad2">FILE_TYPE_SETUP_SCRIPT</a>  = 0xFD,         </div>
+<div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a2508195aa2793d49c5c6a24879b52206">  414</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a2508195aa2793d49c5c6a24879b52206">FILE_TYPE_MISC_FIX_LEN</a>  = 0xFE,         </div>
+<div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a077782e07756b6dc93f96e9a0cca5c9e">  415</a></span>&#160;    <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a077782e07756b6dc93f96e9a0cca5c9e">FILE_TYPE_UNKNOWN</a>       = 0xFF,         </div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;    FILE_TYPE_ANY           = <a class="code" href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a077782e07756b6dc93f96e9a0cca5c9e">FILE_TYPE_UNKNOWN</a></div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;} <a class="code" href="group__api__file__types.html#ga9919a4237eea2b0d1f27c16d64e62c63">FileType</a>;</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;<span class="comment">// ----------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;</div>
+<div class="line"><a name="l00426"></a><span class="lineno"><a class="line" href="group__api__ghm__types.html#ga4174104f02851ee92e51846877706e67">  426</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;{</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;    GHM_VALUE_INT,</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;    GHM_VALUE_STR</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;} <a class="code" href="group__api__ghm__types.html#ga4174104f02851ee92e51846877706e67">GhmElementValueType</a>;</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;</div>
+<div class="line"><a name="l00436"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_ghm_element.html">  436</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;{</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *elementName;</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;    <a class="code" href="group__api__ghm__types.html#ga4174104f02851ee92e51846877706e67">GhmElementValueType</a> type;</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;    <span class="keyword">union</span></div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;    {</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;       <span class="keyword">const</span> <span class="keywordtype">char</span> *strValue;</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;       uint32_t intValue;</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;    } u;</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;} <a class="code" href="structwiconnect_1_1_ghm_element.html">GhmElement</a>;</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;</div>
+<div class="line"><a name="l00451"></a><span class="lineno"><a class="line" href="structwiconnect_1_1_ghm_element_array.html">  451</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;{</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;    uint16_t count;</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;    <a class="code" href="structwiconnect_1_1_ghm_element.html">GhmElement</a> elements[1];</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;} <a class="code" href="structwiconnect_1_1_ghm_element_array.html">GhmElementArray</a>;</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;</div>
+<div class="line"><a name="l00461"></a><span class="lineno"><a class="line" href="group__api__ghm__types.html#ga44ea17651dcf42ac9816f549beb577ac">  461</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;{</div>
+<div class="line"><a name="l00463"></a><span class="lineno"><a class="line" href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577aca8aa4d4efd897cd69e0f08feaeaa122e7">  463</a></span>&#160;    <a class="code" href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577aca8aa4d4efd897cd69e0f08feaeaa122e7">GHM_SYNC_ALL</a>,           </div>
+<div class="line"><a name="l00464"></a><span class="lineno"><a class="line" href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577acafcf2af6407845b24a3abac79587243e0">  464</a></span>&#160;    <a class="code" href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577acafcf2af6407845b24a3abac79587243e0">GHM_SYNC_PUSH_ONLY</a>,     </div>
+<div class="line"><a name="l00465"></a><span class="lineno"><a class="line" href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577acaad5fbcfa42d14a2662bc5a517c108bdd">  465</a></span>&#160;    <a class="code" href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577acaad5fbcfa42d14a2662bc5a517c108bdd">GHM_SYNC_PULL_ONLY</a>      </div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;} <a class="code" href="group__api__ghm__types.html#ga44ea17651dcf42ac9816f549beb577ac">GhmSyncType</a>;</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;</div>
+<div class="line"><a name="l00472"></a><span class="lineno"><a class="line" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">  472</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span></div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;{</div>
+<div class="line"><a name="l00474"></a><span class="lineno"><a class="line" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127">  474</a></span>&#160;    <a class="code" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127">GHM_MSG_GET_DATA_ONLY</a>,  </div>
+<div class="line"><a name="l00475"></a><span class="lineno"><a class="line" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a19876ca1d097b96c48a1e8b54ee562d1">  475</a></span>&#160;    <a class="code" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a19876ca1d097b96c48a1e8b54ee562d1">GHM_MSG_GET_BODY</a>,       </div>
+<div class="line"><a name="l00476"></a><span class="lineno"><a class="line" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1adcf75ccabf6676b9b8f3050080f4bab7">  476</a></span>&#160;    <a class="code" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1adcf75ccabf6676b9b8f3050080f4bab7">GHM_MSG_GET_ALL</a>         </div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;} <a class="code" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a>;</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;<span class="comment">// ----------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;</div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;<span class="comment">// Forward declarations</span></div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;<span class="keyword">class </span>Wiconnect;</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;<span class="keyword">class </span>TimeoutTimer;</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;<span class="keyword">class </span>PeriodicTimer;</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;<span class="keyword">class </span>QueuedCommand;</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;<span class="keyword">class </span>CommandQueue;</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;<span class="keyword">class </span>LogFunc;</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;<span class="keyword">class </span>ReaderFunc;</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;<span class="keyword">class </span>ReaderFuncCallback;</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;<span class="keyword">class </span>Callback;</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;<span class="keyword">class </span>ScanResult;</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;<span class="keyword">class </span>ScanResultList;</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;<span class="keyword">class </span>WiconnectSocket;</div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;<span class="keyword">class </span>WiconnectSerial;</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;<span class="keyword">class </span>WiconnectFile;</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;<span class="keyword">class </span>FileList;</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;<span class="keyword">class </span>Gpio;</div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;<span class="keyword">class </span>SocketIrqHandlerMap;</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;<span class="keyword">class </span>WiconnectUdpServer;</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;<span class="keyword">class </span>GhmMessageList;</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;<span class="keyword">class </span>GhmMessage;</div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;}</div>
+<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63a2508195aa2793d49c5c6a24879b52206"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a2508195aa2793d49c5c6a24879b52206">wiconnect::FILE_TYPE_MISC_FIX_LEN</a></div><div class="ttdoc">Miscellaneous fixed length file. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00414">WiconnectTypes.h:414</a></div></div>
+<div class="ttc" id="structwiconnect_1_1_ssid_html_a7dd62e15567d9de9e9191f9aaba6a0a3"><div class="ttname"><a href="structwiconnect_1_1_ssid.html#a7dd62e15567d9de9e9191f9aaba6a0a3">wiconnect::Ssid::len</a></div><div class="ttdeci">uint8_t len</div><div class="ttdoc">The length in bytes of the SSID raw data. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00300">WiconnectTypes.h:300</a></div></div>
+<div class="ttc" id="group__api__socket__types_html_ga69dc55558df4c81599c5fb3dff98756d"><div class="ttname"><a href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">wiconnect::SocketType</a></div><div class="ttdeci">SocketType</div><div class="ttdoc">Socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00338">WiconnectTypes.h:338</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05acfd6d3c1efd03fae8cd443bc01bca8d6"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05acfd6d3c1efd03fae8cd443bc01bca8d6">wiconnect::WICONNECT_ERROR</a></div><div class="ttdoc">Generic error. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00175">WiconnectTypes.h:175</a></div></div>
+<div class="ttc" id="group__api__network__types_html_gga5f6f5c916a5dd1676f98da7fa511451dabb8da6425a24810668eade3488113957"><div class="ttname"><a href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabb8da6425a24810668eade3488113957">wiconnect::NETWORK_JOIN_RESULT_BAD_SECURITY</a></div><div class="ttdoc">The specified security type is not supported by the network. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00257">WiconnectTypes.h:257</a></div></div>
+<div class="ttc" id="group__api__network__types_html_ggab448e57fc1a5e21cbba0283fd1a35d99a6d6f2fd76cab833e55bc398541c52b46"><div class="ttname"><a href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6d6f2fd76cab833e55bc398541c52b46">wiconnect::NETWORK_STATUS_UP</a></div><div class="ttdoc">Conntected to network and have IP address. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00242">WiconnectTypes.h:242</a></div></div>
+<div class="ttc" id="group__api__ghm__types_html_gga44ea17651dcf42ac9816f549beb577acaad5fbcfa42d14a2662bc5a517c108bdd"><div class="ttname"><a href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577acaad5fbcfa42d14a2662bc5a517c108bdd">wiconnect::GHM_SYNC_PULL_ONLY</a></div><div class="ttdoc">Only pull controls from remote server. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00465">WiconnectTypes.h:465</a></div></div>
+<div class="ttc" id="group__api__ghm__types_html_gga44ea17651dcf42ac9816f549beb577acafcf2af6407845b24a3abac79587243e0"><div class="ttname"><a href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577acafcf2af6407845b24a3abac79587243e0">wiconnect::GHM_SYNC_PUSH_ONLY</a></div><div class="ttdoc">Only push streams and controls to remote server. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00464">WiconnectTypes.h:464</a></div></div>
+<div class="ttc" id="group__api__network__types_html_ga026bd11cd5df47b7022362243e2d553f"><div class="ttname"><a href="group__api__network__types.html#ga026bd11cd5df47b7022362243e2d553f">wiconnect::NetworkSecurity</a></div><div class="ttdeci">NetworkSecurity</div><div class="ttdoc">Network security type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00281">WiconnectTypes.h:281</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a25c48e037bc3615840b81461db6385b5"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a25c48e037bc3615840b81461db6385b5">wiconnect::WICONNECT_NULL_BUFFER</a></div><div class="ttdoc">Null buffer supplied. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00177">WiconnectTypes.h:177</a></div></div>
+<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63a2958dab5107b78cd1c14400770ab9b4e"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a2958dab5107b78cd1c14400770ab9b4e">wiconnect::FILE_TYPE_USER_RANGE_END</a></div><div class="ttdoc">User type end index. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00407">WiconnectTypes.h:407</a></div></div>
+<div class="ttc" id="namespacewiconnect_html_aadd4d5e6774e21f382c20b594a644470"><div class="ttname"><a href="namespacewiconnect.html#aadd4d5e6774e21f382c20b594a644470">wiconnect::PinToGpioMapper</a></div><div class="ttdeci">int8_t(* PinToGpioMapper)(Pin pin)</div><div class="ttdoc">Function pointer for mapping from a host pin to a WiConnect Module GPIO. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00206">WiconnectTypes.h:206</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a376da897f3a629fd71abd9db9f4cea83"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a376da897f3a629fd71abd9db9f4cea83">wiconnect::WICONNECT_ANOTHER_CMD_EXECUTING</a></div><div class="ttdoc">Currently executing another command. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00183">WiconnectTypes.h:183</a></div></div>
+<div class="ttc" id="group__api__network__types_html_ggac5aead2b4cca0122a60168e75ea41d36ab0e9cbbf4e2c6dee74d2639caef2cffa"><div class="ttname"><a href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36ab0e9cbbf4e2c6dee74d2639caef2cffa">wiconnect::NETWORK_RSSI_VERY_POOR</a></div><div class="ttdoc">< -71 dBm </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00273">WiconnectTypes.h:273</a></div></div>
+<div class="ttc" id="structwiconnect_1_1_http_socket_args_html_a401fd2b9a75ec8c76d59bd798d36e25b"><div class="ttname"><a href="structwiconnect_1_1_http_socket_args.html#a401fd2b9a75ec8c76d59bd798d36e25b">wiconnect::HttpSocketArgs::contextType</a></div><div class="ttdeci">const char * contextType</div><div class="ttdoc">A POST Request &#39;context-type&#39; value. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00366">WiconnectTypes.h:366</a></div></div>
+<div class="ttc" id="group__api__socket__types_html_gga69dc55558df4c81599c5fb3dff98756daece967eb28f8913c30bc70fa1e0e5ff9"><div class="ttname"><a href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756daece967eb28f8913c30bc70fa1e0e5ff9">wiconnect::SOCKET_TYPE_TCP</a></div><div class="ttdoc">TCP Socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00341">WiconnectTypes.h:341</a></div></div>
+<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63ad127cd0d4eeefee993a24b4d5095bfe7"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63ad127cd0d4eeefee993a24b4d5095bfe7">wiconnect::FILE_TYPE_WIFI_FW</a></div><div class="ttdoc">Wifi firmware binary. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00402">WiconnectTypes.h:402</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05ae6a9fb0c6333a0431e5775da996087ac"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ae6a9fb0c6333a0431e5775da996087ac">wiconnect::WICONNECT_TIMEOUT</a></div><div class="ttdoc">Command timed out. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00180">WiconnectTypes.h:180</a></div></div>
+<div class="ttc" id="group__api__ghm__types_html_gga44ea17651dcf42ac9816f549beb577aca8aa4d4efd897cd69e0f08feaeaa122e7"><div class="ttname"><a href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577aca8aa4d4efd897cd69e0f08feaeaa122e7">wiconnect::GHM_SYNC_ALL</a></div><div class="ttdoc">Push and pull all streams and controls. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00463">WiconnectTypes.h:463</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
+<div class="ttc" id="group__api__file__types_html_ggafbe48908f5c190c3b0f272d3016e609ea21f35fd8f0a4e38d91d5d1f5c5cc977f"><div class="ttname"><a href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea21f35fd8f0a4e38d91d5d1f5c5cc977f">wiconnect::FILE_FLAG_INVALID</a></div><div class="ttdoc">File flags invalid. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00392">WiconnectTypes.h:392</a></div></div>
+<div class="ttc" id="group__api__network__types_html_gga5f6f5c916a5dd1676f98da7fa511451da2ac6866940725552e31532002ef649a5"><div class="ttname"><a href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da2ac6866940725552e31532002ef649a5">wiconnect::NETWORK_JOIN_RESULT_NONE</a></div><div class="ttdoc">Haven&#39;t attempted to join. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00252">WiconnectTypes.h:252</a></div></div>
+<div class="ttc" id="structwiconnect_1_1_ghm_element_html"><div class="ttname"><a href="structwiconnect_1_1_ghm_element.html">wiconnect::GhmElement</a></div><div class="ttdoc">goHACK.me stream or control value </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00436">WiconnectTypes.h:436</a></div></div>
+<div class="ttc" id="structwiconnect_1_1_mac_address_html"><div class="ttname"><a href="structwiconnect_1_1_mac_address.html">wiconnect::MacAddress</a></div><div class="ttdoc">Network MAC Address type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00307">WiconnectTypes.h:307</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05ab9123e9628c3156f34c44913a72b4195"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab9123e9628c3156f34c44913a72b4195">wiconnect::WICONNECT_NOT_FOUND</a></div><div class="ttdoc">Not found. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00188">WiconnectTypes.h:188</a></div></div>
+<div class="ttc" id="group__api__socket__types_html_gga69dc55558df4c81599c5fb3dff98756da77625728d545a400e0eae1483225ff91"><div class="ttname"><a href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da77625728d545a400e0eae1483225ff91">wiconnect::SOCKET_TYPE_UDPS</a></div><div class="ttdoc">UDP Server Socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00345">WiconnectTypes.h:345</a></div></div>
+<div class="ttc" id="group__api__socket__types_html_gga69dc55558df4c81599c5fb3dff98756dab1b41b1c4daf8d171414b68e9033cfbc"><div class="ttname"><a href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756dab1b41b1c4daf8d171414b68e9033cfbc">wiconnect::SOCKET_TYPE_UDP</a></div><div class="ttdoc">UDP Socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00343">WiconnectTypes.h:343</a></div></div>
+<div class="ttc" id="group__api__socket__types_html_gadc1d6e26d4138c536bd5dce7ed4569d6"><div class="ttname"><a href="group__api__socket__types.html#gadc1d6e26d4138c536bd5dce7ed4569d6">wiconnect::HttpSocketType</a></div><div class="ttdeci">HttpSocketType</div><div class="ttdoc">HTTP Socket sub-type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00353">WiconnectTypes.h:353</a></div></div>
+<div class="ttc" id="group__api__ghm__types_html_gaf75750bfef61c73f9e4677e9de663df1"><div class="ttname"><a href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">wiconnect::GhmMessageGetType</a></div><div class="ttdeci">GhmMessageGetType</div><div class="ttdoc">goHACK.me message GET type </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00472">WiconnectTypes.h:472</a></div></div>
+<div class="ttc" id="group__api__network__types_html_gga5f6f5c916a5dd1676f98da7fa511451daed880c261bae590a5f59aebb01b6912c"><div class="ttname"><a href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daed880c261bae590a5f59aebb01b6912c">wiconnect::NETWORK_JOIN_RESULT_ABORTED</a></div><div class="ttdoc">Joining was aborted (via command) </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00260">WiconnectTypes.h:260</a></div></div>
+<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63a2271e7ab227bf95699c260a258902eeb"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a2271e7ab227bf95699c260a258902eeb">wiconnect::FILE_TYPE_USER_RANGE_START</a></div><div class="ttdoc">User type start index. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00406">WiconnectTypes.h:406</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a289d83a8cf2d1e1f272134d8268925c0"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a289d83a8cf2d1e1f272134d8268925c0">wiconnect::WICONNECT_PROCESSING</a></div><div class="ttdoc">Library processing current command. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00171">WiconnectTypes.h:171</a></div></div>
+<div class="ttc" id="group__api__network__types_html_ggac5aead2b4cca0122a60168e75ea41d36a095c1eef3bdeb16e33b1f6a976e9f6c4"><div class="ttname"><a href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a095c1eef3bdeb16e33b1f6a976e9f6c4">wiconnect::NETWORK_RSSI_UNKNOWN</a></div><div class="ttdoc">Not available. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00274">WiconnectTypes.h:274</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a7d4f9bd8b2b8ccc2ad902271e5241b02"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a7d4f9bd8b2b8ccc2ad902271e5241b02">wiconnect::WICONNECT_UNDERFLOW</a></div><div class="ttdoc">Data underflow. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00191">WiconnectTypes.h:191</a></div></div>
+<div class="ttc" id="group__api__network__types_html_ggab448e57fc1a5e21cbba0283fd1a35d99a6a4dd5a93528f27eb983bf856b9f5067"><div class="ttname"><a href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6a4dd5a93528f27eb983bf856b9f5067">wiconnect::NETWORK_STATUS_DOWN</a></div><div class="ttdoc">Not connected to network. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00240">WiconnectTypes.h:240</a></div></div>
+<div class="ttc" id="group__api__network__types_html_ga38e0a82235258f96340b9ce2c6e1426c"><div class="ttname"><a href="group__api__network__types.html#ga38e0a82235258f96340b9ce2c6e1426c">wiconnect::SsidStrBuffer</a></div><div class="ttdeci">char SsidStrBuffer[129]</div><div class="ttdoc">Buffer to hold a SSID string. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00322">WiconnectTypes.h:322</a></div></div>
+<div class="ttc" id="group__api__network__types_html_ggab448e57fc1a5e21cbba0283fd1a35d99a8e40c9f169976770c3e65b9c0e44874c"><div class="ttname"><a href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a8e40c9f169976770c3e65b9c0e44874c">wiconnect::NETWORK_STATUS_WIFI_ONLY</a></div><div class="ttdoc">Connected to network but don&#39;t have IP address. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00241">WiconnectTypes.h:241</a></div></div>
+<div class="ttc" id="group__api__ghm__types_html_ga4174104f02851ee92e51846877706e67"><div class="ttname"><a href="group__api__ghm__types.html#ga4174104f02851ee92e51846877706e67">wiconnect::GhmElementValueType</a></div><div class="ttdeci">GhmElementValueType</div><div class="ttdoc">goHACK.me stream or control value type </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00426">WiconnectTypes.h:426</a></div></div>
+<div class="ttc" id="group__api__file__types_html_ggafbe48908f5c190c3b0f272d3016e609eac40bade251c1d671283d3ab2515725a6"><div class="ttname"><a href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eac40bade251c1d671283d3ab2515725a6">wiconnect::FILE_FLAG_NONE</a></div><div class="ttdoc">No flags. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00382">WiconnectTypes.h:382</a></div></div>
+<div class="ttc" id="group__api__socket__types_html_gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751"><div class="ttname"><a href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751">wiconnect::SOCKET_TYPE_HTTP</a></div><div class="ttdoc">HTTP Socket type,. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00344">WiconnectTypes.h:344</a></div></div>
+<div class="ttc" id="group__api__ghm__types_html_ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127"><div class="ttname"><a href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127">wiconnect::GHM_MSG_GET_DATA_ONLY</a></div><div class="ttdoc">Only GET the message data. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00474">WiconnectTypes.h:474</a></div></div>
+<div class="ttc" id="group__api__network__types_html_ga04b095d2e2f32a3fd23e346a4be969d8"><div class="ttname"><a href="group__api__network__types.html#ga04b095d2e2f32a3fd23e346a4be969d8">wiconnect::MacAddressStrBuffer</a></div><div class="ttdeci">char MacAddressStrBuffer[18]</div><div class="ttdoc">Buffer to hold a MAC address string. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00316">WiconnectTypes.h:316</a></div></div>
+<div class="ttc" id="group__api__socket__types_html_ggadc1d6e26d4138c536bd5dce7ed4569d6a6d256a218aac67dffe66ae6c49a61236"><div class="ttname"><a href="group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6a6d256a218aac67dffe66ae6c49a61236">wiconnect::SOCKET_HTTP_HEAD</a></div><div class="ttdoc">HTTP HEAD Request socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00357">WiconnectTypes.h:357</a></div></div>
+<div class="ttc" id="group__api__file__types_html_ggafbe48908f5c190c3b0f272d3016e609eaffe90e6784ad43acffbf823502a6a7bf"><div class="ttname"><a href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaffe90e6784ad43acffbf823502a6a7bf">wiconnect::FILE_FLAG_BOOTABLE</a></div><div class="ttdoc">File bootable. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00388">WiconnectTypes.h:388</a></div></div>
+<div class="ttc" id="group__api__file__types_html_ggafbe48908f5c190c3b0f272d3016e609ea07f098f34c015d1c81d7592b476312e6"><div class="ttname"><a href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea07f098f34c015d1c81d7592b476312e6">wiconnect::FILE_FLAG_ENCRYPTED</a></div><div class="ttdoc">File encrypted. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00386">WiconnectTypes.h:386</a></div></div>
+<div class="ttc" id="group__api__network__types_html_gga5f6f5c916a5dd1676f98da7fa511451da5c790fb0440c39d95ec785e1c31c3cb2"><div class="ttname"><a href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da5c790fb0440c39d95ec785e1c31c3cb2">wiconnect::NETWORK_JOIN_RESULT_NOT_FOUND</a></div><div class="ttdoc">The network with the configured SSID was not found. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00258">WiconnectTypes.h:258</a></div></div>
+<div class="ttc" id="group__api__network__types_html_ggac5aead2b4cca0122a60168e75ea41d36ad77f98cf80b81d4c5277672402c0b713"><div class="ttname"><a href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36ad77f98cf80b81d4c5277672402c0b713">wiconnect::NETWORK_RSSI_VERY_GOOD</a></div><div class="ttdoc">> -35 dBm </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00270">WiconnectTypes.h:270</a></div></div>
+<div class="ttc" id="group__api__file__types_html_ga9919a4237eea2b0d1f27c16d64e62c63"><div class="ttname"><a href="group__api__file__types.html#ga9919a4237eea2b0d1f27c16d64e62c63">wiconnect::FileType</a></div><div class="ttdeci">FileType</div><div class="ttdoc">File type type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00399">WiconnectTypes.h:399</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga1cf4dfa71da0b0dc3dc707dacf56cc9c"><div class="ttname"><a href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">wiconnect::Pin</a></div><div class="ttdeci">PinName Pin</div><div class="ttdoc">Pin name on HOST. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00134">sdk.h:134</a></div></div>
+<div class="ttc" id="group__api__network__types_html_gga5f6f5c916a5dd1676f98da7fa511451daea6aa0a779a2823eadafa82dda6b7304"><div class="ttname"><a href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daea6aa0a779a2823eadafa82dda6b7304">wiconnect::NETWORK_JOIN_RESULT_NO_SSID</a></div><div class="ttdoc">The SSID has not be configured. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00255">WiconnectTypes.h:255</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05ab18f839c77a6a1f964c096980ef24adc"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab18f839c77a6a1f964c096980ef24adc">wiconnect::WICONNECT_UNSUPPORTED</a></div><div class="ttdoc">Command / parameter not supported. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00185">WiconnectTypes.h:185</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05afea61b8f5d17f6be2aee2ce5b6bb7c43"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05afea61b8f5d17f6be2aee2ce5b6bb7c43">wiconnect::WICONNECT_NOT_INITIALIZED</a></div><div class="ttdoc">Library not initialed. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00178">WiconnectTypes.h:178</a></div></div>
+<div class="ttc" id="group__api__file__types_html_ggafbe48908f5c190c3b0f272d3016e609ea3864357fd0b63b4cd6594d00c2194ca8"><div class="ttname"><a href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea3864357fd0b63b4cd6594d00c2194ca8">wiconnect::FILE_FLAG_USER</a></div><div class="ttdoc">File created by user. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00389">WiconnectTypes.h:389</a></div></div>
+<div class="ttc" id="group__api__network__types_html_gga5f6f5c916a5dd1676f98da7fa511451da02f32115d4a39e6028e5ebb4944f0bec"><div class="ttname"><a href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da02f32115d4a39e6028e5ebb4944f0bec">wiconnect::NETWORK_JOIN_RESULT_NO_PASSWORD</a></div><div class="ttdoc">The network requires a password and none has been set. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00256">WiconnectTypes.h:256</a></div></div>
+<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63afd6c376410552b54187a162e2c6fdad2"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63afd6c376410552b54187a162e2c6fdad2">wiconnect::FILE_TYPE_SETUP_SCRIPT</a></div><div class="ttdoc">Setup script file. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00413">WiconnectTypes.h:413</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a28240905349a60a6b52bddbbd152ea5e"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a28240905349a60a6b52bddbbd152ea5e">wiconnect::WICONNECT_MONITOR_NOT_AVAILABLE</a></div><div class="ttdoc">Background processing monitor is not available (i.e in use) </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00192">WiconnectTypes.h:192</a></div></div>
+<div class="ttc" id="group__api__file__types_html_ggafbe48908f5c190c3b0f272d3016e609eaff56da02ac3626bf5636e0aa6ffff78a"><div class="ttname"><a href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaff56da02ac3626bf5636e0aa6ffff78a">wiconnect::FILE_FLAG_VALID</a></div><div class="ttdoc">File valid. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00384">WiconnectTypes.h:384</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05ae96c2edcdade2809cdb60a8a5b0983fa"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ae96c2edcdade2809cdb60a8a5b0983fa">wiconnect::WICONNECT_BAD_ARG</a></div><div class="ttdoc">Bad argument supplied. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00184">WiconnectTypes.h:184</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a5bff05280d726da505c6e6ec2f085bd1"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5bff05280d726da505c6e6ec2f085bd1">wiconnect::WICONNECT_IDLE</a></div><div class="ttdoc">Library not processing any commands. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00170">WiconnectTypes.h:170</a></div></div>
+<div class="ttc" id="group__api__socket__types_html_ggadc1d6e26d4138c536bd5dce7ed4569d6ab271a5cd1775076aeb8c25fc14da12cb"><div class="ttname"><a href="group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6ab271a5cd1775076aeb8c25fc14da12cb">wiconnect::SOCKET_HTTP_POST</a></div><div class="ttdoc">HTTP POST Request socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00356">WiconnectTypes.h:356</a></div></div>
+<div class="ttc" id="group__api__file__types_html_ggafbe48908f5c190c3b0f272d3016e609ea94ddbab88df5f29013d5deb3f3d092c5"><div class="ttname"><a href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609ea94ddbab88df5f29013d5deb3f3d092c5">wiconnect::FILE_FLAG_EXECUTABLE</a></div><div class="ttdoc">File executable. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00385">WiconnectTypes.h:385</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05aecb3384d1dc5a61345346a8cd63527b2"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05aecb3384d1dc5a61345346a8cd63527b2">wiconnect::WICONNECT_NOT_CONNECTED</a></div><div class="ttdoc">Not connected. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00190">WiconnectTypes.h:190</a></div></div>
+<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63a5df6fc01411942aabcf83731d0d02d52"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a5df6fc01411942aabcf83731d0d02d52">wiconnect::FILE_TYPE_GPIO_CONFIG</a></div><div class="ttdoc">GPIO configuration file. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00410">WiconnectTypes.h:410</a></div></div>
+<div class="ttc" id="structwiconnect_1_1_http_socket_args_html_adffa0b3f63392a28c19aef272c918772"><div class="ttname"><a href="structwiconnect_1_1_http_socket_args.html#adffa0b3f63392a28c19aef272c918772">wiconnect::HttpSocketArgs::type</a></div><div class="ttdeci">HttpSocketType type</div><div class="ttdoc">The type of HTTP connection. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00369">WiconnectTypes.h:369</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a511a4e6fa8470f52110fc64f04cfe5ff"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a511a4e6fa8470f52110fc64f04cfe5ff">wiconnect::WICONNECT_CMD_RESPONSE_ERROR</a></div><div class="ttdoc">Module returned error code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00176">WiconnectTypes.h:176</a></div></div>
+<div class="ttc" id="group__api__socket__types_html_gga69dc55558df4c81599c5fb3dff98756da94c82597ad724e81c0bace9ed64ebc5f"><div class="ttname"><a href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da94c82597ad724e81c0bace9ed64ebc5f">wiconnect::SOCKET_TYPE_GHM</a></div><div class="ttdoc">goHACK.me message type </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00346">WiconnectTypes.h:346</a></div></div>
+<div class="ttc" id="group__api__file__types_html_gafbe48908f5c190c3b0f272d3016e609e"><div class="ttname"><a href="group__api__file__types.html#gafbe48908f5c190c3b0f272d3016e609e">wiconnect::FileFlags</a></div><div class="ttdeci">FileFlags</div><div class="ttdoc">File flags type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00380">WiconnectTypes.h:380</a></div></div>
+<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63a244c4ea312de84a2f4cabaff386fcffd"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a244c4ea312de84a2f4cabaff386fcffd">wiconnect::FILE_TYPE_SDC_CAPS</a></div><div class="ttdoc">SDC / goHACK.me file. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00412">WiconnectTypes.h:412</a></div></div>
+<div class="ttc" id="group__api__network__types_html_gac5aead2b4cca0122a60168e75ea41d36"><div class="ttname"><a href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">wiconnect::NetworkSignalStrength</a></div><div class="ttdeci">NetworkSignalStrength</div><div class="ttdoc">Network RSSI signal level. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00267">WiconnectTypes.h:267</a></div></div>
+<div class="ttc" id="group__api__socket__types_html_gga69dc55558df4c81599c5fb3dff98756da0c365c200e62d61bf22798c25ccb96b4"><div class="ttname"><a href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da0c365c200e62d61bf22798c25ccb96b4">wiconnect::SOCKET_TYPE_TLS</a></div><div class="ttdoc">TLS Socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00342">WiconnectTypes.h:342</a></div></div>
+<div class="ttc" id="group__api__network__types_html_ggac5aead2b4cca0122a60168e75ea41d36a2911018510263b4d6db772cf6ea69385"><div class="ttname"><a href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2911018510263b4d6db772cf6ea69385">wiconnect::NETWORK_RSSI_EXCELLENT</a></div><div class="ttdoc">> -20 dBm </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00269">WiconnectTypes.h:269</a></div></div>
+<div class="ttc" id="group__api__file__types_html_ggafbe48908f5c190c3b0f272d3016e609eaad3ddfddf9e28a26df73b689e0898df0"><div class="ttname"><a href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaad3ddfddf9e28a26df73b689e0898df0">wiconnect::FILE_FLAG_INTERNAL</a></div><div class="ttdoc">File on internal module flash. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00387">WiconnectTypes.h:387</a></div></div>
+<div class="ttc" id="structwiconnect_1_1_ssid_html"><div class="ttname"><a href="structwiconnect_1_1_ssid.html">wiconnect::Ssid</a></div><div class="ttdoc">Network SSID type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00297">WiconnectTypes.h:297</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a5d9162280a5269a34245bf53c87401a4"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5d9162280a5269a34245bf53c87401a4">wiconnect::WICONNECT_DUPLICATE</a></div><div class="ttdoc">Duplicate value. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00187">WiconnectTypes.h:187</a></div></div>
+<div class="ttc" id="group__api__network__types_html_ga5f6f5c916a5dd1676f98da7fa511451d"><div class="ttname"><a href="group__api__network__types.html#ga5f6f5c916a5dd1676f98da7fa511451d">wiconnect::NetworkJoinResult</a></div><div class="ttdeci">NetworkJoinResult</div><div class="ttdoc">Network connection status. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00250">WiconnectTypes.h:250</a></div></div>
+<div class="ttc" id="group__api__ghm__types_html_ga44ea17651dcf42ac9816f549beb577ac"><div class="ttname"><a href="group__api__ghm__types.html#ga44ea17651dcf42ac9816f549beb577ac">wiconnect::GhmSyncType</a></div><div class="ttdeci">GhmSyncType</div><div class="ttdoc">goHACK.me sychronization type </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00461">WiconnectTypes.h:461</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05ad345e256266694df078c99eaee04f789"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ad345e256266694df078c99eaee04f789">wiconnect::WICONNECT_ABORTED</a></div><div class="ttdoc">Command was aborted. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00169">WiconnectTypes.h:169</a></div></div>
+<div class="ttc" id="group__api__ghm__types_html_ggaf75750bfef61c73f9e4677e9de663df1a19876ca1d097b96c48a1e8b54ee562d1"><div class="ttname"><a href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a19876ca1d097b96c48a1e8b54ee562d1">wiconnect::GHM_MSG_GET_BODY</a></div><div class="ttdoc">Get the message body. This is JSON formatted. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00475">WiconnectTypes.h:475</a></div></div>
+<div class="ttc" id="group__api__socket__types_html_ggadc1d6e26d4138c536bd5dce7ed4569d6afc257aa28936e9fa8a332995b5449685"><div class="ttname"><a href="group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6afc257aa28936e9fa8a332995b5449685">wiconnect::SOCKET_HTTP_GET</a></div><div class="ttdoc">HTTP GET Request socket type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00355">WiconnectTypes.h:355</a></div></div>
+<div class="ttc" id="namespacewiconnect_html_a0c27570b2913afc6339821df7c934810"><div class="ttname"><a href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">wiconnect::TimerTimeout</a></div><div class="ttdeci">unsigned long TimerTimeout</div><div class="ttdoc">Timeout type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00212">WiconnectTypes.h:212</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05ab17f003b5f90e88328bbc76435f9f2e5"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab17f003b5f90e88328bbc76435f9f2e5">wiconnect::WICONNECT_RESPONSE_PARSE_ERROR</a></div><div class="ttdoc">Failed to parse module response. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00182">WiconnectTypes.h:182</a></div></div>
+<div class="ttc" id="structwiconnect_1_1_http_socket_args_html_a6dda2d739bd2c43d1b63d7a526ecf95c"><div class="ttname"><a href="structwiconnect_1_1_http_socket_args.html#a6dda2d739bd2c43d1b63d7a526ecf95c">wiconnect::HttpSocketArgs::certName</a></div><div class="ttdeci">const char * certName</div><div class="ttdoc">TLS certificate filename on module flash file system. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00367">WiconnectTypes.h:367</a></div></div>
+<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63a681a5a935adbd3aefdbb3639c36a4169"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a681a5a935adbd3aefdbb3639c36a4169">wiconnect::FILE_TYPE_REGULAR_APP</a></div><div class="ttdoc">Regular application. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00404">WiconnectTypes.h:404</a></div></div>
+<div class="ttc" id="group__api__file__types_html_ggafbe48908f5c190c3b0f272d3016e609eaa74f44cd76d69e9f32d70a2b13c8c4e2"><div class="ttname"><a href="group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaa74f44cd76d69e9f32d70a2b13c8c4e2">wiconnect::FILE_FLAG_ESSENTIAL</a></div><div class="ttdoc">File is essential. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00390">WiconnectTypes.h:390</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a2b2577cc3efe2cb37fda7dead222878f"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a2b2577cc3efe2cb37fda7dead222878f">wiconnect::WICONNECT_OVERFLOW</a></div><div class="ttdoc">Buffer overflowed. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00179">WiconnectTypes.h:179</a></div></div>
+<div class="ttc" id="group__api__network__types_html_ggac5aead2b4cca0122a60168e75ea41d36a5aa38a03f1ec4cdcdd1f0c41dfd19533"><div class="ttname"><a href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a5aa38a03f1ec4cdcdd1f0c41dfd19533">wiconnect::NETWORK_RSSI_GOOD</a></div><div class="ttdoc">> -50 dBm </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00271">WiconnectTypes.h:271</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05ab16dea725fe7b09d91a7651f18174cff"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab16dea725fe7b09d91a7651f18174cff">wiconnect::WICONNECT_PINNAME_TO_GPIO_MAPPER_NULL</a></div><div class="ttdoc">The pinToGpioMapper hasn&#39;t been set. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00186">WiconnectTypes.h:186</a></div></div>
+<div class="ttc" id="group__api__network__types_html_gga5f6f5c916a5dd1676f98da7fa511451dabfbb179ad94f8d5a57a9da86de9c65a8"><div class="ttname"><a href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabfbb179ad94f8d5a57a9da86de9c65a8">wiconnect::NETWORK_JOIN_RESULT_SUCCESS</a></div><div class="ttdoc">Successfully joined the network. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00253">WiconnectTypes.h:253</a></div></div>
+<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63aaa4d15bf30361c1026fe15e029e9c3e2"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63aaa4d15bf30361c1026fe15e029e9c3e2">wiconnect::FILE_TYPE_TEMPORY</a></div><div class="ttdoc">Temporary file. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00409">WiconnectTypes.h:409</a></div></div>
+<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63a077782e07756b6dc93f96e9a0cca5c9e"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a077782e07756b6dc93f96e9a0cca5c9e">wiconnect::FILE_TYPE_UNKNOWN</a></div><div class="ttdoc">Unknown file type. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00415">WiconnectTypes.h:415</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7">wiconnect::WICONNECT_SUCCESS</a></div><div class="ttdoc">Command successfully completed. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00172">WiconnectTypes.h:172</a></div></div>
+<div class="ttc" id="group__api__network__types_html_ggab448e57fc1a5e21cbba0283fd1a35d99a2916360f96699b2bf42cf5e122562497"><div class="ttname"><a href="group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a2916360f96699b2bf42cf5e122562497">wiconnect::NETWORK_STATUS_JOINING</a></div><div class="ttdoc">Joining a network. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00243">WiconnectTypes.h:243</a></div></div>
+<div class="ttc" id="structwiconnect_1_1_ghm_element_array_html"><div class="ttname"><a href="structwiconnect_1_1_ghm_element_array.html">wiconnect::GhmElementArray</a></div><div class="ttdoc">Array of goHACK.me stream or control values. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00451">WiconnectTypes.h:451</a></div></div>
+<div class="ttc" id="group__api__network__types_html_gab448e57fc1a5e21cbba0283fd1a35d99"><div class="ttname"><a href="group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99">wiconnect::NetworkStatus</a></div><div class="ttdeci">NetworkStatus</div><div class="ttdoc">Network connection status. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00238">WiconnectTypes.h:238</a></div></div>
+<div class="ttc" id="group__api__network__types_html_gga5f6f5c916a5dd1676f98da7fa511451da76b3ad647f00a3dc52e71e4ed670e7dc"><div class="ttname"><a href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da76b3ad647f00a3dc52e71e4ed670e7dc">wiconnect::NETWORK_JOIN_RESULT_FAILED</a></div><div class="ttdoc">Failed to join the network. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00259">WiconnectTypes.h:259</a></div></div>
+<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63a35624c078c19b7b632d832d15c0d1ef0"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63a35624c078c19b7b632d832d15c0d1ef0">wiconnect::FILE_TYPE_COMMAND_HELP</a></div><div class="ttdoc">WiConnect command help file. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00411">WiconnectTypes.h:411</a></div></div>
+<div class="ttc" id="group__api__ghm__types_html_ggaf75750bfef61c73f9e4677e9de663df1adcf75ccabf6676b9b8f3050080f4bab7"><div class="ttname"><a href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1adcf75ccabf6676b9b8f3050080f4bab7">wiconnect::GHM_MSG_GET_ALL</a></div><div class="ttdoc">Get entire message. This includes headers. Is JSON formatted. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00476">WiconnectTypes.h:476</a></div></div>
+<div class="ttc" id="group__api__network__types_html_gaa68646bb07ee9f174097b60ac7327342"><div class="ttname"><a href="group__api__network__types.html#gaa68646bb07ee9f174097b60ac7327342">wiconnect::IpStrBuffer</a></div><div class="ttdeci">char IpStrBuffer[18]</div><div class="ttdoc">Buffer to hold an IP address string. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00328">WiconnectTypes.h:328</a></div></div>
+<div class="ttc" id="group__api__network__types_html_ggac5aead2b4cca0122a60168e75ea41d36a2728fe7e544bee45b00ef95117085eae"><div class="ttname"><a href="group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2728fe7e544bee45b00ef95117085eae">wiconnect::NETWORK_RSSI_POOR</a></div><div class="ttdoc">> -70 dBm </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00272">WiconnectTypes.h:272</a></div></div>
+<div class="ttc" id="structwiconnect_1_1_http_socket_args_html"><div class="ttname"><a href="structwiconnect_1_1_http_socket_args.html">wiconnect::HttpSocketArgs</a></div><div class="ttdoc">Struct for hold HTTP socket configuration. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00364">WiconnectTypes.h:364</a></div></div>
+<div class="ttc" id="group__api__network__types_html_gga5f6f5c916a5dd1676f98da7fa511451da60569216928bd30142e2e143eaf58475"><div class="ttname"><a href="group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da60569216928bd30142e2e143eaf58475">wiconnect::NETWORK_JOIN_RESULT_JOINING</a></div><div class="ttdoc">Currently attempting to join. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00254">WiconnectTypes.h:254</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05a8d6d7c580a7aa3c4d64d41cac6e0307a"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a8d6d7c580a7aa3c4d64d41cac6e0307a">wiconnect::WICONNECT_PINNAME_TO_GPIO_NO_MAPPING</a></div><div class="ttdoc">No mapping found for given pin. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00189">WiconnectTypes.h:189</a></div></div>
+<div class="ttc" id="structwiconnect_1_1_http_socket_args_html_a57564bc3fed87b9ab2d3f4fff3d2dc24"><div class="ttname"><a href="structwiconnect_1_1_http_socket_args.html#a57564bc3fed87b9ab2d3f4fff3d2dc24">wiconnect::HttpSocketArgs::openOnly</a></div><div class="ttdeci">bool openOnly</div><div class="ttdoc">Only open the connection, don&#39;t issue the request yet. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00368">WiconnectTypes.h:368</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05ab3f9c2611514967ca4f155e35f522cc2"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab3f9c2611514967ca4f155e35f522cc2">wiconnect::WICONNECT_NOT_OPENED_FOR_READING</a></div><div class="ttdoc">The file is not open for reading. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00193">WiconnectTypes.h:193</a></div></div>
+<div class="ttc" id="group__api__socket__types_html_gga69dc55558df4c81599c5fb3dff98756da6469a1b9d8fa6448c0f6f13e0028a60e"><div class="ttname"><a href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da6469a1b9d8fa6448c0f6f13e0028a60e">wiconnect::SOCKET_TYPE_UNKNOWN</a></div><div class="ttdoc">Socket type not known. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00340">WiconnectTypes.h:340</a></div></div>
+<div class="ttc" id="group__api__file__types_html_gga9919a4237eea2b0d1f27c16d64e62c63ac2bf941d4f7f23cabf7c781c5741dc04"><div class="ttname"><a href="group__api__file__types.html#gga9919a4237eea2b0d1f27c16d64e62c63ac2bf941d4f7f23cabf7c781c5741dc04">wiconnect::FILE_TYPE_UPGRADE_APP</a></div><div class="ttdoc">Internal upgrade application. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00401">WiconnectTypes.h:401</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/_wiconnect_udp_server_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,140 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('_wiconnect_udp_server_8h_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">WiconnectUdpServer.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#pragma once</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;api/WiconnectTypes.h&quot;</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &quot;WiconnectSocket.h&quot;</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="keyword">namespace </span>wiconnect</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;{</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classwiconnect_1_1_wiconnect_udp_server.html">   44</a></span>&#160;<span class="keyword">class </span><a class="code" href="classwiconnect_1_1_wiconnect_udp_server.html">WiconnectUdpServer</a> : <span class="keyword">public</span> <a class="code" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;{</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <a class="code" href="classwiconnect_1_1_wiconnect_udp_server.html">WiconnectUdpServer</a>(<span class="keywordtype">int</span> rxBufferLen = 0, <span class="keywordtype">void</span> *rxBuffer = NULL, <span class="keywordtype">int</span> txBufferLen = 0, <span class="keywordtype">void</span> *txBuffer = NULL);</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> getRemoteClient(uint32_t *ipAddress, uint16_t *port);</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> setRemoteClient(<span class="keyword">const</span> <span class="keywordtype">char</span>* host, uint16_t port);</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> setRemoteClient(uint32_t ip, uint16_t port);</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <a class="code" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> flushTxBuffer();</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;};</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;}</div>
+<div class="ttc" id="classwiconnect_1_1_wiconnect_udp_server_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect_udp_server.html">wiconnect::WiconnectUdpServer</a></div><div class="ttdoc">UDP Server Listening socket. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_udp_server_8h_source.html#l00044">WiconnectUdpServer.h:44</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_wiconnect_socket_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect_socket.html">wiconnect::WiconnectSocket</a></div><div class="ttdoc">Connection object to remote server. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_socket_8h_source.html#l00043">WiconnectSocket.h:43</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- a/doc/html/annotated.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/annotated.html	Mon Oct 27 13:42:26 2014 -0700
@@ -116,20 +116,26 @@
 <tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_file_interface.html" target="_self">FileInterface</a></td><td class="desc">The provides an interface for creating TCP/UDP/TLS/HTTP client sockets. A client socket connects to a remote server </td></tr>
 <tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_file_list.html" target="_self">FileList</a></td><td class="desc">WiConnect WiFi module file listing </td></tr>
 <tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_function_pointer.html" target="_self">FunctionPointer</a></td><td class="desc">Generic function pointer </td></tr>
-<tr id="row_0_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwiconnect_1_1_http_socket_args.html" target="_self">HttpSocketArgs</a></td><td class="desc">Struct for hold HTTP socket configuration </td></tr>
-<tr id="row_0_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_log_func.html" target="_self">LogFunc</a></td><td class="desc">Logging callback function </td></tr>
-<tr id="row_0_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwiconnect_1_1_mac_address.html" target="_self">MacAddress</a></td><td class="desc">Network MAC Address type </td></tr>
-<tr id="row_0_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_network_interface.html" target="_self">NetworkInterface</a></td><td class="desc">The provides an interface for joining and/or creating a network. It provides other utilities such as scanning for networks, pinging a network, resolving a domain name to IP address </td></tr>
-<tr id="row_0_8_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_queued_command.html" target="_self">QueuedCommand</a></td><td class="desc">Class which contains command for asynchronous processing </td></tr>
-<tr id="row_0_9_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_reader_func.html" target="_self">ReaderFunc</a></td><td class="desc">Generic data reading callback function </td></tr>
-<tr id="row_0_10_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_scan_result.html" target="_self">ScanResult</a></td><td class="desc">Contains single entry from WiFi scan results </td></tr>
-<tr id="row_0_11_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_scan_result_list.html" target="_self">ScanResultList</a></td><td class="desc">List of WiFi network scan results </td></tr>
-<tr id="row_0_12_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_serial_config.html" target="_self">SerialConfig</a></td><td class="desc">Host&lt;-&gt;<a class="el" href="classwiconnect_1_1_wiconnect.html" title="The root WiConnect library class. This class inheriets all WiConnect functionality. ">Wiconnect</a> Module serial configuration </td></tr>
-<tr id="row_0_13_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_socket_interface.html" target="_self">SocketInterface</a></td><td class="desc">The provides an interface for creating TCP/UDP/TLS/HTTP client sockets. A client socket connects to a remote server </td></tr>
-<tr id="row_0_14_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwiconnect_1_1_ssid.html" target="_self">Ssid</a></td><td class="desc">Network SSID type </td></tr>
-<tr id="row_0_15_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_wiconnect.html" target="_self">Wiconnect</a></td><td class="desc">The root WiConnect library class. This class inheriets all WiConnect functionality </td></tr>
-<tr id="row_0_16_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_wiconnect_file.html" target="_self">WiconnectFile</a></td><td class="desc">WiConnect WiFi module file object </td></tr>
-<tr id="row_0_17_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_wiconnect_socket.html" target="_self">WiconnectSocket</a></td><td class="desc">Connection object to remote server </td></tr>
+<tr id="row_0_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwiconnect_1_1_ghm_element.html" target="_self">GhmElement</a></td><td class="desc">GoHACK.me stream or control value </td></tr>
+<tr id="row_0_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwiconnect_1_1_ghm_element_array.html" target="_self">GhmElementArray</a></td><td class="desc">Array of goHACK.me stream or control values </td></tr>
+<tr id="row_0_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_ghm_interface.html" target="_self">GhmInterface</a></td><td class="desc">The provides an interface for <a href="http://goHACK.me">http://goHACK.me</a> </td></tr>
+<tr id="row_0_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_ghm_message.html" target="_self">GhmMessage</a></td><td class="desc">Contains single entry from goHACK.me message listing </td></tr>
+<tr id="row_0_8_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_ghm_message_list.html" target="_self">GhmMessageList</a></td><td class="desc">List of goHACK.me messages </td></tr>
+<tr id="row_0_9_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwiconnect_1_1_http_socket_args.html" target="_self">HttpSocketArgs</a></td><td class="desc">Struct for hold HTTP socket configuration </td></tr>
+<tr id="row_0_10_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_log_func.html" target="_self">LogFunc</a></td><td class="desc">Logging callback function </td></tr>
+<tr id="row_0_11_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwiconnect_1_1_mac_address.html" target="_self">MacAddress</a></td><td class="desc">Network MAC Address type </td></tr>
+<tr id="row_0_12_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_network_interface.html" target="_self">NetworkInterface</a></td><td class="desc">The provides an interface for joining and/or creating a network. It provides other utilities such as scanning for networks, pinging a network, resolving a domain name to IP address </td></tr>
+<tr id="row_0_13_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_queued_command.html" target="_self">QueuedCommand</a></td><td class="desc">Class which contains command for asynchronous processing </td></tr>
+<tr id="row_0_14_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_reader_func.html" target="_self">ReaderFunc</a></td><td class="desc">Generic data reading callback function </td></tr>
+<tr id="row_0_15_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_scan_result.html" target="_self">ScanResult</a></td><td class="desc">Contains single entry from WiFi scan results </td></tr>
+<tr id="row_0_16_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_scan_result_list.html" target="_self">ScanResultList</a></td><td class="desc">List of WiFi network scan results </td></tr>
+<tr id="row_0_17_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_serial_config.html" target="_self">SerialConfig</a></td><td class="desc">Host&lt;-&gt;<a class="el" href="classwiconnect_1_1_wiconnect.html" title="The root WiConnect library class. This class inheriets all WiConnect functionality. ">Wiconnect</a> Module serial configuration </td></tr>
+<tr id="row_0_18_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_socket_interface.html" target="_self">SocketInterface</a></td><td class="desc">The provides an interface for creating TCP/UDP/TLS/HTTP client sockets. A client socket connects to a remote server </td></tr>
+<tr id="row_0_19_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwiconnect_1_1_ssid.html" target="_self">Ssid</a></td><td class="desc">Network SSID type </td></tr>
+<tr id="row_0_20_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_wiconnect.html" target="_self">Wiconnect</a></td><td class="desc">The root WiConnect library class. This class inheriets all WiConnect functionality </td></tr>
+<tr id="row_0_21_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_wiconnect_file.html" target="_self">WiconnectFile</a></td><td class="desc">WiConnect WiFi module file object </td></tr>
+<tr id="row_0_22_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_wiconnect_socket.html" target="_self">WiconnectSocket</a></td><td class="desc">Connection object to remote server </td></tr>
+<tr id="row_0_23_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_wiconnect_udp_server.html" target="_self">WiconnectUdpServer</a></td><td class="desc">UDP Server Listening socket </td></tr>
 <tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_string_util.html" target="_self">StringUtil</a></td><td class="desc"></td></tr>
 </table>
 </div><!-- directory -->
--- a/doc/html/class_string_util.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/class_string_util.html	Mon Oct 27 13:42:26 2014 -0700
@@ -126,7 +126,7 @@
 
 <p>Definition at line <a class="el" href="_string_util_8h_source.html#l00045">45</a> of file <a class="el" href="_string_util_8h_source.html">StringUtil.h</a>.</p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/<a class="el" href="_string_util_8h_source.html">StringUtil.h</a></li>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/<a class="el" href="_string_util_8h_source.html">StringUtil.h</a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
--- a/doc/html/classes.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classes.html	Mon Oct 27 13:42:26 2014 -0700
@@ -109,30 +109,34 @@
 <div class="title">Class Index</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="qindex"><a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_H">H</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_N">N</a>&#160;|&#160;<a class="qindex" href="#letter_Q">Q</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_W">W</a></div>
+<div class="qindex"><a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_G">G</a>&#160;|&#160;<a class="qindex" href="#letter_H">H</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_N">N</a>&#160;|&#160;<a class="qindex" href="#letter_Q">Q</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_W">W</a></div>
 <table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
 <tr><td rowspan="2" valign="bottom"><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;C&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_H"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;H&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_N"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;N&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="structwiconnect_1_1_ghm_element_array.html">GhmElementArray</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;M&#160;&#160;</div></td></tr></table>
 </td><td rowspan="2" valign="bottom"><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;S&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_W"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;W&#160;&#160;</div></td></tr></table>
-</td></tr>
-<tr></tr>
-<tr><td valign="top"><a class="el" href="classwiconnect_1_1_callback.html">Callback</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structwiconnect_1_1_http_socket_args.html">HttpSocketArgs</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classwiconnect_1_1_network_interface.html">NetworkInterface</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classwiconnect_1_1_scan_result.html">ScanResult</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td></tr>
+</td><td valign="top"><a class="el" href="classwiconnect_1_1_wiconnect_file.html">WiconnectFile</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classwiconnect_1_1_ghm_interface.html">GhmInterface</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classwiconnect_1_1_callback.html">Callback</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classwiconnect_1_1_ghm_message.html">GhmMessage</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structwiconnect_1_1_mac_address.html">MacAddress</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classwiconnect_1_1_scan_result.html">ScanResult</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classwiconnect_1_1_wiconnect_udp_server.html">WiconnectUdpServer</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td></tr>
 <tr><td rowspan="2" valign="bottom"><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;F&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;L&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_Q"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;Q&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classwiconnect_1_1_scan_result_list.html">ScanResultList</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classwiconnect_1_1_wiconnect_file.html">WiconnectFile</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classwiconnect_1_1_serial_config.html">SerialConfig</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classwiconnect_1_1_file_interface.html">FileInterface</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classwiconnect_1_1_log_func.html">LogFunc</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classwiconnect_1_1_queued_command.html">QueuedCommand</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classwiconnect_1_1_socket_interface.html">SocketInterface</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td></td></tr>
-<tr><td valign="top"><a class="el" href="classwiconnect_1_1_file_list.html">FileList</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;M&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;R&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classwiconnect_1_1_ghm_message_list.html">GhmMessageList</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_N"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;N&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classwiconnect_1_1_scan_result_list.html">ScanResultList</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td rowspan="2" valign="bottom"><a name="letter_H"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;H&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classwiconnect_1_1_serial_config.html">SerialConfig</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classwiconnect_1_1_file_interface.html">FileInterface</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classwiconnect_1_1_network_interface.html">NetworkInterface</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classwiconnect_1_1_socket_interface.html">SocketInterface</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classwiconnect_1_1_file_list.html">FileList</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structwiconnect_1_1_http_socket_args.html">HttpSocketArgs</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_Q"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;Q&#160;&#160;</div></td></tr></table>
 </td><td valign="top"><a class="el" href="structwiconnect_1_1_ssid.html">Ssid</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td></td></tr>
-<tr><td valign="top"><a class="el" href="classwiconnect_1_1_function_pointer.html">FunctionPointer</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="class_string_util.html">StringUtil</a>&#160;&#160;&#160;</td><td></td></tr>
-<tr><td></td><td valign="top"><a class="el" href="structwiconnect_1_1_mac_address.html">MacAddress</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td></td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classwiconnect_1_1_function_pointer.html">FunctionPointer</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;L&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="class_string_util.html">StringUtil</a>&#160;&#160;&#160;</td><td></td></tr>
+<tr><td rowspan="2" valign="bottom"><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;G&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classwiconnect_1_1_queued_command.html">QueuedCommand</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_W"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;W&#160;&#160;</div></td></tr></table>
+</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classwiconnect_1_1_log_func.html">LogFunc</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;R&#160;&#160;</div></td></tr></table>
+</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="structwiconnect_1_1_ghm_element.html">GhmElement</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td></td><td valign="top"><a class="el" href="classwiconnect_1_1_wiconnect.html">Wiconnect</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td></td><td></td><td valign="top"><a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> (<a class="el" href="namespacewiconnect.html">wiconnect</a>)&#160;&#160;&#160;</td><td></td><td></td></tr>
 <tr><td></td><td></td><td></td><td></td><td></td></tr>
 </table>
-<div class="qindex"><a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_H">H</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_N">N</a>&#160;|&#160;<a class="qindex" href="#letter_Q">Q</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_W">W</a></div>
+<div class="qindex"><a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_G">G</a>&#160;|&#160;<a class="qindex" href="#letter_H">H</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_N">N</a>&#160;|&#160;<a class="qindex" href="#letter_Q">Q</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_W">W</a></div>
 </div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/classwiconnect_1_1_callback.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_callback.html	Mon Oct 27 13:42:26 2014 -0700
@@ -123,7 +123,7 @@
 
 <p>Definition at line <a class="el" href="_callback_8h_source.html#l00049">49</a> of file <a class="el" href="_callback_8h_source.html">Callback.h</a>.</p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/types/<a class="el" href="_callback_8h_source.html">Callback.h</a></li>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/types/<a class="el" href="_callback_8h_source.html">Callback.h</a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
--- a/doc/html/classwiconnect_1_1_file_interface.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_file_interface.html	Mon Oct 27 13:42:26 2014 -0700
@@ -162,7 +162,7 @@
 
 <p>Definition at line <a class="el" href="_file_interface_8h_source.html#l00068">68</a> of file <a class="el" href="_file_interface_8h_source.html">FileInterface.h</a>.</p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/<a class="el" href="_file_interface_8h_source.html">FileInterface.h</a></li>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/<a class="el" href="_file_interface_8h_source.html">FileInterface.h</a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
--- a/doc/html/classwiconnect_1_1_file_list.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_file_list.html	Mon Oct 27 13:42:26 2014 -0700
@@ -121,7 +121,7 @@
 
 <p>Definition at line <a class="el" href="_file_list_8h_source.html#l00044">44</a> of file <a class="el" href="_file_list_8h_source.html">FileList.h</a>.</p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/types/<a class="el" href="_file_list_8h_source.html">FileList.h</a></li>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/types/<a class="el" href="_file_list_8h_source.html">FileList.h</a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
--- a/doc/html/classwiconnect_1_1_function_pointer.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_function_pointer.html	Mon Oct 27 13:42:26 2014 -0700
@@ -124,7 +124,7 @@
 
 <p>Definition at line <a class="el" href="_function_pointer_8h_source.html#l00040">40</a> of file <a class="el" href="_function_pointer_8h_source.html">FunctionPointer.h</a>.</p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/types/<a class="el" href="_function_pointer_8h_source.html">FunctionPointer.h</a></li>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/types/<a class="el" href="_function_pointer_8h_source.html">FunctionPointer.h</a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/classwiconnect_1_1_ghm_interface-members.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,142 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classwiconnect_1_1_ghm_interface.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">wiconnect::GhmInterface Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate</a>(const char *userName, const char *password, const char *capsFilename=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__ghm__activate.html#gad0e0484d1f9a6608475874544f96708b">ghmDeactivate</a>(const char *userName, const char *password)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__msg.html#ga451de9d69f7ecbf38e36056e502b94b0">ghmDeleteMessage</a>(uint8_t listIndex)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__ghm__msg.html#ga7273f4c691aeccd241327f1be3e8d0e9">ghmDeleteMessage</a>(const char *msgId)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__activate.html#gaff03ecaa08146e6925820209cdab56bd">ghmDownloadCapabilities</a>(const char *capsNameOrCustomUrl=NULL, uint32_t version=0)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234">ghmGetMessage</a>(WiconnectSocket &amp;socket, GhmMessageGetType getType=GHM_MSG_GET_DATA_ONLY)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__msg.html#gaa905a010f0e234d290eaef6e42975c29">ghmGetMessage</a>(WiconnectSocket &amp;socket, uint8_t listIndex, GhmMessageGetType getType=GHM_MSG_GET_DATA_ONLY)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__ghm__msg.html#ga9c6dffaa871f2443a32d75276160682d">ghmGetMessage</a>(WiconnectSocket &amp;socket, const char *msgId, GhmMessageGetType getType=GHM_MSG_GET_DATA_ONLY)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__activate.html#ga8bec70f780ca7de9dce1a15830c179ff">ghmIsActivated</a>(bool *statusPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502">ghmListMessages</a>(GhmMessageList &amp;msgList, uint8_t maxCount=0)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__msg.html#gadc281f497041b26a151c72a0b5d03543">ghmPostMessage</a>(WiconnectSocket &amp;socket, bool jsonFormatted=false)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2">ghmRead</a>(const char *controlName, const char **valueStrPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__com.html#ga2d4f14ef409c30b49ce2a06b72d10c7f">ghmRead</a>(const char *controlName, uint32_t *valueIntPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__ghm__com.html#ga965090d4b28bda9f58716b522a6bee12">ghmRead</a>(const char *controlName, char *valueBuffer, uint16_t valueBufferLen)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__com.html#ga0aa48506edb22c90be513683672b96c7">ghmSynchronize</a>(GhmSyncType type=GHM_SYNC_ALL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223">ghmWrite</a>(const char *elementName, const char *strValue)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__com.html#ga26ef47c451e7dbe869f19f5f36695e7c">ghmWrite</a>(const char *elementName, uint32_t uintValue)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__ghm__com.html#gab524e64f4bbae826c27bf39d7f2d3c2e">ghmWrite</a>(const char *elementName, int32_t intValue)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__com.html#ga5eb797aba87a3ab76d742afe34292ee6">ghmWrite</a>(const GhmElementArray *elementArray)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/classwiconnect_1_1_ghm_interface.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,201 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classwiconnect_1_1_ghm_interface.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classwiconnect_1_1_ghm_interface-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">wiconnect::GhmInterface Class Reference<div class="ingroups"><a class="el" href="group__api__ghm__types.html">Types</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>The provides an interface for <a href="http://goHACK.me">http://goHACK.me</a>.  
+ <a href="classwiconnect_1_1_ghm_interface.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="_ghm_interface_8h_source.html">GhmInterface.h</a>&gt;</code></p>
+
+<p>Inherited by <a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a>.</p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:gaff03ecaa08146e6925820209cdab56bd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__activate.html#gaff03ecaa08146e6925820209cdab56bd">ghmDownloadCapabilities</a> (const char *capsNameOrCustomUrl=NULL, uint32_t version=0)</td></tr>
+<tr class="memdesc:gaff03ecaa08146e6925820209cdab56bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Download a device capabilities file to WiFi module's internal file system.  <a href="group__api__ghm__activate.html#gaff03ecaa08146e6925820209cdab56bd">More...</a><br /></td></tr>
+<tr class="separator:gaff03ecaa08146e6925820209cdab56bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa0213731eebd4a14e9099d01ff76beff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate</a> (const char *userName, const char *password, const char *capsFilename=NULL)</td></tr>
+<tr class="memdesc:gaa0213731eebd4a14e9099d01ff76beff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Activate WiFi module with <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">More...</a><br /></td></tr>
+<tr class="separator:gaa0213731eebd4a14e9099d01ff76beff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad0e0484d1f9a6608475874544f96708b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__activate.html#gad0e0484d1f9a6608475874544f96708b">ghmDeactivate</a> (const char *userName, const char *password)</td></tr>
+<tr class="memdesc:gad0e0484d1f9a6608475874544f96708b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deactivate WiFi module with <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__activate.html#gad0e0484d1f9a6608475874544f96708b">More...</a><br /></td></tr>
+<tr class="separator:gad0e0484d1f9a6608475874544f96708b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8bec70f780ca7de9dce1a15830c179ff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__activate.html#ga8bec70f780ca7de9dce1a15830c179ff">ghmIsActivated</a> (bool *statusPtr)</td></tr>
+<tr class="memdesc:ga8bec70f780ca7de9dce1a15830c179ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return if WiFi module is activated with <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__activate.html#ga8bec70f780ca7de9dce1a15830c179ff">More...</a><br /></td></tr>
+<tr class="separator:ga8bec70f780ca7de9dce1a15830c179ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3fde7b34da992719b41fc52178b73bc2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2">ghmRead</a> (const char *controlName, const char **valueStrPtr)</td></tr>
+<tr class="memdesc:ga3fde7b34da992719b41fc52178b73bc2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read control data from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2">More...</a><br /></td></tr>
+<tr class="separator:ga3fde7b34da992719b41fc52178b73bc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2d4f14ef409c30b49ce2a06b72d10c7f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga2d4f14ef409c30b49ce2a06b72d10c7f">ghmRead</a> (const char *controlName, uint32_t *valueIntPtr)</td></tr>
+<tr class="memdesc:ga2d4f14ef409c30b49ce2a06b72d10c7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read control data from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__com.html#ga2d4f14ef409c30b49ce2a06b72d10c7f">More...</a><br /></td></tr>
+<tr class="separator:ga2d4f14ef409c30b49ce2a06b72d10c7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga965090d4b28bda9f58716b522a6bee12"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga965090d4b28bda9f58716b522a6bee12">ghmRead</a> (const char *controlName, char *valueBuffer, uint16_t valueBufferLen)</td></tr>
+<tr class="memdesc:ga965090d4b28bda9f58716b522a6bee12"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read control data from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__com.html#ga965090d4b28bda9f58716b522a6bee12">More...</a><br /></td></tr>
+<tr class="separator:ga965090d4b28bda9f58716b522a6bee12"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2f57fc33ad0e71d608b1350d4e3ab223"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223">ghmWrite</a> (const char *elementName, const char *strValue)</td></tr>
+<tr class="memdesc:ga2f57fc33ad0e71d608b1350d4e3ab223"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write stream or control data to <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223">More...</a><br /></td></tr>
+<tr class="separator:ga2f57fc33ad0e71d608b1350d4e3ab223"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga26ef47c451e7dbe869f19f5f36695e7c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga26ef47c451e7dbe869f19f5f36695e7c">ghmWrite</a> (const char *elementName, uint32_t uintValue)</td></tr>
+<tr class="memdesc:ga26ef47c451e7dbe869f19f5f36695e7c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write stream or control data to <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__com.html#ga26ef47c451e7dbe869f19f5f36695e7c">More...</a><br /></td></tr>
+<tr class="separator:ga26ef47c451e7dbe869f19f5f36695e7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab524e64f4bbae826c27bf39d7f2d3c2e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#gab524e64f4bbae826c27bf39d7f2d3c2e">ghmWrite</a> (const char *elementName, int32_t intValue)</td></tr>
+<tr class="memdesc:gab524e64f4bbae826c27bf39d7f2d3c2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write stream or control data to <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__com.html#gab524e64f4bbae826c27bf39d7f2d3c2e">More...</a><br /></td></tr>
+<tr class="separator:gab524e64f4bbae826c27bf39d7f2d3c2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5eb797aba87a3ab76d742afe34292ee6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga5eb797aba87a3ab76d742afe34292ee6">ghmWrite</a> (const <a class="el" href="structwiconnect_1_1_ghm_element_array.html">GhmElementArray</a> *elementArray)</td></tr>
+<tr class="memdesc:ga5eb797aba87a3ab76d742afe34292ee6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write stream or control data to <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__com.html#ga5eb797aba87a3ab76d742afe34292ee6">More...</a><br /></td></tr>
+<tr class="separator:ga5eb797aba87a3ab76d742afe34292ee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0aa48506edb22c90be513683672b96c7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga0aa48506edb22c90be513683672b96c7">ghmSynchronize</a> (<a class="el" href="group__api__ghm__types.html#ga44ea17651dcf42ac9816f549beb577ac">GhmSyncType</a> type=<a class="el" href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577aca8aa4d4efd897cd69e0f08feaeaa122e7">GHM_SYNC_ALL</a>)</td></tr>
+<tr class="memdesc:ga0aa48506edb22c90be513683672b96c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Synchronize WiFi module with <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__com.html#ga0aa48506edb22c90be513683672b96c7">More...</a><br /></td></tr>
+<tr class="separator:ga0aa48506edb22c90be513683672b96c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadc281f497041b26a151c72a0b5d03543"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#gadc281f497041b26a151c72a0b5d03543">ghmPostMessage</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, bool jsonFormatted=false)</td></tr>
+<tr class="memdesc:gadc281f497041b26a151c72a0b5d03543"><td class="mdescLeft">&#160;</td><td class="mdescRight">POST message to <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__msg.html#gadc281f497041b26a151c72a0b5d03543">More...</a><br /></td></tr>
+<tr class="separator:gadc281f497041b26a151c72a0b5d03543"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaaa05391432b2ca38bb416c671f57b234"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234">ghmGetMessage</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <a class="el" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a> getType=<a class="el" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127">GHM_MSG_GET_DATA_ONLY</a>)</td></tr>
+<tr class="memdesc:gaaa05391432b2ca38bb416c671f57b234"><td class="mdescLeft">&#160;</td><td class="mdescRight">GET message from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234">More...</a><br /></td></tr>
+<tr class="separator:gaaa05391432b2ca38bb416c671f57b234"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa905a010f0e234d290eaef6e42975c29"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#gaa905a010f0e234d290eaef6e42975c29">ghmGetMessage</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, uint8_t listIndex, <a class="el" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a> getType=<a class="el" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127">GHM_MSG_GET_DATA_ONLY</a>)</td></tr>
+<tr class="memdesc:gaa905a010f0e234d290eaef6e42975c29"><td class="mdescLeft">&#160;</td><td class="mdescRight">GET message from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__msg.html#gaa905a010f0e234d290eaef6e42975c29">More...</a><br /></td></tr>
+<tr class="separator:gaa905a010f0e234d290eaef6e42975c29"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9c6dffaa871f2443a32d75276160682d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#ga9c6dffaa871f2443a32d75276160682d">ghmGetMessage</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *msgId, <a class="el" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a> getType=<a class="el" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127">GHM_MSG_GET_DATA_ONLY</a>)</td></tr>
+<tr class="memdesc:ga9c6dffaa871f2443a32d75276160682d"><td class="mdescLeft">&#160;</td><td class="mdescRight">GET message from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__msg.html#ga9c6dffaa871f2443a32d75276160682d">More...</a><br /></td></tr>
+<tr class="separator:ga9c6dffaa871f2443a32d75276160682d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga451de9d69f7ecbf38e36056e502b94b0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#ga451de9d69f7ecbf38e36056e502b94b0">ghmDeleteMessage</a> (uint8_t listIndex)</td></tr>
+<tr class="memdesc:ga451de9d69f7ecbf38e36056e502b94b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete message from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__msg.html#ga451de9d69f7ecbf38e36056e502b94b0">More...</a><br /></td></tr>
+<tr class="separator:ga451de9d69f7ecbf38e36056e502b94b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7273f4c691aeccd241327f1be3e8d0e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#ga7273f4c691aeccd241327f1be3e8d0e9">ghmDeleteMessage</a> (const char *msgId)</td></tr>
+<tr class="memdesc:ga7273f4c691aeccd241327f1be3e8d0e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete message from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__msg.html#ga7273f4c691aeccd241327f1be3e8d0e9">More...</a><br /></td></tr>
+<tr class="separator:ga7273f4c691aeccd241327f1be3e8d0e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae69971594793e1a10f11a51277909502"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502">ghmListMessages</a> (<a class="el" href="classwiconnect_1_1_ghm_message_list.html">GhmMessageList</a> &amp;msgList, uint8_t maxCount=0)</td></tr>
+<tr class="memdesc:gae69971594793e1a10f11a51277909502"><td class="mdescLeft">&#160;</td><td class="mdescRight">List available messages for device on <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502">More...</a><br /></td></tr>
+<tr class="separator:gae69971594793e1a10f11a51277909502"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>The provides an interface for <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<p>The goHACK.me API provided by WiConnect enables monitoring and control of your ACKme device. You can set up a goHACK.me account, then using goHACK.me commands and goHACK.me variables, you can activate your device and synchronize data, control and messages with the goHACK.me cloud service.</p>
+<p>More information here: <a href="http://wiconnect.ack.me/2.0/gohackme">http://wiconnect.ack.me/2.0/gohackme</a></p>
+<dl class="section note"><dt>Note</dt><dd>This class is an interface to the <a class="el" href="classwiconnect_1_1_wiconnect.html" title="The root WiConnect library class. This class inheriets all WiConnect functionality. ">Wiconnect</a> class. It should never be independently instantiated or the parent of another class. </dd></dl>
+
+<p>Definition at line <a class="el" href="_ghm_interface_8h_source.html#l00081">81</a> of file <a class="el" href="_ghm_interface_8h_source.html">GhmInterface.h</a>.</p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/<a class="el" href="_ghm_interface_8h_source.html">GhmInterface.h</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/classwiconnect_1_1_ghm_interface.js	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,22 @@
+var classwiconnect_1_1_ghm_interface =
+[
+    [ "ghmActivate", "group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff", null ],
+    [ "ghmDeactivate", "group__api__ghm__activate.html#gad0e0484d1f9a6608475874544f96708b", null ],
+    [ "ghmDeleteMessage", "group__api__ghm__msg.html#ga451de9d69f7ecbf38e36056e502b94b0", null ],
+    [ "ghmDeleteMessage", "group__api__ghm__msg.html#ga7273f4c691aeccd241327f1be3e8d0e9", null ],
+    [ "ghmDownloadCapabilities", "group__api__ghm__activate.html#gaff03ecaa08146e6925820209cdab56bd", null ],
+    [ "ghmGetMessage", "group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234", null ],
+    [ "ghmGetMessage", "group__api__ghm__msg.html#gaa905a010f0e234d290eaef6e42975c29", null ],
+    [ "ghmGetMessage", "group__api__ghm__msg.html#ga9c6dffaa871f2443a32d75276160682d", null ],
+    [ "ghmIsActivated", "group__api__ghm__activate.html#ga8bec70f780ca7de9dce1a15830c179ff", null ],
+    [ "ghmListMessages", "group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502", null ],
+    [ "ghmPostMessage", "group__api__ghm__msg.html#gadc281f497041b26a151c72a0b5d03543", null ],
+    [ "ghmRead", "group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2", null ],
+    [ "ghmRead", "group__api__ghm__com.html#ga2d4f14ef409c30b49ce2a06b72d10c7f", null ],
+    [ "ghmRead", "group__api__ghm__com.html#ga965090d4b28bda9f58716b522a6bee12", null ],
+    [ "ghmSynchronize", "group__api__ghm__com.html#ga0aa48506edb22c90be513683672b96c7", null ],
+    [ "ghmWrite", "group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223", null ],
+    [ "ghmWrite", "group__api__ghm__com.html#ga26ef47c451e7dbe869f19f5f36695e7c", null ],
+    [ "ghmWrite", "group__api__ghm__com.html#gab524e64f4bbae826c27bf39d7f2d3c2e", null ],
+    [ "ghmWrite", "group__api__ghm__com.html#ga5eb797aba87a3ab76d742afe34292ee6", null ]
+];
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/classwiconnect_1_1_ghm_message-members.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classwiconnect_1_1_ghm_message.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">wiconnect::GhmMessage Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classwiconnect_1_1_ghm_message.html">wiconnect::GhmMessage</a>, including all inherited members.</p>
+<table class="directory">
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/classwiconnect_1_1_ghm_message.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,134 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classwiconnect_1_1_ghm_message.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="classwiconnect_1_1_ghm_message-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">wiconnect::GhmMessage Class Reference<div class="ingroups"><a class="el" href="group__api__ghm__types.html">Types</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Contains single entry from goHACK.me message listing.  
+ <a href="classwiconnect_1_1_ghm_message.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="_ghm_message_8h_source.html">GhmMessage.h</a>&gt;</code></p>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Contains single entry from goHACK.me message listing. </p>
+
+<p>Definition at line <a class="el" href="_ghm_message_8h_source.html#l00046">46</a> of file <a class="el" href="_ghm_message_8h_source.html">GhmMessage.h</a>.</p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/types/<a class="el" href="_ghm_message_8h_source.html">GhmMessage.h</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/classwiconnect_1_1_ghm_message_list-members.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classwiconnect_1_1_ghm_message_list.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">wiconnect::GhmMessageList Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classwiconnect_1_1_ghm_message_list.html">wiconnect::GhmMessageList</a>, including all inherited members.</p>
+<table class="directory">
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/classwiconnect_1_1_ghm_message_list.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,134 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classwiconnect_1_1_ghm_message_list.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="classwiconnect_1_1_ghm_message_list-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">wiconnect::GhmMessageList Class Reference<div class="ingroups"><a class="el" href="group__api__ghm__types.html">Types</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>List of goHACK.me messages.  
+ <a href="classwiconnect_1_1_ghm_message_list.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="_ghm_message_list_8h_source.html">GhmMessageList.h</a>&gt;</code></p>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>List of goHACK.me messages. </p>
+
+<p>Definition at line <a class="el" href="_ghm_message_list_8h_source.html#l00046">46</a> of file <a class="el" href="_ghm_message_list_8h_source.html">GhmMessageList.h</a>.</p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/types/<a class="el" href="_ghm_message_list_8h_source.html">GhmMessageList.h</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- a/doc/html/classwiconnect_1_1_log_func.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_log_func.html	Mon Oct 27 13:42:26 2014 -0700
@@ -123,7 +123,7 @@
 
 <p>Definition at line <a class="el" href="_log_func_8h_source.html#l00045">45</a> of file <a class="el" href="_log_func_8h_source.html">LogFunc.h</a>.</p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/types/<a class="el" href="_log_func_8h_source.html">LogFunc.h</a></li>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/types/<a class="el" href="_log_func_8h_source.html">LogFunc.h</a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
--- a/doc/html/classwiconnect_1_1_network_interface-members.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_network_interface-members.html	Mon Oct 27 13:42:26 2014 -0700
@@ -113,28 +113,32 @@
 <p>This is the complete list of members for <a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a>, including all inherited members.</p>
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="group__api__network__settings.html#ga70ec796b88eb6f8e7990dbf3eb2f2eff">getDhcpEnabled</a>(bool *enabledPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290">getIpAddress</a>(char *buffer=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b">getIpSettings</a>(uint32_t *ip, uint32_t *netmask, uint32_t *gateway)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__network__settings.html#ga585cb71d386ee61db3772f4b3218cb6e">getDnsAddress</a>(uint32_t *dnsAddress)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f">getIpAddress</a>(char *buffer ALLOW_NULL_STRING_BUFFER)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b">getIpSettings</a>(uint32_t *ip, uint32_t *netmask, uint32_t *gateway)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__network__wlan.html#ga70991a2c5865c8f0b44b67de35f3b6b3">getMacAddress</a>(MacAddress *macAddress)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b">getNetworkJoinResult</a>(NetworkJoinResult *joinResultPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__network__wlan.html#ga047ba9670f60406466391cec5bdd28e5">getNetworkStatus</a>(NetworkStatus *statusPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__network__settings.html#gaba16b9918e55c08285cf5b8b50dbabea">getSignalStrength</a>(NetworkSignalStrength *signalStrengthPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__conversion__util.html#gaff8b0af70f4d4be792b943ad3af27303">ipToStr</a>(uint32_t ip, char *ipStrBuffer=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__network__setup.html#gab52d3a01427d0e8bd52460d992144f65">isWebSetupRunning</a>(bool *isRunningPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__network__wlan.html#gac439d0af5a17da32d405e25dcba83d16">join</a>(const char *ssid=NULL, const char *password=NULL, const Callback &amp;completeHandler=Callback())</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__network__wlan.html#ga14dc0f4fa58a7ebb25b77fae22052328">leave</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__network__util.html#ga1770babfc2abc6da7c085ef92709ee89">lookup</a>(const char *domain, uint32_t *ipAddressPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__conversion__util.html#ga13ecaf390b4bf4a68b51a6b18e669134">macAddressToStr</a>(const MacAddress *macAddress, char *macStrBuffer=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__conversion__util.html#ga5a682e671900b9b7f931137deb847fa6">networkJoinResultToStr</a>(NetworkJoinResult joinResult)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="group__conversion__util.html#gae02c549079cfb0350117cd6343a3d66f">networkSecurityToStr</a>(NetworkSecurity security)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__conversion__util.html#gacff5a4927d79e8b4c0d5a3050f5950b0">networkStatusToStr</a>(NetworkStatus status)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__network__util.html#ga1da909dadb6f0e90218927ed350f72bc">ping</a>(const char *domain=NULL, uint32_t *timeMsPtr=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__conversion__util.html#ga6216eed4cc05c37ce1ed13a0fbb6acd8">rssiToSignalStrength</a>(int rssi)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__network__util.html#gacdf014d8aca9de33dbc1563c6bb1f956">scan</a>(ScanResultList &amp;resultList, const uint8_t *channelList=NULL, const char *ssid=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__network__settings.html#ga65eb99f880ed739d0f3cd393e5b56eaf">setDhcpEnabled</a>(bool enabled)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__network__wlan.html#gaa9db3c463cf6b4f351c37671882dd3ee">getRssi</a>(int32_t *rssiPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__network__wlan.html#gaba16b9918e55c08285cf5b8b50dbabea">getSignalStrength</a>(NetworkSignalStrength *signalStrengthPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__conversion__util.html#ga02e6b01f11f2283208f051b1b49b634c">ipToStr</a>(uint32_t ip, char *ipStrBuffer ALLOW_NULL_STRING_BUFFER)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__network__setup.html#gab52d3a01427d0e8bd52460d992144f65">isWebSetupRunning</a>(bool *isRunningPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__network__wlan.html#gac439d0af5a17da32d405e25dcba83d16">join</a>(const char *ssid=NULL, const char *password=NULL, const Callback &amp;completeHandler=Callback())</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__network__wlan.html#ga14dc0f4fa58a7ebb25b77fae22052328">leave</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__network__util.html#ga1770babfc2abc6da7c085ef92709ee89">lookup</a>(const char *domain, uint32_t *ipAddressPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__conversion__util.html#ga01520d55f1923d90fb899ddef2f21cdf">macAddressToStr</a>(const MacAddress *macAddress, char *macStrBuffer ALLOW_NULL_STRING_BUFFER)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="group__conversion__util.html#ga5a682e671900b9b7f931137deb847fa6">networkJoinResultToStr</a>(NetworkJoinResult joinResult)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__conversion__util.html#gae02c549079cfb0350117cd6343a3d66f">networkSecurityToStr</a>(NetworkSecurity security)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="group__conversion__util.html#gacff5a4927d79e8b4c0d5a3050f5950b0">networkStatusToStr</a>(NetworkStatus status)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__network__util.html#ga1da909dadb6f0e90218927ed350f72bc">ping</a>(const char *domain=NULL, uint32_t *timeMsPtr=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__conversion__util.html#ga6216eed4cc05c37ce1ed13a0fbb6acd8">rssiToSignalStrength</a>(int rssi)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__network__util.html#gacdf014d8aca9de33dbc1563c6bb1f956">scan</a>(ScanResultList &amp;resultList, const uint8_t *channelList=NULL, const char *ssid=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__network__settings.html#ga65eb99f880ed739d0f3cd393e5b56eaf">setDhcpEnabled</a>(bool enabled)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__network__settings.html#ga258d8b80064c6ce311a433affe63a0e9">setDnsAddress</a>(uint32_t dnsAddress)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__network__settings.html#ga2f7ec21084d3f2835d9c1c201915a9e0">setIpSettings</a>(uint32_t ip, uint32_t netmask, uint32_t gateway)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__network__settings.html#gaa418175dd3d06b870f3dd8e035cb4dd0">setIpSettings</a>(const char *ip, const char *netmask, const char *gateway)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__conversion__util.html#gad4661f859cfadbe193793898671043c9">signalStrengthToStr</a>(NetworkSignalStrength signalStrenth)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__conversion__util.html#gafce7929a10e16cf9be7307a2f97bef3f">ssidToStr</a>(const Ssid *ssid, char *ssidStrBuffer=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__conversion__util.html#gae8b534c249d503aa764017bb088f3890">ssidToStr</a>(const Ssid *ssid, char *ssidStrBuffer ALLOW_NULL_STRING_BUFFER)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__network__setup.html#gaea3e133f2ee8c95d8d108c15561f3847">startWebSetup</a>(const char *ssid=NULL, const char *password=NULL, const Callback &amp;completeHandler=Callback())</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__network__setup.html#gac5ca67b7bfa587935b5619e441dc8d8a">stopWebSetup</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__conversion__util.html#ga93bdb8669a70adaa61dc76073ce66591">strToIp</a>(const char *str, uint32_t *intPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
--- a/doc/html/classwiconnect_1_1_network_interface.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_network_interface.html	Mon Oct 27 13:42:26 2014 -0700
@@ -144,6 +144,18 @@
 <tr class="memitem:gafefe6e679d7b48a7127d3ed6371fe58b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b">getNetworkJoinResult</a> (<a class="el" href="group__api__network__types.html#ga5f6f5c916a5dd1676f98da7fa511451d">NetworkJoinResult</a> *joinResultPtr)</td></tr>
 <tr class="memdesc:gafefe6e679d7b48a7127d3ed6371fe58b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the result of joining the network.  <a href="group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b">More...</a><br /></td></tr>
 <tr class="separator:gafefe6e679d7b48a7127d3ed6371fe58b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaba16b9918e55c08285cf5b8b50dbabea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaba16b9918e55c08285cf5b8b50dbabea"></a>
+<a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__wlan.html#gaba16b9918e55c08285cf5b8b50dbabea">getSignalStrength</a> (<a class="el" href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">NetworkSignalStrength</a> *signalStrengthPtr)</td></tr>
+<tr class="memdesc:gaba16b9918e55c08285cf5b8b50dbabea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get <a class="el" href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">NetworkSignalStrength</a> of WiFi network module is connected. <br /></td></tr>
+<tr class="separator:gaba16b9918e55c08285cf5b8b50dbabea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa9db3c463cf6b4f351c37671882dd3ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa9db3c463cf6b4f351c37671882dd3ee"></a>
+<a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__wlan.html#gaa9db3c463cf6b4f351c37671882dd3ee">getRssi</a> (int32_t *rssiPtr)</td></tr>
+<tr class="memdesc:gaa9db3c463cf6b4f351c37671882dd3ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the RSSI in dBm of WiFi network. <br /></td></tr>
+<tr class="separator:gaa9db3c463cf6b4f351c37671882dd3ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga70991a2c5865c8f0b44b67de35f3b6b3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga70991a2c5865c8f0b44b67de35f3b6b3"></a>
+<a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__wlan.html#ga70991a2c5865c8f0b44b67de35f3b6b3">getMacAddress</a> (<a class="el" href="structwiconnect_1_1_mac_address.html">MacAddress</a> *macAddress)</td></tr>
+<tr class="memdesc:ga70991a2c5865c8f0b44b67de35f3b6b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get MAC address of the WiFi module. <br /></td></tr>
+<tr class="separator:ga70991a2c5865c8f0b44b67de35f3b6b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:gacdf014d8aca9de33dbc1563c6bb1f956"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__util.html#gacdf014d8aca9de33dbc1563c6bb1f956">scan</a> (<a class="el" href="classwiconnect_1_1_scan_result_list.html">ScanResultList</a> &amp;resultList, const uint8_t *channelList=NULL, const char *ssid=NULL)</td></tr>
 <tr class="memdesc:gacdf014d8aca9de33dbc1563c6bb1f956"><td class="mdescLeft">&#160;</td><td class="mdescRight">Scan for available WiFi networks.  <a href="group__api__network__util.html#gacdf014d8aca9de33dbc1563c6bb1f956">More...</a><br /></td></tr>
 <tr class="separator:gacdf014d8aca9de33dbc1563c6bb1f956"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -172,13 +184,17 @@
 <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b">getIpSettings</a> (uint32_t *ip, uint32_t *netmask, uint32_t *gateway)</td></tr>
 <tr class="memdesc:ga291aef702f1c10bf2970394e3458022b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get network IP settings. <br /></td></tr>
 <tr class="separator:ga291aef702f1c10bf2970394e3458022b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gaba16b9918e55c08285cf5b8b50dbabea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaba16b9918e55c08285cf5b8b50dbabea"></a>
-<a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__settings.html#gaba16b9918e55c08285cf5b8b50dbabea">getSignalStrength</a> (<a class="el" href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">NetworkSignalStrength</a> *signalStrengthPtr)</td></tr>
-<tr class="memdesc:gaba16b9918e55c08285cf5b8b50dbabea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get signal strength to WiFi network. <br /></td></tr>
-<tr class="separator:gaba16b9918e55c08285cf5b8b50dbabea"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga0b8fc3d5be0bae9ffcdc1b4b9aee6290"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290">getIpAddress</a> (char *buffer=NULL)</td></tr>
-<tr class="memdesc:ga0b8fc3d5be0bae9ffcdc1b4b9aee6290"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the current IP address of the module if possible, else return 0.0.0.0.  <a href="group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290">More...</a><br /></td></tr>
-<tr class="separator:ga0b8fc3d5be0bae9ffcdc1b4b9aee6290"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga258d8b80064c6ce311a433affe63a0e9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga258d8b80064c6ce311a433affe63a0e9"></a>
+<a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__settings.html#ga258d8b80064c6ce311a433affe63a0e9">setDnsAddress</a> (uint32_t dnsAddress)</td></tr>
+<tr class="memdesc:ga258d8b80064c6ce311a433affe63a0e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set static DNS Address. <br /></td></tr>
+<tr class="separator:ga258d8b80064c6ce311a433affe63a0e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga585cb71d386ee61db3772f4b3218cb6e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga585cb71d386ee61db3772f4b3218cb6e"></a>
+<a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__settings.html#ga585cb71d386ee61db3772f4b3218cb6e">getDnsAddress</a> (uint32_t *dnsAddress)</td></tr>
+<tr class="memdesc:ga585cb71d386ee61db3772f4b3218cb6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the static DNS address. <br /></td></tr>
+<tr class="separator:ga585cb71d386ee61db3772f4b3218cb6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabd8eb629fd40defaa9ab22c189652a3f"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f">getIpAddress</a> (char *buffer ALLOW_NULL_STRING_BUFFER)</td></tr>
+<tr class="memdesc:gabd8eb629fd40defaa9ab22c189652a3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the current IP address of the module if possible, else return 0.0.0.0.  <a href="group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f">More...</a><br /></td></tr>
+<tr class="separator:gabd8eb629fd40defaa9ab22c189652a3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
 Static Public Member Functions</h2></td></tr>
@@ -186,10 +202,10 @@
 static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#ga93bdb8669a70adaa61dc76073ce66591">strToIp</a> (const char *str, uint32_t *intPtr)</td></tr>
 <tr class="memdesc:ga93bdb8669a70adaa61dc76073ce66591"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert string to IP address. <br /></td></tr>
 <tr class="separator:ga93bdb8669a70adaa61dc76073ce66591"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gaff8b0af70f4d4be792b943ad3af27303"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaff8b0af70f4d4be792b943ad3af27303"></a>
-static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#gaff8b0af70f4d4be792b943ad3af27303">ipToStr</a> (uint32_t ip, char *ipStrBuffer=NULL)</td></tr>
-<tr class="memdesc:gaff8b0af70f4d4be792b943ad3af27303"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert IP address to string. <br /></td></tr>
-<tr class="separator:gaff8b0af70f4d4be792b943ad3af27303"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga02e6b01f11f2283208f051b1b49b634c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga02e6b01f11f2283208f051b1b49b634c"></a>
+static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#ga02e6b01f11f2283208f051b1b49b634c">ipToStr</a> (uint32_t ip, char *ipStrBuffer ALLOW_NULL_STRING_BUFFER)</td></tr>
+<tr class="memdesc:ga02e6b01f11f2283208f051b1b49b634c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert IP address to string. <br /></td></tr>
+<tr class="separator:ga02e6b01f11f2283208f051b1b49b634c"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:gacff5a4927d79e8b4c0d5a3050f5950b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacff5a4927d79e8b4c0d5a3050f5950b0"></a>
 static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#gacff5a4927d79e8b4c0d5a3050f5950b0">networkStatusToStr</a> (<a class="el" href="group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99">NetworkStatus</a> status)</td></tr>
 <tr class="memdesc:gacff5a4927d79e8b4c0d5a3050f5950b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert <a class="el" href="group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99">NetworkStatus</a> to string. <br /></td></tr>
@@ -218,26 +234,26 @@
 static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#ga6a479a58591ead92dcf0586e11fcad17">strToSsid</a> (const char *str, <a class="el" href="structwiconnect_1_1_ssid.html">Ssid</a> *ssid)</td></tr>
 <tr class="memdesc:ga6a479a58591ead92dcf0586e11fcad17"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert string <a class="el" href="structwiconnect_1_1_ssid.html">Ssid</a>. <br /></td></tr>
 <tr class="separator:ga6a479a58591ead92dcf0586e11fcad17"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gafce7929a10e16cf9be7307a2f97bef3f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gafce7929a10e16cf9be7307a2f97bef3f"></a>
-static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#gafce7929a10e16cf9be7307a2f97bef3f">ssidToStr</a> (const <a class="el" href="structwiconnect_1_1_ssid.html">Ssid</a> *ssid, char *ssidStrBuffer=NULL)</td></tr>
-<tr class="memdesc:gafce7929a10e16cf9be7307a2f97bef3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert <a class="el" href="structwiconnect_1_1_ssid.html">Ssid</a> to string. <br /></td></tr>
-<tr class="separator:gafce7929a10e16cf9be7307a2f97bef3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae8b534c249d503aa764017bb088f3890"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae8b534c249d503aa764017bb088f3890"></a>
+static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#gae8b534c249d503aa764017bb088f3890">ssidToStr</a> (const <a class="el" href="structwiconnect_1_1_ssid.html">Ssid</a> *ssid, char *ssidStrBuffer ALLOW_NULL_STRING_BUFFER)</td></tr>
+<tr class="memdesc:gae8b534c249d503aa764017bb088f3890"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert <a class="el" href="structwiconnect_1_1_ssid.html">Ssid</a> to string. <br /></td></tr>
+<tr class="separator:gae8b534c249d503aa764017bb088f3890"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga347f05073370d6872a5cdac74de39b1b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga347f05073370d6872a5cdac74de39b1b"></a>
 static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#ga347f05073370d6872a5cdac74de39b1b">strToMacAddress</a> (const char *str, <a class="el" href="structwiconnect_1_1_mac_address.html">MacAddress</a> *macAddress)</td></tr>
 <tr class="memdesc:ga347f05073370d6872a5cdac74de39b1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert string <a class="el" href="structwiconnect_1_1_mac_address.html">MacAddress</a>. <br /></td></tr>
 <tr class="separator:ga347f05073370d6872a5cdac74de39b1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga13ecaf390b4bf4a68b51a6b18e669134"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga13ecaf390b4bf4a68b51a6b18e669134"></a>
-static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#ga13ecaf390b4bf4a68b51a6b18e669134">macAddressToStr</a> (const <a class="el" href="structwiconnect_1_1_mac_address.html">MacAddress</a> *macAddress, char *macStrBuffer=NULL)</td></tr>
-<tr class="memdesc:ga13ecaf390b4bf4a68b51a6b18e669134"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert <a class="el" href="structwiconnect_1_1_mac_address.html">MacAddress</a> to string. <br /></td></tr>
-<tr class="separator:ga13ecaf390b4bf4a68b51a6b18e669134"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga01520d55f1923d90fb899ddef2f21cdf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga01520d55f1923d90fb899ddef2f21cdf"></a>
+static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#ga01520d55f1923d90fb899ddef2f21cdf">macAddressToStr</a> (const <a class="el" href="structwiconnect_1_1_mac_address.html">MacAddress</a> *macAddress, char *macStrBuffer ALLOW_NULL_STRING_BUFFER)</td></tr>
+<tr class="memdesc:ga01520d55f1923d90fb899ddef2f21cdf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert <a class="el" href="structwiconnect_1_1_mac_address.html">MacAddress</a> to string. <br /></td></tr>
+<tr class="separator:ga01520d55f1923d90fb899ddef2f21cdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>The provides an interface for joining and/or creating a network. It provides other utilities such as scanning for networks, pinging a network, resolving a domain name to IP address. </p>
 <dl class="section note"><dt>Note</dt><dd>This class is an interface to the <a class="el" href="classwiconnect_1_1_wiconnect.html" title="The root WiConnect library class. This class inheriets all WiConnect functionality. ">Wiconnect</a> class. It should never be independently instantiated or the parent of another class. </dd></dl>
 
-<p>Definition at line <a class="el" href="_network_interface_8h_source.html#l00049">49</a> of file <a class="el" href="_network_interface_8h_source.html">NetworkInterface.h</a>.</p>
+<p>Definition at line <a class="el" href="_network_interface_8h_source.html#l00055">55</a> of file <a class="el" href="_network_interface_8h_source.html">NetworkInterface.h</a>.</p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/<a class="el" href="_network_interface_8h_source.html">NetworkInterface.h</a></li>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/<a class="el" href="_network_interface_8h_source.html">NetworkInterface.h</a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
--- a/doc/html/classwiconnect_1_1_network_interface.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_network_interface.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,11 +1,14 @@
 var classwiconnect_1_1_network_interface =
 [
     [ "getDhcpEnabled", "group__api__network__settings.html#ga70ec796b88eb6f8e7990dbf3eb2f2eff", null ],
-    [ "getIpAddress", "group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290", null ],
+    [ "getDnsAddress", "group__api__network__settings.html#ga585cb71d386ee61db3772f4b3218cb6e", null ],
+    [ "getIpAddress", "group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f", null ],
     [ "getIpSettings", "group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b", null ],
+    [ "getMacAddress", "group__api__network__wlan.html#ga70991a2c5865c8f0b44b67de35f3b6b3", null ],
     [ "getNetworkJoinResult", "group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b", null ],
     [ "getNetworkStatus", "group__api__network__wlan.html#ga047ba9670f60406466391cec5bdd28e5", null ],
-    [ "getSignalStrength", "group__api__network__settings.html#gaba16b9918e55c08285cf5b8b50dbabea", null ],
+    [ "getRssi", "group__api__network__wlan.html#gaa9db3c463cf6b4f351c37671882dd3ee", null ],
+    [ "getSignalStrength", "group__api__network__wlan.html#gaba16b9918e55c08285cf5b8b50dbabea", null ],
     [ "isWebSetupRunning", "group__api__network__setup.html#gab52d3a01427d0e8bd52460d992144f65", null ],
     [ "join", "group__api__network__wlan.html#gac439d0af5a17da32d405e25dcba83d16", null ],
     [ "leave", "group__api__network__wlan.html#ga14dc0f4fa58a7ebb25b77fae22052328", null ],
@@ -13,6 +16,7 @@
     [ "ping", "group__api__network__util.html#ga1da909dadb6f0e90218927ed350f72bc", null ],
     [ "scan", "group__api__network__util.html#gacdf014d8aca9de33dbc1563c6bb1f956", null ],
     [ "setDhcpEnabled", "group__api__network__settings.html#ga65eb99f880ed739d0f3cd393e5b56eaf", null ],
+    [ "setDnsAddress", "group__api__network__settings.html#ga258d8b80064c6ce311a433affe63a0e9", null ],
     [ "setIpSettings", "group__api__network__settings.html#ga2f7ec21084d3f2835d9c1c201915a9e0", null ],
     [ "setIpSettings", "group__api__network__settings.html#gaa418175dd3d06b870f3dd8e035cb4dd0", null ],
     [ "startWebSetup", "group__api__network__setup.html#gaea3e133f2ee8c95d8d108c15561f3847", null ],
--- a/doc/html/classwiconnect_1_1_queued_command.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_queued_command.html	Mon Oct 27 13:42:26 2014 -0700
@@ -121,7 +121,7 @@
 
 <p>Definition at line <a class="el" href="_queued_command_8h_source.html#l00043">43</a> of file <a class="el" href="_queued_command_8h_source.html">QueuedCommand.h</a>.</p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/types/<a class="el" href="_queued_command_8h_source.html">QueuedCommand.h</a></li>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/types/<a class="el" href="_queued_command_8h_source.html">QueuedCommand.h</a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
--- a/doc/html/classwiconnect_1_1_reader_func.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_reader_func.html	Mon Oct 27 13:42:26 2014 -0700
@@ -123,7 +123,7 @@
 
 <p>Definition at line <a class="el" href="_reader_func_8h_source.html#l00045">45</a> of file <a class="el" href="_reader_func_8h_source.html">ReaderFunc.h</a>.</p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/types/<a class="el" href="_reader_func_8h_source.html">ReaderFunc.h</a></li>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/types/<a class="el" href="_reader_func_8h_source.html">ReaderFunc.h</a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
--- a/doc/html/classwiconnect_1_1_scan_result.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_scan_result.html	Mon Oct 27 13:42:26 2014 -0700
@@ -121,7 +121,7 @@
 
 <p>Definition at line <a class="el" href="_scan_result_8h_source.html#l00046">46</a> of file <a class="el" href="_scan_result_8h_source.html">ScanResult.h</a>.</p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/types/<a class="el" href="_scan_result_8h_source.html">ScanResult.h</a></li>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/types/<a class="el" href="_scan_result_8h_source.html">ScanResult.h</a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
--- a/doc/html/classwiconnect_1_1_scan_result_list.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_scan_result_list.html	Mon Oct 27 13:42:26 2014 -0700
@@ -121,7 +121,7 @@
 
 <p>Definition at line <a class="el" href="_scan_result_list_8h_source.html#l00046">46</a> of file <a class="el" href="_scan_result_list_8h_source.html">ScanResultList.h</a>.</p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/types/<a class="el" href="_scan_result_list_8h_source.html">ScanResultList.h</a></li>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/types/<a class="el" href="_scan_result_list_8h_source.html">ScanResultList.h</a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
--- a/doc/html/classwiconnect_1_1_serial_config.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_serial_config.html	Mon Oct 27 13:42:26 2014 -0700
@@ -119,7 +119,7 @@
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Host&lt;-&gt;<a class="el" href="classwiconnect_1_1_wiconnect.html" title="The root WiConnect library class. This class inheriets all WiConnect functionality. ">Wiconnect</a> Module serial configuration. </p>
 
-<p>Definition at line <a class="el" href="sdk_8h_source.html#l00129">129</a> of file <a class="el" href="sdk_8h_source.html">sdk.h</a>.</p>
+<p>Definition at line <a class="el" href="sdk_8h_source.html#l00140">140</a> of file <a class="el" href="sdk_8h_source.html">sdk.h</a>.</p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
 <li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/sdk/mbed/<a class="el" href="sdk_8h_source.html">sdk.h</a></li>
 </ul>
--- a/doc/html/classwiconnect_1_1_socket_interface-members.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_socket_interface-members.html	Mon Oct 27 13:42:26 2014 -0700
@@ -113,21 +113,20 @@
 <p>This is the complete list of members for <a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a>, including all inherited members.</p>
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106">closeAllSockets</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__socket__misc.html#ga037cb2813683697342fff01239c7f6f8">connect</a>(WiconnectSocket &amp;socket, SocketType type, const char *host, uint16_t remortPort, uint16_t localPort, const void *args, Pin irqPin)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__socket__misc.html#gab24204ef309b6e7a52b03b35a7046b45">connect</a>(WiconnectSocket &amp;socket, SocketType type, const char *host, uint16_t remortPort, uint16_t localPort, const void *args GPIO_IRQ_ARG)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__socket__http.html#gabed18edc44f464bac64ce8a6dc3617ec">httpAddHeader</a>(WiconnectSocket &amp;socket, const char *key, const char *value)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__socket__http.html#ga181a03d883f60dff0c03b65e066f0eed">httpConnect</a>(WiconnectSocket &amp;socket, const char *url, const HttpSocketArgs *args)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__socket__http.html#gac9b6c6a348f790cc8d43889dd72029f6">httpGet</a>(WiconnectSocket &amp;socket, const char *url, bool openOnly=false, const char *certFilename=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__socket__http.html#gadf59ca0783b89ee32f205e33f1bd5517">httpGetStatus</a>(WiconnectSocket &amp;socket, uint32_t *statusCodePtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__socket__http.html#gabcb3d69b2b1718e7ebe1ed171dec1f85">httpHead</a>(WiconnectSocket &amp;socket, const char *url, const char *certFilename=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__socket__http.html#ga1b6a3ebdbd164f0eb683fc335ef4d365">httpPost</a>(WiconnectSocket &amp;socket, const char *url, const char *contextType, bool openOnly=true, const char *certFilename=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a">registerSocketIrqHandler</a>(Pin irqPin, const Callback &amp;handler)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3">tcpAccept</a>(WiconnectSocket &amp;socket, int timeoutMs=WICONNECT_WAIT_FOREVER)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__tcp.html#ga4a788d604d759b5da51f682b998b9bd2">tcpConnect</a>(WiconnectSocket &amp;socket, const char *host, uint16_t remortPort, Pin irqPin=PIN_NC)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__socket__tcp.html#ga563831b33089437233f128483d034578">tcpListen</a>(uint16_t listeningPort, int maxClients=0, Pin irqPin=PIN_NC)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0">tcpServerStop</a>(void)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__socket__tls.html#gacf10d28ced4591d99c4113ebee6382ca">tlsConnect</a>(WiconnectSocket &amp;socket, const char *host, uint16_t remortPort, const char *certFilename=NULL, Pin irqPin=PIN_NC)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__udp.html#ga80f1d19174124f3d0f246e1c1201b3ec">udpConnect</a>(WiconnectSocket &amp;socket, const char *host, uint16_t remortPort, uint16_t localPort=SOCKET_ANY_PORT, Pin irqPin=PIN_NC)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__socket__misc.html#ga820d2fdb12d343212638e55633bd8551">unregisterSocketIrqHandler</a>(Pin irqPin)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035">tcpAccept</a>(WiconnectSocket &amp;socket, uint32_t timeoutMs=WICONNECT_WAIT_FOREVER)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__socket__tcp.html#gad8e8632715a38222ce4fea5fe0aaf527">tcpConnect</a>(WiconnectSocket &amp;socket, const char *host, uint16_t remortPort GPIO_IRQ_ARG_NC)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa">tcpListen</a>(uint16_t listeningPort, int maxClients=0 GPIO_IRQ_ARG_NC)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0">tcpServerStop</a>(void)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__tls.html#ga4e6e89eb9aedec1ff6d25645c33f51e4">tlsConnect</a>(WiconnectSocket &amp;socket, const char *host, uint16_t remortPort, const char *certFilename=NULL GPIO_IRQ_ARG_NC)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__socket__udp.html#ga0ca5eabcd64ce45b574205447101f8aa">udpConnect</a>(WiconnectSocket &amp;socket, const char *host, uint16_t remortPort, uint16_t localPort=SOCKET_ANY_PORT GPIO_IRQ_ARG_NC)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__udp.html#ga067fb0d662d8e27e3f5b561ded29a51a">udpListen</a>(WiconnectUdpServer &amp;udpServer, uint16_t listeningPort)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/classwiconnect_1_1_socket_interface.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_socket_interface.html	Mon Oct 27 13:42:26 2014 -0700
@@ -125,33 +125,30 @@
 <tr class="memitem:ga8a80d96efac7cc514fe7fc61d1878106"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106">closeAllSockets</a> ()</td></tr>
 <tr class="memdesc:ga8a80d96efac7cc514fe7fc61d1878106"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close all opened sockets.  <a href="group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106">More...</a><br /></td></tr>
 <tr class="separator:ga8a80d96efac7cc514fe7fc61d1878106"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga94d1eb5407cb8b60ad366ecbe0e1b52a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a">registerSocketIrqHandler</a> (<a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin, const <a class="el" href="classwiconnect_1_1_callback.html">Callback</a> &amp;handler)</td></tr>
-<tr class="memdesc:ga94d1eb5407cb8b60ad366ecbe0e1b52a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a host pin as an external interrupt. When the external interrupt is triggered, the supplied callback is executed.  <a href="group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a">More...</a><br /></td></tr>
-<tr class="separator:ga94d1eb5407cb8b60ad366ecbe0e1b52a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga820d2fdb12d343212638e55633bd8551"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__misc.html#ga820d2fdb12d343212638e55633bd8551">unregisterSocketIrqHandler</a> (<a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin)</td></tr>
-<tr class="memdesc:ga820d2fdb12d343212638e55633bd8551"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unregister a previously registered IRQ pin.  <a href="group__api__socket__misc.html#ga820d2fdb12d343212638e55633bd8551">More...</a><br /></td></tr>
-<tr class="separator:ga820d2fdb12d343212638e55633bd8551"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga037cb2813683697342fff01239c7f6f8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__misc.html#ga037cb2813683697342fff01239c7f6f8">connect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <a class="el" href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">SocketType</a> type, const char *host, uint16_t remortPort, uint16_t localPort, const void *args, <a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin)</td></tr>
-<tr class="memdesc:ga037cb2813683697342fff01239c7f6f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote server.  <a href="group__api__socket__misc.html#ga037cb2813683697342fff01239c7f6f8">More...</a><br /></td></tr>
-<tr class="separator:ga037cb2813683697342fff01239c7f6f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga4a788d604d759b5da51f682b998b9bd2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#ga4a788d604d759b5da51f682b998b9bd2">tcpConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *host, uint16_t remortPort, <a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin=<a class="el" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>)</td></tr>
-<tr class="memdesc:ga4a788d604d759b5da51f682b998b9bd2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote TCP server.  <a href="group__api__socket__tcp.html#ga4a788d604d759b5da51f682b998b9bd2">More...</a><br /></td></tr>
-<tr class="separator:ga4a788d604d759b5da51f682b998b9bd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga563831b33089437233f128483d034578"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#ga563831b33089437233f128483d034578">tcpListen</a> (uint16_t listeningPort, int maxClients=0, <a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin=<a class="el" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>)</td></tr>
-<tr class="memdesc:ga563831b33089437233f128483d034578"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start internal TCP server and listen on specified port.  <a href="group__api__socket__tcp.html#ga563831b33089437233f128483d034578">More...</a><br /></td></tr>
-<tr class="separator:ga563831b33089437233f128483d034578"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga0ea4efc810c7c5a9fbd96fcc627633b3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3">tcpAccept</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, int timeoutMs=<a class="el" href="group__api__core__macro.html#ga580e5f45fee866c845e0d3fd1eb1744a">WICONNECT_WAIT_FOREVER</a>)</td></tr>
-<tr class="memdesc:ga0ea4efc810c7c5a9fbd96fcc627633b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait for next client to connect to TCP server.  <a href="group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3">More...</a><br /></td></tr>
-<tr class="separator:ga0ea4efc810c7c5a9fbd96fcc627633b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab24204ef309b6e7a52b03b35a7046b45"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__misc.html#gab24204ef309b6e7a52b03b35a7046b45">connect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <a class="el" href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">SocketType</a> type, const char *host, uint16_t remortPort, uint16_t localPort, const void *args GPIO_IRQ_ARG)</td></tr>
+<tr class="memdesc:gab24204ef309b6e7a52b03b35a7046b45"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote server.  <a href="group__api__socket__misc.html#gab24204ef309b6e7a52b03b35a7046b45">More...</a><br /></td></tr>
+<tr class="separator:gab24204ef309b6e7a52b03b35a7046b45"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad8e8632715a38222ce4fea5fe0aaf527"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#gad8e8632715a38222ce4fea5fe0aaf527">tcpConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *host, uint16_t remortPort GPIO_IRQ_ARG_NC)</td></tr>
+<tr class="memdesc:gad8e8632715a38222ce4fea5fe0aaf527"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote TCP server.  <a href="group__api__socket__tcp.html#gad8e8632715a38222ce4fea5fe0aaf527">More...</a><br /></td></tr>
+<tr class="separator:gad8e8632715a38222ce4fea5fe0aaf527"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9f4f3e53ea7f4e84d43529da8580aaaa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa">tcpListen</a> (uint16_t listeningPort, int maxClients=0 GPIO_IRQ_ARG_NC)</td></tr>
+<tr class="memdesc:ga9f4f3e53ea7f4e84d43529da8580aaaa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start internal TCP server and listen on specified port.  <a href="group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa">More...</a><br /></td></tr>
+<tr class="separator:ga9f4f3e53ea7f4e84d43529da8580aaaa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9e12bc568b7e8d72152e53a90de13035"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035">tcpAccept</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, uint32_t timeoutMs=<a class="el" href="group__api__core__macro.html#ga580e5f45fee866c845e0d3fd1eb1744a">WICONNECT_WAIT_FOREVER</a>)</td></tr>
+<tr class="memdesc:ga9e12bc568b7e8d72152e53a90de13035"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait for next client to connect to TCP server.  <a href="group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035">More...</a><br /></td></tr>
+<tr class="separator:ga9e12bc568b7e8d72152e53a90de13035"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga3d0137ebe308674e75f81457c38679d0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0">tcpServerStop</a> (void)</td></tr>
 <tr class="memdesc:ga3d0137ebe308674e75f81457c38679d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop TCP server from listening on port. Close all connected clients.  <a href="group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0">More...</a><br /></td></tr>
 <tr class="separator:ga3d0137ebe308674e75f81457c38679d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gacf10d28ced4591d99c4113ebee6382ca"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tls.html#gacf10d28ced4591d99c4113ebee6382ca">tlsConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *host, uint16_t remortPort, const char *certFilename=NULL, <a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin=<a class="el" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>)</td></tr>
-<tr class="memdesc:gacf10d28ced4591d99c4113ebee6382ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote TLS server.  <a href="group__api__socket__tls.html#gacf10d28ced4591d99c4113ebee6382ca">More...</a><br /></td></tr>
-<tr class="separator:gacf10d28ced4591d99c4113ebee6382ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga80f1d19174124f3d0f246e1c1201b3ec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__udp.html#ga80f1d19174124f3d0f246e1c1201b3ec">udpConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *host, uint16_t remortPort, uint16_t localPort=<a class="el" href="group__api__socket__macro.html#gae54117ebe433295ef992b9ca83c46d98">SOCKET_ANY_PORT</a>, <a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin=<a class="el" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>)</td></tr>
-<tr class="memdesc:ga80f1d19174124f3d0f246e1c1201b3ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote UDP server.  <a href="group__api__socket__udp.html#ga80f1d19174124f3d0f246e1c1201b3ec">More...</a><br /></td></tr>
-<tr class="separator:ga80f1d19174124f3d0f246e1c1201b3ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4e6e89eb9aedec1ff6d25645c33f51e4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tls.html#ga4e6e89eb9aedec1ff6d25645c33f51e4">tlsConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *host, uint16_t remortPort, const char *certFilename=NULL GPIO_IRQ_ARG_NC)</td></tr>
+<tr class="memdesc:ga4e6e89eb9aedec1ff6d25645c33f51e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote TLS server.  <a href="group__api__socket__tls.html#ga4e6e89eb9aedec1ff6d25645c33f51e4">More...</a><br /></td></tr>
+<tr class="separator:ga4e6e89eb9aedec1ff6d25645c33f51e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0ca5eabcd64ce45b574205447101f8aa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__udp.html#ga0ca5eabcd64ce45b574205447101f8aa">udpConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *host, uint16_t remortPort, uint16_t localPort=<a class="el" href="group__api__socket__macro.html#gae54117ebe433295ef992b9ca83c46d98">SOCKET_ANY_PORT</a> GPIO_IRQ_ARG_NC)</td></tr>
+<tr class="memdesc:ga0ca5eabcd64ce45b574205447101f8aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote UDP server.  <a href="group__api__socket__udp.html#ga0ca5eabcd64ce45b574205447101f8aa">More...</a><br /></td></tr>
+<tr class="separator:ga0ca5eabcd64ce45b574205447101f8aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga067fb0d662d8e27e3f5b561ded29a51a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__udp.html#ga067fb0d662d8e27e3f5b561ded29a51a">udpListen</a> (<a class="el" href="classwiconnect_1_1_wiconnect_udp_server.html">WiconnectUdpServer</a> &amp;udpServer, uint16_t listeningPort)</td></tr>
+<tr class="memdesc:ga067fb0d662d8e27e3f5b561ded29a51a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start a UDP server listening on the given port.  <a href="group__api__socket__udp.html#ga067fb0d662d8e27e3f5b561ded29a51a">More...</a><br /></td></tr>
+<tr class="separator:ga067fb0d662d8e27e3f5b561ded29a51a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga181a03d883f60dff0c03b65e066f0eed"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__http.html#ga181a03d883f60dff0c03b65e066f0eed">httpConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *url, const <a class="el" href="structwiconnect_1_1_http_socket_args.html">HttpSocketArgs</a> *args)</td></tr>
 <tr class="memdesc:ga181a03d883f60dff0c03b65e066f0eed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote HTTP server.  <a href="group__api__socket__http.html#ga181a03d883f60dff0c03b65e066f0eed">More...</a><br /></td></tr>
 <tr class="separator:ga181a03d883f60dff0c03b65e066f0eed"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -175,9 +172,9 @@
 <div class="textblock"><p>The provides an interface for creating TCP/UDP/TLS/HTTP client sockets. A client socket connects to a remote server. </p>
 <dl class="section note"><dt>Note</dt><dd>This class is an interface to the <a class="el" href="classwiconnect_1_1_wiconnect.html" title="The root WiConnect library class. This class inheriets all WiConnect functionality. ">Wiconnect</a> class. It should never be independently instantiated or the parent of another class. </dd></dl>
 
-<p>Definition at line <a class="el" href="_socket_interface_8h_source.html#l00051">51</a> of file <a class="el" href="_socket_interface_8h_source.html">SocketInterface.h</a>.</p>
+<p>Definition at line <a class="el" href="_socket_interface_8h_source.html#l00063">63</a> of file <a class="el" href="_socket_interface_8h_source.html">SocketInterface.h</a>.</p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/<a class="el" href="_socket_interface_8h_source.html">SocketInterface.h</a></li>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/<a class="el" href="_socket_interface_8h_source.html">SocketInterface.h</a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
--- a/doc/html/classwiconnect_1_1_socket_interface.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_socket_interface.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,19 +1,18 @@
 var classwiconnect_1_1_socket_interface =
 [
     [ "closeAllSockets", "group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106", null ],
-    [ "connect", "group__api__socket__misc.html#ga037cb2813683697342fff01239c7f6f8", null ],
+    [ "connect", "group__api__socket__misc.html#gab24204ef309b6e7a52b03b35a7046b45", null ],
     [ "httpAddHeader", "group__api__socket__http.html#gabed18edc44f464bac64ce8a6dc3617ec", null ],
     [ "httpConnect", "group__api__socket__http.html#ga181a03d883f60dff0c03b65e066f0eed", null ],
     [ "httpGet", "group__api__socket__http.html#gac9b6c6a348f790cc8d43889dd72029f6", null ],
     [ "httpGetStatus", "group__api__socket__http.html#gadf59ca0783b89ee32f205e33f1bd5517", null ],
     [ "httpHead", "group__api__socket__http.html#gabcb3d69b2b1718e7ebe1ed171dec1f85", null ],
     [ "httpPost", "group__api__socket__http.html#ga1b6a3ebdbd164f0eb683fc335ef4d365", null ],
-    [ "registerSocketIrqHandler", "group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a", null ],
-    [ "tcpAccept", "group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3", null ],
-    [ "tcpConnect", "group__api__socket__tcp.html#ga4a788d604d759b5da51f682b998b9bd2", null ],
-    [ "tcpListen", "group__api__socket__tcp.html#ga563831b33089437233f128483d034578", null ],
+    [ "tcpAccept", "group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035", null ],
+    [ "tcpConnect", "group__api__socket__tcp.html#gad8e8632715a38222ce4fea5fe0aaf527", null ],
+    [ "tcpListen", "group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa", null ],
     [ "tcpServerStop", "group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0", null ],
-    [ "tlsConnect", "group__api__socket__tls.html#gacf10d28ced4591d99c4113ebee6382ca", null ],
-    [ "udpConnect", "group__api__socket__udp.html#ga80f1d19174124f3d0f246e1c1201b3ec", null ],
-    [ "unregisterSocketIrqHandler", "group__api__socket__misc.html#ga820d2fdb12d343212638e55633bd8551", null ]
+    [ "tlsConnect", "group__api__socket__tls.html#ga4e6e89eb9aedec1ff6d25645c33f51e4", null ],
+    [ "udpConnect", "group__api__socket__udp.html#ga0ca5eabcd64ce45b574205447101f8aa", null ],
+    [ "udpListen", "group__api__socket__udp.html#ga067fb0d662d8e27e3f5b561ded29a51a", null ]
 ];
\ No newline at end of file
--- a/doc/html/classwiconnect_1_1_wiconnect-members.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_wiconnect-members.html	Mon Oct 27 13:42:26 2014 -0700
@@ -114,7 +114,7 @@
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="group__api__core__send__command.html#gaf48c1ec0b92af2619ab846baaaa471cd">checkCurrentCommand</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106">closeAllSockets</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__misc.html#ga037cb2813683697342fff01239c7f6f8">connect</a>(WiconnectSocket &amp;socket, SocketType type, const char *host, uint16_t remortPort, uint16_t localPort, const void *args, Pin irqPin)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__misc.html#gab24204ef309b6e7a52b03b35a7046b45">connect</a>(WiconnectSocket &amp;socket, SocketType type, const char *host, uint16_t remortPort, uint16_t localPort, const void *args GPIO_IRQ_ARG)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__file__methods.html#ga16fb09105975644879eb09581ce486e5">createFile</a>(const ReaderFunc &amp;reader, void *user, const char *name, uint32_t size, uint32_t version=0, FileType type=FILE_TYPE_ANY, bool isEssential=false, int32_t checksum=-1)</td><td class="entry"><a class="el" href="classwiconnect_1_1_file_interface.html">wiconnect::FileInterface</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__core__misc.html#ga9d6c981a54c6ab964b469e4f247142d6">deinit</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__file__methods.html#gafcf335cef42b7b3d0fd9d5af70c6ef7d">deleteFile</a>(const char *name)</td><td class="entry"><a class="el" href="classwiconnect_1_1_file_interface.html">wiconnect::FileInterface</a></td><td class="entry"></td></tr>
@@ -124,72 +124,96 @@
   <tr><td class="entry"><a class="el" href="group__conversion__util.html#gad74fbe6faf90d987b31380978f3ea341">fileVersionIntToStr</a>(uint32_t version, bool verbose=true, char *buffer=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_file_interface.html">wiconnect::FileInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__conversion__util.html#gae995028f5a70c58ccf6013c9811e79aa">fileVersionStrToInt</a>(const char *versionStr, uint32_t *versionIntPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_file_interface.html">wiconnect::FileInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__core__misc.html#ga96ac50d85d8ab376755d7d5325de1713">flush</a>(int delayMs=500)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__core__settings.html#gad5d31980a7b1e143f00b0117468c1a7e">getCommandDefaultTimeout</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__network__settings.html#ga70ec796b88eb6f8e7990dbf3eb2f2eff">getDhcpEnabled</a>(bool *enabledPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__core__settings.html#gaf6115968c49c128717cacd2f06b883ad">getBlockingEnabled</a>(void)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__core__settings.html#gad8d98b8d2610f4ea564bede27e87857e">getCommandDefaultTimeout</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__network__settings.html#ga70ec796b88eb6f8e7990dbf3eb2f2eff">getDhcpEnabled</a>(bool *enabledPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__network__settings.html#ga585cb71d386ee61db3772f4b3218cb6e">getDnsAddress</a>(uint32_t *dnsAddress)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__core__misc.html#ga8dcd3ac87afd58b225abb068e835d06e">getInstance</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290">getIpAddress</a>(char *buffer=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f">getIpAddress</a>(char *buffer ALLOW_NULL_STRING_BUFFER)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b">getIpSettings</a>(uint32_t *ip, uint32_t *netmask, uint32_t *gateway)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__core__misc.html#gad8069679fabb52d44647d27703f1a09a">getLastCommandResponseCodeStr</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__core__misc.html#ga600215de23210071c42996d04390071e">getLastCommandResponseLength</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b">getNetworkJoinResult</a>(NetworkJoinResult *joinResultPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__network__wlan.html#ga047ba9670f60406466391cec5bdd28e5">getNetworkStatus</a>(NetworkStatus *statusPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__core__misc.html#ga27b5d6b8207e4ef0f73875606d628da8">getResponseBuffer</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__network__wlan.html#ga70991a2c5865c8f0b44b67de35f3b6b3">getMacAddress</a>(MacAddress *macAddress)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b">getNetworkJoinResult</a>(NetworkJoinResult *joinResultPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__network__wlan.html#ga047ba9670f60406466391cec5bdd28e5">getNetworkStatus</a>(NetworkStatus *statusPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__core__misc.html#ga27b5d6b8207e4ef0f73875606d628da8">getResponseBuffer</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__network__wlan.html#gaa9db3c463cf6b4f351c37671882dd3ee">getRssi</a>(int32_t *rssiPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__core__settings.html#ga16d5022d1fbd784fe0fd90a56911c5bc">getSetting</a>(const char *settingStr, uint32_t *valuePtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__core__settings.html#ga9dfd70aac8f0770f300ccf3a126ba296">getSetting</a>(const char *settingStr, char **valuePtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__core__settings.html#ga670947ef630233f7866f885500548233">getSetting</a>(const char *settingStr, char *valueBuffer, uint16_t valueBufferLen)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__network__settings.html#gaba16b9918e55c08285cf5b8b50dbabea">getSignalStrength</a>(NetworkSignalStrength *signalStrengthPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__network__wlan.html#gaba16b9918e55c08285cf5b8b50dbabea">getSignalStrength</a>(NetworkSignalStrength *signalStrengthPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__core__misc.html#ga4fc195839bc6c6bd0091074cbdc94c4f">getVersion</a>(char *versionBuffer=NULL, int versionBufferSize=0, const Callback &amp;completeCallback=Callback())</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__conversion__util.html#gac96e2d2fca60cba12e7429626f9186be">getWiconnectResultStr</a>(WiconnectResult wiconnectResult)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__http.html#gabed18edc44f464bac64ce8a6dc3617ec">httpAddHeader</a>(WiconnectSocket &amp;socket, const char *key, const char *value)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__socket__http.html#ga181a03d883f60dff0c03b65e066f0eed">httpConnect</a>(WiconnectSocket &amp;socket, const char *url, const HttpSocketArgs *args)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__http.html#gac9b6c6a348f790cc8d43889dd72029f6">httpGet</a>(WiconnectSocket &amp;socket, const char *url, bool openOnly=false, const char *certFilename=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__socket__http.html#gadf59ca0783b89ee32f205e33f1bd5517">httpGetStatus</a>(WiconnectSocket &amp;socket, uint32_t *statusCodePtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__http.html#gabcb3d69b2b1718e7ebe1ed171dec1f85">httpHead</a>(WiconnectSocket &amp;socket, const char *url, const char *certFilename=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__socket__http.html#ga1b6a3ebdbd164f0eb683fc335ef4d365">httpPost</a>(WiconnectSocket &amp;socket, const char *url, const char *contextType, bool openOnly=true, const char *certFilename=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__core__misc.html#gae2e3add2e60543d0e3340ed7a9e034ad">init</a>(bool bringNetworkUp=false)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__conversion__util.html#gaff8b0af70f4d4be792b943ad3af27303">ipToStr</a>(uint32_t ip, char *ipStrBuffer=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__core__misc.html#gab00c7110984f6d6187241d17a4a431ff">isInitialized</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__network__setup.html#gab52d3a01427d0e8bd52460d992144f65">isWebSetupRunning</a>(bool *isRunningPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__network__wlan.html#gac439d0af5a17da32d405e25dcba83d16">join</a>(const char *ssid=NULL, const char *password=NULL, const Callback &amp;completeHandler=Callback())</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__network__wlan.html#ga14dc0f4fa58a7ebb25b77fae22052328">leave</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__file__methods.html#ga10536639c61213c037883dade021838f">listFiles</a>(FileList &amp;list, const char *name=NULL, FileType type=FILE_TYPE_ANY, uint32_t version=0)</td><td class="entry"><a class="el" href="classwiconnect_1_1_file_interface.html">wiconnect::FileInterface</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__network__util.html#ga1770babfc2abc6da7c085ef92709ee89">lookup</a>(const char *domain, uint32_t *ipAddressPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__conversion__util.html#ga13ecaf390b4bf4a68b51a6b18e669134">macAddressToStr</a>(const MacAddress *macAddress, char *macStrBuffer=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="group__conversion__util.html#ga5a682e671900b9b7f931137deb847fa6">networkJoinResultToStr</a>(NetworkJoinResult joinResult)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__conversion__util.html#gae02c549079cfb0350117cd6343a3d66f">networkSecurityToStr</a>(NetworkSecurity security)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="group__conversion__util.html#gacff5a4927d79e8b4c0d5a3050f5950b0">networkStatusToStr</a>(NetworkStatus status)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__file__methods.html#gaaf2977c691be09aeda102267a6769583">openFile</a>(WiconnectFile &amp;file, const char *name)</td><td class="entry"><a class="el" href="classwiconnect_1_1_file_interface.html">wiconnect::FileInterface</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__network__util.html#ga1da909dadb6f0e90218927ed350f72bc">ping</a>(const char *domain=NULL, uint32_t *timeMsPtr=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a">registerSocketIrqHandler</a>(Pin irqPin, const Callback &amp;handler)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate</a>(const char *userName, const char *password, const char *capsFilename=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__ghm__activate.html#gad0e0484d1f9a6608475874544f96708b">ghmDeactivate</a>(const char *userName, const char *password)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__msg.html#ga451de9d69f7ecbf38e36056e502b94b0">ghmDeleteMessage</a>(uint8_t listIndex)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__ghm__msg.html#ga7273f4c691aeccd241327f1be3e8d0e9">ghmDeleteMessage</a>(const char *msgId)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__activate.html#gaff03ecaa08146e6925820209cdab56bd">ghmDownloadCapabilities</a>(const char *capsNameOrCustomUrl=NULL, uint32_t version=0)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234">ghmGetMessage</a>(WiconnectSocket &amp;socket, GhmMessageGetType getType=GHM_MSG_GET_DATA_ONLY)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__msg.html#gaa905a010f0e234d290eaef6e42975c29">ghmGetMessage</a>(WiconnectSocket &amp;socket, uint8_t listIndex, GhmMessageGetType getType=GHM_MSG_GET_DATA_ONLY)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__ghm__msg.html#ga9c6dffaa871f2443a32d75276160682d">ghmGetMessage</a>(WiconnectSocket &amp;socket, const char *msgId, GhmMessageGetType getType=GHM_MSG_GET_DATA_ONLY)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__activate.html#ga8bec70f780ca7de9dce1a15830c179ff">ghmIsActivated</a>(bool *statusPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502">ghmListMessages</a>(GhmMessageList &amp;msgList, uint8_t maxCount=0)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__msg.html#gadc281f497041b26a151c72a0b5d03543">ghmPostMessage</a>(WiconnectSocket &amp;socket, bool jsonFormatted=false)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2">ghmRead</a>(const char *controlName, const char **valueStrPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__com.html#ga2d4f14ef409c30b49ce2a06b72d10c7f">ghmRead</a>(const char *controlName, uint32_t *valueIntPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__ghm__com.html#ga965090d4b28bda9f58716b522a6bee12">ghmRead</a>(const char *controlName, char *valueBuffer, uint16_t valueBufferLen)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__com.html#ga0aa48506edb22c90be513683672b96c7">ghmSynchronize</a>(GhmSyncType type=GHM_SYNC_ALL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223">ghmWrite</a>(const char *elementName, const char *strValue)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__com.html#ga26ef47c451e7dbe869f19f5f36695e7c">ghmWrite</a>(const char *elementName, uint32_t uintValue)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__ghm__com.html#gab524e64f4bbae826c27bf39d7f2d3c2e">ghmWrite</a>(const char *elementName, int32_t intValue)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__ghm__com.html#ga5eb797aba87a3ab76d742afe34292ee6">ghmWrite</a>(const GhmElementArray *elementArray)</td><td class="entry"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__socket__http.html#gabed18edc44f464bac64ce8a6dc3617ec">httpAddHeader</a>(WiconnectSocket &amp;socket, const char *key, const char *value)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__http.html#ga181a03d883f60dff0c03b65e066f0eed">httpConnect</a>(WiconnectSocket &amp;socket, const char *url, const HttpSocketArgs *args)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__socket__http.html#gac9b6c6a348f790cc8d43889dd72029f6">httpGet</a>(WiconnectSocket &amp;socket, const char *url, bool openOnly=false, const char *certFilename=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__http.html#gadf59ca0783b89ee32f205e33f1bd5517">httpGetStatus</a>(WiconnectSocket &amp;socket, uint32_t *statusCodePtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__socket__http.html#gabcb3d69b2b1718e7ebe1ed171dec1f85">httpHead</a>(WiconnectSocket &amp;socket, const char *url, const char *certFilename=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__http.html#ga1b6a3ebdbd164f0eb683fc335ef4d365">httpPost</a>(WiconnectSocket &amp;socket, const char *url, const char *contextType, bool openOnly=true, const char *certFilename=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__core__misc.html#gae2e3add2e60543d0e3340ed7a9e034ad">init</a>(bool bringNetworkUp=false)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__conversion__util.html#ga02e6b01f11f2283208f051b1b49b634c">ipToStr</a>(uint32_t ip, char *ipStrBuffer ALLOW_NULL_STRING_BUFFER)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__core__misc.html#gab00c7110984f6d6187241d17a4a431ff">isInitialized</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__network__setup.html#gab52d3a01427d0e8bd52460d992144f65">isWebSetupRunning</a>(bool *isRunningPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__network__wlan.html#gac439d0af5a17da32d405e25dcba83d16">join</a>(const char *ssid=NULL, const char *password=NULL, const Callback &amp;completeHandler=Callback())</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__network__wlan.html#ga14dc0f4fa58a7ebb25b77fae22052328">leave</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__file__methods.html#ga10536639c61213c037883dade021838f">listFiles</a>(FileList &amp;list, const char *name=NULL, FileType type=FILE_TYPE_ANY, uint32_t version=0)</td><td class="entry"><a class="el" href="classwiconnect_1_1_file_interface.html">wiconnect::FileInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__network__util.html#ga1770babfc2abc6da7c085ef92709ee89">lookup</a>(const char *domain, uint32_t *ipAddressPtr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__conversion__util.html#ga01520d55f1923d90fb899ddef2f21cdf">macAddressToStr</a>(const MacAddress *macAddress, char *macStrBuffer ALLOW_NULL_STRING_BUFFER)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__conversion__util.html#ga5a682e671900b9b7f931137deb847fa6">networkJoinResultToStr</a>(NetworkJoinResult joinResult)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="group__conversion__util.html#gae02c549079cfb0350117cd6343a3d66f">networkSecurityToStr</a>(NetworkSecurity security)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__conversion__util.html#gacff5a4927d79e8b4c0d5a3050f5950b0">networkStatusToStr</a>(NetworkStatus status)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__file__methods.html#gaaf2977c691be09aeda102267a6769583">openFile</a>(WiconnectFile &amp;file, const char *name)</td><td class="entry"><a class="el" href="classwiconnect_1_1_file_interface.html">wiconnect::FileInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__network__util.html#ga1da909dadb6f0e90218927ed350f72bc">ping</a>(const char *domain=NULL, uint32_t *timeMsPtr=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__core__misc.html#gabec1504eb7f486085dad82c4a94310e3">reset</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__core__misc.html#gada79343aece515e00f9be4045d3858a0">responseToInt32</a>(int32_t *int32Ptr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__core__misc.html#gac40b2964149e60245ff3cac6adbcd565">responseToUint32</a>(uint32_t *uint32Ptr)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__conversion__util.html#ga6216eed4cc05c37ce1ed13a0fbb6acd8">rssiToSignalStrength</a>(int rssi)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__network__util.html#gacdf014d8aca9de33dbc1563c6bb1f956">scan</a>(ScanResultList &amp;resultList, const uint8_t *channelList=NULL, const char *ssid=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">sendCommand</a>(const Callback &amp;completeCallback, char *responseBuffer, int responseBufferLen, int timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd, va_list vaList)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__core__send__command.html#gad23730a1f2f7714ef962f24a0f99f0f7">sendCommand</a>(char *responseBuffer, int responseBufferLen, int timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd, va_list vaList)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__core__send__command.html#ga0e0591e923da9ab814bb3dd3afbda197">sendCommand</a>(char *responseBuffer, int responseBufferLen, int timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd,...)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__core__send__command.html#gadd347dd3952ebab2fa27561c12858f65">sendCommand</a>(int timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd,...)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">sendCommand</a>(const Callback &amp;completeCallback, char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd, va_list vaList)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__core__send__command.html#gaa36b07b28a166fe51f9dc92bcab5d3d8">sendCommand</a>(char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd, va_list vaList)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__core__send__command.html#gabe0e5c170b9c6ec7d6dc96a3639c721e">sendCommand</a>(char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd,...)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__core__send__command.html#ga8c6d84b338847fbdd41f61c5375117e9">sendCommand</a>(TimerTimeout timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd,...)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__core__send__command.html#gaca2f1b17d2cc98cbc6dac219ffcf9e84">sendCommand</a>(const ReaderFunc &amp;reader, void *user, const char *cmd,...)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__core__send__command.html#ga3655750f929f8f4e966278193d0385a9">sendCommand</a>(char *responseBuffer, int responseBufferLen, int timeoutMs, const char *cmd,...)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__core__send__command.html#ga5f437c3518de14706c6fcff32a0b0f97">sendCommand</a>(char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const char *cmd,...)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__core__send__command.html#gaf93db1b2730bb586287f7756f3cdf092">sendCommand</a>(const Callback &amp;completeCallback, char *responseBuffer, int responseBufferLen, const char *cmd,...)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__core__send__command.html#gaac75ca154bd5d5a21c714dd828a92363">sendCommand</a>(char *responseBuffer, int responseBufferLen, const char *cmd,...)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__core__send__command.html#ga7eb983a196daa5de20a73fd234dc6f64">sendCommand</a>(const Callback &amp;completeCallback, const char *cmd,...)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__core__send__command.html#gadad1c5b3df07a24ab09492edf93dd1f4">sendCommand</a>(const char *cmd,...)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__core__send__command.html#gaa6d744ec08ba6c9abf451bdc2b0beb00">sendCommand</a>(const Callback &amp;completeCallback, int timeoutMs, const char *cmd,...)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__core__send__command.html#gace479d34633141ff1eefa0e98c4d2351">sendCommand</a>(int timeoutMs, const char *cmd,...)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__core__send__command.html#ga9a89a0dd00f8eedb5e3eb8d4a4ed58df">sendCommand</a>(const Callback &amp;completeCallback, TimerTimeout timeoutMs, const char *cmd,...)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__core__send__command.html#ga5666d99d72494995db0a812fcc9bbd09">sendCommand</a>(TimerTimeout timeoutMs, const char *cmd,...)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__core__send__command.html#ga9d0ade0ec2866d7e0df5391bc69f5698">sendCommand</a>(const char *cmd, va_list vaList)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__core__settings.html#ga273f67fede26be4a3d5d909c5cf8c7e0">setAssertLogger</a>(LogFunc assertLogFunc)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__core__settings.html#gaaaf8be221699870053ad98911b066a32">setCommandDefaultTimeout</a>(int timeoutMs)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__core__settings.html#ga75fb083451ee530a1c19e6a4c1be185e">setDebugLogger</a>(LogFunc logFunc)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__network__settings.html#ga65eb99f880ed739d0f3cd393e5b56eaf">setDhcpEnabled</a>(bool enabled)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__core__settings.html#ga851795595a422a14249b7ea9f0038c4c">setBlockingEnabled</a>(bool blockingEnabled)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__core__settings.html#gacae50138f9388a66496408f9c2bf6a6f">setCommandDefaultTimeout</a>(TimerTimeout timeoutMs)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__core__settings.html#ga75fb083451ee530a1c19e6a4c1be185e">setDebugLogger</a>(LogFunc logFunc)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__network__settings.html#ga65eb99f880ed739d0f3cd393e5b56eaf">setDhcpEnabled</a>(bool enabled)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__network__settings.html#ga258d8b80064c6ce311a433affe63a0e9">setDnsAddress</a>(uint32_t dnsAddress)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__network__settings.html#ga2f7ec21084d3f2835d9c1c201915a9e0">setIpSettings</a>(uint32_t ip, uint32_t netmask, uint32_t gateway)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__network__settings.html#gaa418175dd3d06b870f3dd8e035cb4dd0">setIpSettings</a>(const char *ip, const char *netmask, const char *gateway)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__core__settings.html#ga180b043ec83c53b5bf6b9ef2b187d08d">setPinToGpioMapper</a>(PinToGpioMapper mapper)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__core__settings.html#gace51a2841415a53f54fcce336182f0ec">setSetting</a>(const char *settingStr, uint32_t value)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__core__settings.html#ga085a17a466905069940611bdd14c1d3e">setSetting</a>(const char *settingStr, const char *value)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__conversion__util.html#gad4661f859cfadbe193793898671043c9">signalStrengthToStr</a>(NetworkSignalStrength signalStrenth)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="group__conversion__util.html#gafce7929a10e16cf9be7307a2f97bef3f">ssidToStr</a>(const Ssid *ssid, char *ssidStrBuffer=NULL)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="group__conversion__util.html#gae8b534c249d503aa764017bb088f3890">ssidToStr</a>(const Ssid *ssid, char *ssidStrBuffer ALLOW_NULL_STRING_BUFFER)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__network__setup.html#gaea3e133f2ee8c95d8d108c15561f3847">startWebSetup</a>(const char *ssid=NULL, const char *password=NULL, const Callback &amp;completeHandler=Callback())</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__core__send__command.html#ga4a9bd29de1d5c496fbcc28ecfa51e7c0">stopCurrentCommand</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__network__setup.html#gac5ca67b7bfa587935b5619e441dc8d8a">stopWebSetup</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"></td></tr>
@@ -197,13 +221,13 @@
   <tr class="even"><td class="entry"><a class="el" href="group__conversion__util.html#ga347f05073370d6872a5cdac74de39b1b">strToMacAddress</a>(const char *str, MacAddress *macAddress)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="group__conversion__util.html#gad7d49be19f9ca91bc129668dd50d9e57">strToNetworkSecurity</a>(const char *str)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__conversion__util.html#ga6a479a58591ead92dcf0586e11fcad17">strToSsid</a>(const char *str, Ssid *ssid)</td><td class="entry"><a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3">tcpAccept</a>(WiconnectSocket &amp;socket, int timeoutMs=WICONNECT_WAIT_FOREVER)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__tcp.html#ga4a788d604d759b5da51f682b998b9bd2">tcpConnect</a>(WiconnectSocket &amp;socket, const char *host, uint16_t remortPort, Pin irqPin=PIN_NC)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__socket__tcp.html#ga563831b33089437233f128483d034578">tcpListen</a>(uint16_t listeningPort, int maxClients=0, Pin irqPin=PIN_NC)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035">tcpAccept</a>(WiconnectSocket &amp;socket, uint32_t timeoutMs=WICONNECT_WAIT_FOREVER)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__tcp.html#gad8e8632715a38222ce4fea5fe0aaf527">tcpConnect</a>(WiconnectSocket &amp;socket, const char *host, uint16_t remortPort GPIO_IRQ_ARG_NC)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa">tcpListen</a>(uint16_t listeningPort, int maxClients=0 GPIO_IRQ_ARG_NC)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0">tcpServerStop</a>(void)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__socket__tls.html#gacf10d28ced4591d99c4113ebee6382ca">tlsConnect</a>(WiconnectSocket &amp;socket, const char *host, uint16_t remortPort, const char *certFilename=NULL, Pin irqPin=PIN_NC)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__udp.html#ga80f1d19174124f3d0f246e1c1201b3ec">udpConnect</a>(WiconnectSocket &amp;socket, const char *host, uint16_t remortPort, uint16_t localPort=SOCKET_ANY_PORT, Pin irqPin=PIN_NC)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="group__api__socket__misc.html#ga820d2fdb12d343212638e55633bd8551">unregisterSocketIrqHandler</a>(Pin irqPin)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__socket__tls.html#ga4e6e89eb9aedec1ff6d25645c33f51e4">tlsConnect</a>(WiconnectSocket &amp;socket, const char *host, uint16_t remortPort, const char *certFilename=NULL GPIO_IRQ_ARG_NC)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="group__api__socket__udp.html#ga0ca5eabcd64ce45b574205447101f8aa">udpConnect</a>(WiconnectSocket &amp;socket, const char *host, uint16_t remortPort, uint16_t localPort=SOCKET_ANY_PORT GPIO_IRQ_ARG_NC)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="group__api__socket__udp.html#ga067fb0d662d8e27e3f5b561ded29a51a">udpListen</a>(WiconnectUdpServer &amp;udpServer, uint16_t listeningPort)</td><td class="entry"><a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="group__api__core__misc.html#gad447fe3341539eb9b276d269645bb632">updateFirmware</a>(bool forced=false, const char *versionStr=NULL, const Callback &amp;completeCallback=Callback())</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="group__api__core__misc.html#gad552c8f23dd0a0e8844ee1fc4d9358e5">wakeup</a>()</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html#a285510a2cba5341db387101ac75a4389">Wiconnect</a>(const SerialConfig &amp;serialConfig, Pin reset=PIN_NC, Pin wake=PIN_NC, bool nonBlocking=WICONNECT_DEFAULT_NONBLOCKING WICONNECT_MALLOC_ARGS)</td><td class="entry"><a class="el" href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></td><td class="entry"></td></tr>
--- a/doc/html/classwiconnect_1_1_wiconnect.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_wiconnect.html	Mon Oct 27 13:42:26 2014 -0700
@@ -119,7 +119,7 @@
 
 <p><code>#include &lt;<a class="el" href="_wiconnect_interface_8h_source.html">WiconnectInterface.h</a>&gt;</code></p>
 
-<p>Inherits <a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a>, <a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a>, and <a class="el" href="classwiconnect_1_1_file_interface.html">wiconnect::FileInterface</a>.</p>
+<p>Inherits <a class="el" href="classwiconnect_1_1_network_interface.html">wiconnect::NetworkInterface</a>, <a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a>, <a class="el" href="classwiconnect_1_1_file_interface.html">wiconnect::FileInterface</a>, and <a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a>.</p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
@@ -154,24 +154,24 @@
 <tr class="memitem:gad447fe3341539eb9b276d269645bb632"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__misc.html#gad447fe3341539eb9b276d269645bb632">updateFirmware</a> (bool forced=false, const char *versionStr=NULL, const <a class="el" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback=<a class="el" href="classwiconnect_1_1_callback.html">Callback</a>())</td></tr>
 <tr class="memdesc:gad447fe3341539eb9b276d269645bb632"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update the wifi module's internal firmware.  <a href="group__api__core__misc.html#gad447fe3341539eb9b276d269645bb632">More...</a><br /></td></tr>
 <tr class="separator:gad447fe3341539eb9b276d269645bb632"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga3a2637e5ce300a03c448edf1eff13c2c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">sendCommand</a> (const <a class="el" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback, char *responseBuffer, int responseBufferLen, int timeoutMs, const <a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, void *user, const char *cmd, va_list vaList)</td></tr>
-<tr class="memdesc:ga3a2637e5ce300a03c448edf1eff13c2c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">More...</a><br /></td></tr>
-<tr class="separator:ga3a2637e5ce300a03c448edf1eff13c2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gad23730a1f2f7714ef962f24a0f99f0f7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gad23730a1f2f7714ef962f24a0f99f0f7">sendCommand</a> (char *responseBuffer, int responseBufferLen, int timeoutMs, const <a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, void *user, const char *cmd, va_list vaList)</td></tr>
-<tr class="memdesc:gad23730a1f2f7714ef962f24a0f99f0f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="group__api__core__send__command.html#gad23730a1f2f7714ef962f24a0f99f0f7">More...</a><br /></td></tr>
-<tr class="separator:gad23730a1f2f7714ef962f24a0f99f0f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga0e0591e923da9ab814bb3dd3afbda197"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#ga0e0591e923da9ab814bb3dd3afbda197">sendCommand</a> (char *responseBuffer, int responseBufferLen, int timeoutMs, const <a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, void *user, const char *cmd,...)</td></tr>
-<tr class="memdesc:ga0e0591e923da9ab814bb3dd3afbda197"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="group__api__core__send__command.html#ga0e0591e923da9ab814bb3dd3afbda197">More...</a><br /></td></tr>
-<tr class="separator:ga0e0591e923da9ab814bb3dd3afbda197"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gadd347dd3952ebab2fa27561c12858f65"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gadd347dd3952ebab2fa27561c12858f65">sendCommand</a> (int timeoutMs, const <a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, void *user, const char *cmd,...)</td></tr>
-<tr class="memdesc:gadd347dd3952ebab2fa27561c12858f65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="group__api__core__send__command.html#gadd347dd3952ebab2fa27561c12858f65">More...</a><br /></td></tr>
-<tr class="separator:gadd347dd3952ebab2fa27561c12858f65"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadd23f2f86fcc0a438dad798ab3353505"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">sendCommand</a> (const <a class="el" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback, char *responseBuffer, int responseBufferLen, <a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, const <a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, void *user, const char *cmd, va_list vaList)</td></tr>
+<tr class="memdesc:gadd23f2f86fcc0a438dad798ab3353505"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">More...</a><br /></td></tr>
+<tr class="separator:gadd23f2f86fcc0a438dad798ab3353505"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa36b07b28a166fe51f9dc92bcab5d3d8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gaa36b07b28a166fe51f9dc92bcab5d3d8">sendCommand</a> (char *responseBuffer, int responseBufferLen, <a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, const <a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, void *user, const char *cmd, va_list vaList)</td></tr>
+<tr class="memdesc:gaa36b07b28a166fe51f9dc92bcab5d3d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="group__api__core__send__command.html#gaa36b07b28a166fe51f9dc92bcab5d3d8">More...</a><br /></td></tr>
+<tr class="separator:gaa36b07b28a166fe51f9dc92bcab5d3d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabe0e5c170b9c6ec7d6dc96a3639c721e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gabe0e5c170b9c6ec7d6dc96a3639c721e">sendCommand</a> (char *responseBuffer, int responseBufferLen, <a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, const <a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, void *user, const char *cmd,...)</td></tr>
+<tr class="memdesc:gabe0e5c170b9c6ec7d6dc96a3639c721e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="group__api__core__send__command.html#gabe0e5c170b9c6ec7d6dc96a3639c721e">More...</a><br /></td></tr>
+<tr class="separator:gabe0e5c170b9c6ec7d6dc96a3639c721e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8c6d84b338847fbdd41f61c5375117e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#ga8c6d84b338847fbdd41f61c5375117e9">sendCommand</a> (<a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, const <a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, void *user, const char *cmd,...)</td></tr>
+<tr class="memdesc:ga8c6d84b338847fbdd41f61c5375117e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="group__api__core__send__command.html#ga8c6d84b338847fbdd41f61c5375117e9">More...</a><br /></td></tr>
+<tr class="separator:ga8c6d84b338847fbdd41f61c5375117e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:gaca2f1b17d2cc98cbc6dac219ffcf9e84"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gaca2f1b17d2cc98cbc6dac219ffcf9e84">sendCommand</a> (const <a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, void *user, const char *cmd,...)</td></tr>
 <tr class="memdesc:gaca2f1b17d2cc98cbc6dac219ffcf9e84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="group__api__core__send__command.html#gaca2f1b17d2cc98cbc6dac219ffcf9e84">More...</a><br /></td></tr>
 <tr class="separator:gaca2f1b17d2cc98cbc6dac219ffcf9e84"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga3655750f929f8f4e966278193d0385a9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#ga3655750f929f8f4e966278193d0385a9">sendCommand</a> (char *responseBuffer, int responseBufferLen, int timeoutMs, const char *cmd,...)</td></tr>
-<tr class="memdesc:ga3655750f929f8f4e966278193d0385a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="group__api__core__send__command.html#ga3655750f929f8f4e966278193d0385a9">More...</a><br /></td></tr>
-<tr class="separator:ga3655750f929f8f4e966278193d0385a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5f437c3518de14706c6fcff32a0b0f97"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#ga5f437c3518de14706c6fcff32a0b0f97">sendCommand</a> (char *responseBuffer, int responseBufferLen, <a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, const char *cmd,...)</td></tr>
+<tr class="memdesc:ga5f437c3518de14706c6fcff32a0b0f97"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="group__api__core__send__command.html#ga5f437c3518de14706c6fcff32a0b0f97">More...</a><br /></td></tr>
+<tr class="separator:ga5f437c3518de14706c6fcff32a0b0f97"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:gaf93db1b2730bb586287f7756f3cdf092"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gaf93db1b2730bb586287f7756f3cdf092">sendCommand</a> (const <a class="el" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback, char *responseBuffer, int responseBufferLen, const char *cmd,...)</td></tr>
 <tr class="memdesc:gaf93db1b2730bb586287f7756f3cdf092"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="group__api__core__send__command.html#gaf93db1b2730bb586287f7756f3cdf092">More...</a><br /></td></tr>
 <tr class="separator:gaf93db1b2730bb586287f7756f3cdf092"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -184,11 +184,11 @@
 <tr class="memitem:gadad1c5b3df07a24ab09492edf93dd1f4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gadad1c5b3df07a24ab09492edf93dd1f4">sendCommand</a> (const char *cmd,...)</td></tr>
 <tr class="memdesc:gadad1c5b3df07a24ab09492edf93dd1f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="group__api__core__send__command.html#gadad1c5b3df07a24ab09492edf93dd1f4">More...</a><br /></td></tr>
 <tr class="separator:gadad1c5b3df07a24ab09492edf93dd1f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gaa6d744ec08ba6c9abf451bdc2b0beb00"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gaa6d744ec08ba6c9abf451bdc2b0beb00">sendCommand</a> (const <a class="el" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback, int timeoutMs, const char *cmd,...)</td></tr>
-<tr class="separator:gaa6d744ec08ba6c9abf451bdc2b0beb00"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gace479d34633141ff1eefa0e98c4d2351"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gace479d34633141ff1eefa0e98c4d2351">sendCommand</a> (int timeoutMs, const char *cmd,...)</td></tr>
-<tr class="memdesc:gace479d34633141ff1eefa0e98c4d2351"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="group__api__core__send__command.html#gace479d34633141ff1eefa0e98c4d2351">More...</a><br /></td></tr>
-<tr class="separator:gace479d34633141ff1eefa0e98c4d2351"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9a89a0dd00f8eedb5e3eb8d4a4ed58df"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#ga9a89a0dd00f8eedb5e3eb8d4a4ed58df">sendCommand</a> (const <a class="el" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback, <a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, const char *cmd,...)</td></tr>
+<tr class="separator:ga9a89a0dd00f8eedb5e3eb8d4a4ed58df"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5666d99d72494995db0a812fcc9bbd09"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#ga5666d99d72494995db0a812fcc9bbd09">sendCommand</a> (<a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, const char *cmd,...)</td></tr>
+<tr class="memdesc:ga5666d99d72494995db0a812fcc9bbd09"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="group__api__core__send__command.html#ga5666d99d72494995db0a812fcc9bbd09">More...</a><br /></td></tr>
+<tr class="separator:ga5666d99d72494995db0a812fcc9bbd09"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga9d0ade0ec2866d7e0df5391bc69f5698"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#ga9d0ade0ec2866d7e0df5391bc69f5698">sendCommand</a> (const char *cmd, va_list vaList)</td></tr>
 <tr class="separator:ga9d0ade0ec2866d7e0df5391bc69f5698"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:gaf48c1ec0b92af2619ab846baaaa471cd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gaf48c1ec0b92af2619ab846baaaa471cd">checkCurrentCommand</a> ()</td></tr>
@@ -227,12 +227,19 @@
 <tr class="memitem:ga670947ef630233f7866f885500548233"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__settings.html#ga670947ef630233f7866f885500548233">getSetting</a> (const char *settingStr, char *valueBuffer, uint16_t valueBufferLen)</td></tr>
 <tr class="memdesc:ga670947ef630233f7866f885500548233"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a module setting.  <a href="group__api__core__settings.html#ga670947ef630233f7866f885500548233">More...</a><br /></td></tr>
 <tr class="separator:ga670947ef630233f7866f885500548233"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gaaaf8be221699870053ad98911b066a32"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__settings.html#gaaaf8be221699870053ad98911b066a32">setCommandDefaultTimeout</a> (int timeoutMs)</td></tr>
-<tr class="memdesc:gaaaf8be221699870053ad98911b066a32"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the default maximum time an API method may execute before terminating and return a timeout error code.  <a href="group__api__core__settings.html#gaaaf8be221699870053ad98911b066a32">More...</a><br /></td></tr>
-<tr class="separator:gaaaf8be221699870053ad98911b066a32"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gad5d31980a7b1e143f00b0117468c1a7e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__settings.html#gad5d31980a7b1e143f00b0117468c1a7e">getCommandDefaultTimeout</a> ()</td></tr>
-<tr class="memdesc:gad5d31980a7b1e143f00b0117468c1a7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current default maximum API execution time.  <a href="group__api__core__settings.html#gad5d31980a7b1e143f00b0117468c1a7e">More...</a><br /></td></tr>
-<tr class="separator:gad5d31980a7b1e143f00b0117468c1a7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga851795595a422a14249b7ea9f0038c4c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__settings.html#ga851795595a422a14249b7ea9f0038c4c">setBlockingEnabled</a> (bool blockingEnabled)</td></tr>
+<tr class="memdesc:ga851795595a422a14249b7ea9f0038c4c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets if API calls are blocking or non-blocking.  <a href="group__api__core__settings.html#ga851795595a422a14249b7ea9f0038c4c">More...</a><br /></td></tr>
+<tr class="separator:ga851795595a422a14249b7ea9f0038c4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf6115968c49c128717cacd2f06b883ad"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf6115968c49c128717cacd2f06b883ad"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__settings.html#gaf6115968c49c128717cacd2f06b883ad">getBlockingEnabled</a> (void)</td></tr>
+<tr class="memdesc:gaf6115968c49c128717cacd2f06b883ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets if API calls are blocking or non-blocking. <br /></td></tr>
+<tr class="separator:gaf6115968c49c128717cacd2f06b883ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacae50138f9388a66496408f9c2bf6a6f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__settings.html#gacae50138f9388a66496408f9c2bf6a6f">setCommandDefaultTimeout</a> (<a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs)</td></tr>
+<tr class="memdesc:gacae50138f9388a66496408f9c2bf6a6f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the default maximum time an API method may execute before terminating and return a timeout error code.  <a href="group__api__core__settings.html#gacae50138f9388a66496408f9c2bf6a6f">More...</a><br /></td></tr>
+<tr class="separator:gacae50138f9388a66496408f9c2bf6a6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad8d98b8d2610f4ea564bede27e87857e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__settings.html#gad8d98b8d2610f4ea564bede27e87857e">getCommandDefaultTimeout</a> ()</td></tr>
+<tr class="memdesc:gad8d98b8d2610f4ea564bede27e87857e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current default maximum API execution time.  <a href="group__api__core__settings.html#gad8d98b8d2610f4ea564bede27e87857e">More...</a><br /></td></tr>
+<tr class="separator:gad8d98b8d2610f4ea564bede27e87857e"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga180b043ec83c53b5bf6b9ef2b187d08d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__settings.html#ga180b043ec83c53b5bf6b9ef2b187d08d">setPinToGpioMapper</a> (<a class="el" href="namespacewiconnect.html#aadd4d5e6774e21f382c20b594a644470">PinToGpioMapper</a> mapper)</td></tr>
 <tr class="memdesc:ga180b043ec83c53b5bf6b9ef2b187d08d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a mapping function used to convert from a host Pin to WiConnect WiFi module GPIO.  <a href="group__api__core__settings.html#ga180b043ec83c53b5bf6b9ef2b187d08d">More...</a><br /></td></tr>
 <tr class="separator:ga180b043ec83c53b5bf6b9ef2b187d08d"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -264,6 +271,18 @@
 <tr class="memitem:gafefe6e679d7b48a7127d3ed6371fe58b inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b">getNetworkJoinResult</a> (<a class="el" href="group__api__network__types.html#ga5f6f5c916a5dd1676f98da7fa511451d">NetworkJoinResult</a> *joinResultPtr)</td></tr>
 <tr class="memdesc:gafefe6e679d7b48a7127d3ed6371fe58b inherit pub_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the result of joining the network.  <a href="group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b">More...</a><br /></td></tr>
 <tr class="separator:gafefe6e679d7b48a7127d3ed6371fe58b inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaba16b9918e55c08285cf5b8b50dbabea inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaba16b9918e55c08285cf5b8b50dbabea"></a>
+<a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__wlan.html#gaba16b9918e55c08285cf5b8b50dbabea">getSignalStrength</a> (<a class="el" href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">NetworkSignalStrength</a> *signalStrengthPtr)</td></tr>
+<tr class="memdesc:gaba16b9918e55c08285cf5b8b50dbabea inherit pub_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get <a class="el" href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">NetworkSignalStrength</a> of WiFi network module is connected. <br /></td></tr>
+<tr class="separator:gaba16b9918e55c08285cf5b8b50dbabea inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa9db3c463cf6b4f351c37671882dd3ee inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa9db3c463cf6b4f351c37671882dd3ee"></a>
+<a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__wlan.html#gaa9db3c463cf6b4f351c37671882dd3ee">getRssi</a> (int32_t *rssiPtr)</td></tr>
+<tr class="memdesc:gaa9db3c463cf6b4f351c37671882dd3ee inherit pub_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the RSSI in dBm of WiFi network. <br /></td></tr>
+<tr class="separator:gaa9db3c463cf6b4f351c37671882dd3ee inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga70991a2c5865c8f0b44b67de35f3b6b3 inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga70991a2c5865c8f0b44b67de35f3b6b3"></a>
+<a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__wlan.html#ga70991a2c5865c8f0b44b67de35f3b6b3">getMacAddress</a> (<a class="el" href="structwiconnect_1_1_mac_address.html">MacAddress</a> *macAddress)</td></tr>
+<tr class="memdesc:ga70991a2c5865c8f0b44b67de35f3b6b3 inherit pub_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get MAC address of the WiFi module. <br /></td></tr>
+<tr class="separator:ga70991a2c5865c8f0b44b67de35f3b6b3 inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:gacdf014d8aca9de33dbc1563c6bb1f956 inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__util.html#gacdf014d8aca9de33dbc1563c6bb1f956">scan</a> (<a class="el" href="classwiconnect_1_1_scan_result_list.html">ScanResultList</a> &amp;resultList, const uint8_t *channelList=NULL, const char *ssid=NULL)</td></tr>
 <tr class="memdesc:gacdf014d8aca9de33dbc1563c6bb1f956 inherit pub_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Scan for available WiFi networks.  <a href="group__api__network__util.html#gacdf014d8aca9de33dbc1563c6bb1f956">More...</a><br /></td></tr>
 <tr class="separator:gacdf014d8aca9de33dbc1563c6bb1f956 inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -292,44 +311,45 @@
 <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b">getIpSettings</a> (uint32_t *ip, uint32_t *netmask, uint32_t *gateway)</td></tr>
 <tr class="memdesc:ga291aef702f1c10bf2970394e3458022b inherit pub_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get network IP settings. <br /></td></tr>
 <tr class="separator:ga291aef702f1c10bf2970394e3458022b inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gaba16b9918e55c08285cf5b8b50dbabea inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaba16b9918e55c08285cf5b8b50dbabea"></a>
-<a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__settings.html#gaba16b9918e55c08285cf5b8b50dbabea">getSignalStrength</a> (<a class="el" href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">NetworkSignalStrength</a> *signalStrengthPtr)</td></tr>
-<tr class="memdesc:gaba16b9918e55c08285cf5b8b50dbabea inherit pub_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get signal strength to WiFi network. <br /></td></tr>
-<tr class="separator:gaba16b9918e55c08285cf5b8b50dbabea inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga0b8fc3d5be0bae9ffcdc1b4b9aee6290 inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290">getIpAddress</a> (char *buffer=NULL)</td></tr>
-<tr class="memdesc:ga0b8fc3d5be0bae9ffcdc1b4b9aee6290 inherit pub_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the current IP address of the module if possible, else return 0.0.0.0.  <a href="group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290">More...</a><br /></td></tr>
-<tr class="separator:ga0b8fc3d5be0bae9ffcdc1b4b9aee6290 inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga258d8b80064c6ce311a433affe63a0e9 inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga258d8b80064c6ce311a433affe63a0e9"></a>
+<a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__settings.html#ga258d8b80064c6ce311a433affe63a0e9">setDnsAddress</a> (uint32_t dnsAddress)</td></tr>
+<tr class="memdesc:ga258d8b80064c6ce311a433affe63a0e9 inherit pub_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set static DNS Address. <br /></td></tr>
+<tr class="separator:ga258d8b80064c6ce311a433affe63a0e9 inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga585cb71d386ee61db3772f4b3218cb6e inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga585cb71d386ee61db3772f4b3218cb6e"></a>
+<a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__settings.html#ga585cb71d386ee61db3772f4b3218cb6e">getDnsAddress</a> (uint32_t *dnsAddress)</td></tr>
+<tr class="memdesc:ga585cb71d386ee61db3772f4b3218cb6e inherit pub_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the static DNS address. <br /></td></tr>
+<tr class="separator:ga585cb71d386ee61db3772f4b3218cb6e inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabd8eb629fd40defaa9ab22c189652a3f inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f">getIpAddress</a> (char *buffer ALLOW_NULL_STRING_BUFFER)</td></tr>
+<tr class="memdesc:gabd8eb629fd40defaa9ab22c189652a3f inherit pub_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the current IP address of the module if possible, else return 0.0.0.0.  <a href="group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f">More...</a><br /></td></tr>
+<tr class="separator:gabd8eb629fd40defaa9ab22c189652a3f inherit pub_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_methods_classwiconnect_1_1_socket_interface"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classwiconnect_1_1_socket_interface')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classwiconnect_1_1_socket_interface.html">wiconnect::SocketInterface</a></td></tr>
 <tr class="memitem:ga8a80d96efac7cc514fe7fc61d1878106 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106">closeAllSockets</a> ()</td></tr>
 <tr class="memdesc:ga8a80d96efac7cc514fe7fc61d1878106 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close all opened sockets.  <a href="group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106">More...</a><br /></td></tr>
 <tr class="separator:ga8a80d96efac7cc514fe7fc61d1878106 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga94d1eb5407cb8b60ad366ecbe0e1b52a inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a">registerSocketIrqHandler</a> (<a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin, const <a class="el" href="classwiconnect_1_1_callback.html">Callback</a> &amp;handler)</td></tr>
-<tr class="memdesc:ga94d1eb5407cb8b60ad366ecbe0e1b52a inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a host pin as an external interrupt. When the external interrupt is triggered, the supplied callback is executed.  <a href="group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a">More...</a><br /></td></tr>
-<tr class="separator:ga94d1eb5407cb8b60ad366ecbe0e1b52a inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga820d2fdb12d343212638e55633bd8551 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__misc.html#ga820d2fdb12d343212638e55633bd8551">unregisterSocketIrqHandler</a> (<a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin)</td></tr>
-<tr class="memdesc:ga820d2fdb12d343212638e55633bd8551 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unregister a previously registered IRQ pin.  <a href="group__api__socket__misc.html#ga820d2fdb12d343212638e55633bd8551">More...</a><br /></td></tr>
-<tr class="separator:ga820d2fdb12d343212638e55633bd8551 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga037cb2813683697342fff01239c7f6f8 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__misc.html#ga037cb2813683697342fff01239c7f6f8">connect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <a class="el" href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">SocketType</a> type, const char *host, uint16_t remortPort, uint16_t localPort, const void *args, <a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin)</td></tr>
-<tr class="memdesc:ga037cb2813683697342fff01239c7f6f8 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote server.  <a href="group__api__socket__misc.html#ga037cb2813683697342fff01239c7f6f8">More...</a><br /></td></tr>
-<tr class="separator:ga037cb2813683697342fff01239c7f6f8 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga4a788d604d759b5da51f682b998b9bd2 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#ga4a788d604d759b5da51f682b998b9bd2">tcpConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *host, uint16_t remortPort, <a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin=<a class="el" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>)</td></tr>
-<tr class="memdesc:ga4a788d604d759b5da51f682b998b9bd2 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote TCP server.  <a href="group__api__socket__tcp.html#ga4a788d604d759b5da51f682b998b9bd2">More...</a><br /></td></tr>
-<tr class="separator:ga4a788d604d759b5da51f682b998b9bd2 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga563831b33089437233f128483d034578 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#ga563831b33089437233f128483d034578">tcpListen</a> (uint16_t listeningPort, int maxClients=0, <a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin=<a class="el" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>)</td></tr>
-<tr class="memdesc:ga563831b33089437233f128483d034578 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start internal TCP server and listen on specified port.  <a href="group__api__socket__tcp.html#ga563831b33089437233f128483d034578">More...</a><br /></td></tr>
-<tr class="separator:ga563831b33089437233f128483d034578 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga0ea4efc810c7c5a9fbd96fcc627633b3 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3">tcpAccept</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, int timeoutMs=<a class="el" href="group__api__core__macro.html#ga580e5f45fee866c845e0d3fd1eb1744a">WICONNECT_WAIT_FOREVER</a>)</td></tr>
-<tr class="memdesc:ga0ea4efc810c7c5a9fbd96fcc627633b3 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait for next client to connect to TCP server.  <a href="group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3">More...</a><br /></td></tr>
-<tr class="separator:ga0ea4efc810c7c5a9fbd96fcc627633b3 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab24204ef309b6e7a52b03b35a7046b45 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__misc.html#gab24204ef309b6e7a52b03b35a7046b45">connect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <a class="el" href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">SocketType</a> type, const char *host, uint16_t remortPort, uint16_t localPort, const void *args GPIO_IRQ_ARG)</td></tr>
+<tr class="memdesc:gab24204ef309b6e7a52b03b35a7046b45 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote server.  <a href="group__api__socket__misc.html#gab24204ef309b6e7a52b03b35a7046b45">More...</a><br /></td></tr>
+<tr class="separator:gab24204ef309b6e7a52b03b35a7046b45 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad8e8632715a38222ce4fea5fe0aaf527 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#gad8e8632715a38222ce4fea5fe0aaf527">tcpConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *host, uint16_t remortPort GPIO_IRQ_ARG_NC)</td></tr>
+<tr class="memdesc:gad8e8632715a38222ce4fea5fe0aaf527 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote TCP server.  <a href="group__api__socket__tcp.html#gad8e8632715a38222ce4fea5fe0aaf527">More...</a><br /></td></tr>
+<tr class="separator:gad8e8632715a38222ce4fea5fe0aaf527 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9f4f3e53ea7f4e84d43529da8580aaaa inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa">tcpListen</a> (uint16_t listeningPort, int maxClients=0 GPIO_IRQ_ARG_NC)</td></tr>
+<tr class="memdesc:ga9f4f3e53ea7f4e84d43529da8580aaaa inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start internal TCP server and listen on specified port.  <a href="group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa">More...</a><br /></td></tr>
+<tr class="separator:ga9f4f3e53ea7f4e84d43529da8580aaaa inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9e12bc568b7e8d72152e53a90de13035 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035">tcpAccept</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, uint32_t timeoutMs=<a class="el" href="group__api__core__macro.html#ga580e5f45fee866c845e0d3fd1eb1744a">WICONNECT_WAIT_FOREVER</a>)</td></tr>
+<tr class="memdesc:ga9e12bc568b7e8d72152e53a90de13035 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait for next client to connect to TCP server.  <a href="group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035">More...</a><br /></td></tr>
+<tr class="separator:ga9e12bc568b7e8d72152e53a90de13035 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga3d0137ebe308674e75f81457c38679d0 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0">tcpServerStop</a> (void)</td></tr>
 <tr class="memdesc:ga3d0137ebe308674e75f81457c38679d0 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop TCP server from listening on port. Close all connected clients.  <a href="group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0">More...</a><br /></td></tr>
 <tr class="separator:ga3d0137ebe308674e75f81457c38679d0 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gacf10d28ced4591d99c4113ebee6382ca inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tls.html#gacf10d28ced4591d99c4113ebee6382ca">tlsConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *host, uint16_t remortPort, const char *certFilename=NULL, <a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin=<a class="el" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>)</td></tr>
-<tr class="memdesc:gacf10d28ced4591d99c4113ebee6382ca inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote TLS server.  <a href="group__api__socket__tls.html#gacf10d28ced4591d99c4113ebee6382ca">More...</a><br /></td></tr>
-<tr class="separator:gacf10d28ced4591d99c4113ebee6382ca inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga80f1d19174124f3d0f246e1c1201b3ec inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__udp.html#ga80f1d19174124f3d0f246e1c1201b3ec">udpConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *host, uint16_t remortPort, uint16_t localPort=<a class="el" href="group__api__socket__macro.html#gae54117ebe433295ef992b9ca83c46d98">SOCKET_ANY_PORT</a>, <a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin=<a class="el" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>)</td></tr>
-<tr class="memdesc:ga80f1d19174124f3d0f246e1c1201b3ec inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote UDP server.  <a href="group__api__socket__udp.html#ga80f1d19174124f3d0f246e1c1201b3ec">More...</a><br /></td></tr>
-<tr class="separator:ga80f1d19174124f3d0f246e1c1201b3ec inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4e6e89eb9aedec1ff6d25645c33f51e4 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tls.html#ga4e6e89eb9aedec1ff6d25645c33f51e4">tlsConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *host, uint16_t remortPort, const char *certFilename=NULL GPIO_IRQ_ARG_NC)</td></tr>
+<tr class="memdesc:ga4e6e89eb9aedec1ff6d25645c33f51e4 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote TLS server.  <a href="group__api__socket__tls.html#ga4e6e89eb9aedec1ff6d25645c33f51e4">More...</a><br /></td></tr>
+<tr class="separator:ga4e6e89eb9aedec1ff6d25645c33f51e4 inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0ca5eabcd64ce45b574205447101f8aa inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__udp.html#ga0ca5eabcd64ce45b574205447101f8aa">udpConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *host, uint16_t remortPort, uint16_t localPort=<a class="el" href="group__api__socket__macro.html#gae54117ebe433295ef992b9ca83c46d98">SOCKET_ANY_PORT</a> GPIO_IRQ_ARG_NC)</td></tr>
+<tr class="memdesc:ga0ca5eabcd64ce45b574205447101f8aa inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote UDP server.  <a href="group__api__socket__udp.html#ga0ca5eabcd64ce45b574205447101f8aa">More...</a><br /></td></tr>
+<tr class="separator:ga0ca5eabcd64ce45b574205447101f8aa inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga067fb0d662d8e27e3f5b561ded29a51a inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__udp.html#ga067fb0d662d8e27e3f5b561ded29a51a">udpListen</a> (<a class="el" href="classwiconnect_1_1_wiconnect_udp_server.html">WiconnectUdpServer</a> &amp;udpServer, uint16_t listeningPort)</td></tr>
+<tr class="memdesc:ga067fb0d662d8e27e3f5b561ded29a51a inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start a UDP server listening on the given port.  <a href="group__api__socket__udp.html#ga067fb0d662d8e27e3f5b561ded29a51a">More...</a><br /></td></tr>
+<tr class="separator:ga067fb0d662d8e27e3f5b561ded29a51a inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga181a03d883f60dff0c03b65e066f0eed inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__http.html#ga181a03d883f60dff0c03b65e066f0eed">httpConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *url, const <a class="el" href="structwiconnect_1_1_http_socket_args.html">HttpSocketArgs</a> *args)</td></tr>
 <tr class="memdesc:ga181a03d883f60dff0c03b65e066f0eed inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote HTTP server.  <a href="group__api__socket__http.html#ga181a03d883f60dff0c03b65e066f0eed">More...</a><br /></td></tr>
 <tr class="separator:ga181a03d883f60dff0c03b65e066f0eed inherit pub_methods_classwiconnect_1_1_socket_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -364,6 +384,64 @@
 <tr class="memitem:ga10536639c61213c037883dade021838f inherit pub_methods_classwiconnect_1_1_file_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__file__methods.html#ga10536639c61213c037883dade021838f">listFiles</a> (<a class="el" href="classwiconnect_1_1_file_list.html">FileList</a> &amp;list, const char *name=NULL, <a class="el" href="group__api__file__types.html#ga9919a4237eea2b0d1f27c16d64e62c63">FileType</a> type=FILE_TYPE_ANY, uint32_t version=0)</td></tr>
 <tr class="memdesc:ga10536639c61213c037883dade021838f inherit pub_methods_classwiconnect_1_1_file_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">List the files on the <a class="el" href="classwiconnect_1_1_wiconnect.html" title="The root WiConnect library class. This class inheriets all WiConnect functionality. ">Wiconnect</a> WiFi module filesystem.  <a href="group__api__file__methods.html#ga10536639c61213c037883dade021838f">More...</a><br /></td></tr>
 <tr class="separator:ga10536639c61213c037883dade021838f inherit pub_methods_classwiconnect_1_1_file_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_methods_classwiconnect_1_1_ghm_interface"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classwiconnect_1_1_ghm_interface')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td></tr>
+<tr class="memitem:gaff03ecaa08146e6925820209cdab56bd inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__activate.html#gaff03ecaa08146e6925820209cdab56bd">ghmDownloadCapabilities</a> (const char *capsNameOrCustomUrl=NULL, uint32_t version=0)</td></tr>
+<tr class="memdesc:gaff03ecaa08146e6925820209cdab56bd inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Download a device capabilities file to WiFi module's internal file system.  <a href="group__api__ghm__activate.html#gaff03ecaa08146e6925820209cdab56bd">More...</a><br /></td></tr>
+<tr class="separator:gaff03ecaa08146e6925820209cdab56bd inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa0213731eebd4a14e9099d01ff76beff inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate</a> (const char *userName, const char *password, const char *capsFilename=NULL)</td></tr>
+<tr class="memdesc:gaa0213731eebd4a14e9099d01ff76beff inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Activate WiFi module with <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">More...</a><br /></td></tr>
+<tr class="separator:gaa0213731eebd4a14e9099d01ff76beff inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad0e0484d1f9a6608475874544f96708b inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__activate.html#gad0e0484d1f9a6608475874544f96708b">ghmDeactivate</a> (const char *userName, const char *password)</td></tr>
+<tr class="memdesc:gad0e0484d1f9a6608475874544f96708b inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deactivate WiFi module with <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__activate.html#gad0e0484d1f9a6608475874544f96708b">More...</a><br /></td></tr>
+<tr class="separator:gad0e0484d1f9a6608475874544f96708b inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8bec70f780ca7de9dce1a15830c179ff inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__activate.html#ga8bec70f780ca7de9dce1a15830c179ff">ghmIsActivated</a> (bool *statusPtr)</td></tr>
+<tr class="memdesc:ga8bec70f780ca7de9dce1a15830c179ff inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return if WiFi module is activated with <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__activate.html#ga8bec70f780ca7de9dce1a15830c179ff">More...</a><br /></td></tr>
+<tr class="separator:ga8bec70f780ca7de9dce1a15830c179ff inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3fde7b34da992719b41fc52178b73bc2 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2">ghmRead</a> (const char *controlName, const char **valueStrPtr)</td></tr>
+<tr class="memdesc:ga3fde7b34da992719b41fc52178b73bc2 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read control data from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2">More...</a><br /></td></tr>
+<tr class="separator:ga3fde7b34da992719b41fc52178b73bc2 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2d4f14ef409c30b49ce2a06b72d10c7f inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga2d4f14ef409c30b49ce2a06b72d10c7f">ghmRead</a> (const char *controlName, uint32_t *valueIntPtr)</td></tr>
+<tr class="memdesc:ga2d4f14ef409c30b49ce2a06b72d10c7f inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read control data from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__com.html#ga2d4f14ef409c30b49ce2a06b72d10c7f">More...</a><br /></td></tr>
+<tr class="separator:ga2d4f14ef409c30b49ce2a06b72d10c7f inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga965090d4b28bda9f58716b522a6bee12 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga965090d4b28bda9f58716b522a6bee12">ghmRead</a> (const char *controlName, char *valueBuffer, uint16_t valueBufferLen)</td></tr>
+<tr class="memdesc:ga965090d4b28bda9f58716b522a6bee12 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read control data from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__com.html#ga965090d4b28bda9f58716b522a6bee12">More...</a><br /></td></tr>
+<tr class="separator:ga965090d4b28bda9f58716b522a6bee12 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2f57fc33ad0e71d608b1350d4e3ab223 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223">ghmWrite</a> (const char *elementName, const char *strValue)</td></tr>
+<tr class="memdesc:ga2f57fc33ad0e71d608b1350d4e3ab223 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write stream or control data to <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223">More...</a><br /></td></tr>
+<tr class="separator:ga2f57fc33ad0e71d608b1350d4e3ab223 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga26ef47c451e7dbe869f19f5f36695e7c inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga26ef47c451e7dbe869f19f5f36695e7c">ghmWrite</a> (const char *elementName, uint32_t uintValue)</td></tr>
+<tr class="memdesc:ga26ef47c451e7dbe869f19f5f36695e7c inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write stream or control data to <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__com.html#ga26ef47c451e7dbe869f19f5f36695e7c">More...</a><br /></td></tr>
+<tr class="separator:ga26ef47c451e7dbe869f19f5f36695e7c inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab524e64f4bbae826c27bf39d7f2d3c2e inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#gab524e64f4bbae826c27bf39d7f2d3c2e">ghmWrite</a> (const char *elementName, int32_t intValue)</td></tr>
+<tr class="memdesc:gab524e64f4bbae826c27bf39d7f2d3c2e inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write stream or control data to <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__com.html#gab524e64f4bbae826c27bf39d7f2d3c2e">More...</a><br /></td></tr>
+<tr class="separator:gab524e64f4bbae826c27bf39d7f2d3c2e inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5eb797aba87a3ab76d742afe34292ee6 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga5eb797aba87a3ab76d742afe34292ee6">ghmWrite</a> (const <a class="el" href="structwiconnect_1_1_ghm_element_array.html">GhmElementArray</a> *elementArray)</td></tr>
+<tr class="memdesc:ga5eb797aba87a3ab76d742afe34292ee6 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write stream or control data to <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__com.html#ga5eb797aba87a3ab76d742afe34292ee6">More...</a><br /></td></tr>
+<tr class="separator:ga5eb797aba87a3ab76d742afe34292ee6 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0aa48506edb22c90be513683672b96c7 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga0aa48506edb22c90be513683672b96c7">ghmSynchronize</a> (<a class="el" href="group__api__ghm__types.html#ga44ea17651dcf42ac9816f549beb577ac">GhmSyncType</a> type=<a class="el" href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577aca8aa4d4efd897cd69e0f08feaeaa122e7">GHM_SYNC_ALL</a>)</td></tr>
+<tr class="memdesc:ga0aa48506edb22c90be513683672b96c7 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Synchronize WiFi module with <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__com.html#ga0aa48506edb22c90be513683672b96c7">More...</a><br /></td></tr>
+<tr class="separator:ga0aa48506edb22c90be513683672b96c7 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadc281f497041b26a151c72a0b5d03543 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#gadc281f497041b26a151c72a0b5d03543">ghmPostMessage</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, bool jsonFormatted=false)</td></tr>
+<tr class="memdesc:gadc281f497041b26a151c72a0b5d03543 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">POST message to <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__msg.html#gadc281f497041b26a151c72a0b5d03543">More...</a><br /></td></tr>
+<tr class="separator:gadc281f497041b26a151c72a0b5d03543 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaaa05391432b2ca38bb416c671f57b234 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234">ghmGetMessage</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <a class="el" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a> getType=<a class="el" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127">GHM_MSG_GET_DATA_ONLY</a>)</td></tr>
+<tr class="memdesc:gaaa05391432b2ca38bb416c671f57b234 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">GET message from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234">More...</a><br /></td></tr>
+<tr class="separator:gaaa05391432b2ca38bb416c671f57b234 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa905a010f0e234d290eaef6e42975c29 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#gaa905a010f0e234d290eaef6e42975c29">ghmGetMessage</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, uint8_t listIndex, <a class="el" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a> getType=<a class="el" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127">GHM_MSG_GET_DATA_ONLY</a>)</td></tr>
+<tr class="memdesc:gaa905a010f0e234d290eaef6e42975c29 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">GET message from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__msg.html#gaa905a010f0e234d290eaef6e42975c29">More...</a><br /></td></tr>
+<tr class="separator:gaa905a010f0e234d290eaef6e42975c29 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9c6dffaa871f2443a32d75276160682d inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#ga9c6dffaa871f2443a32d75276160682d">ghmGetMessage</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *msgId, <a class="el" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a> getType=<a class="el" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127">GHM_MSG_GET_DATA_ONLY</a>)</td></tr>
+<tr class="memdesc:ga9c6dffaa871f2443a32d75276160682d inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">GET message from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__msg.html#ga9c6dffaa871f2443a32d75276160682d">More...</a><br /></td></tr>
+<tr class="separator:ga9c6dffaa871f2443a32d75276160682d inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga451de9d69f7ecbf38e36056e502b94b0 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#ga451de9d69f7ecbf38e36056e502b94b0">ghmDeleteMessage</a> (uint8_t listIndex)</td></tr>
+<tr class="memdesc:ga451de9d69f7ecbf38e36056e502b94b0 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete message from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__msg.html#ga451de9d69f7ecbf38e36056e502b94b0">More...</a><br /></td></tr>
+<tr class="separator:ga451de9d69f7ecbf38e36056e502b94b0 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7273f4c691aeccd241327f1be3e8d0e9 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#ga7273f4c691aeccd241327f1be3e8d0e9">ghmDeleteMessage</a> (const char *msgId)</td></tr>
+<tr class="memdesc:ga7273f4c691aeccd241327f1be3e8d0e9 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete message from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__msg.html#ga7273f4c691aeccd241327f1be3e8d0e9">More...</a><br /></td></tr>
+<tr class="separator:ga7273f4c691aeccd241327f1be3e8d0e9 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae69971594793e1a10f11a51277909502 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502">ghmListMessages</a> (<a class="el" href="classwiconnect_1_1_ghm_message_list.html">GhmMessageList</a> &amp;msgList, uint8_t maxCount=0)</td></tr>
+<tr class="memdesc:gae69971594793e1a10f11a51277909502 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">List available messages for device on <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502">More...</a><br /></td></tr>
+<tr class="separator:gae69971594793e1a10f11a51277909502 inherit pub_methods_classwiconnect_1_1_ghm_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
 Static Public Member Functions</h2></td></tr>
@@ -378,10 +456,10 @@
 static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#ga93bdb8669a70adaa61dc76073ce66591">strToIp</a> (const char *str, uint32_t *intPtr)</td></tr>
 <tr class="memdesc:ga93bdb8669a70adaa61dc76073ce66591 inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert string to IP address. <br /></td></tr>
 <tr class="separator:ga93bdb8669a70adaa61dc76073ce66591 inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gaff8b0af70f4d4be792b943ad3af27303 inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaff8b0af70f4d4be792b943ad3af27303"></a>
-static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#gaff8b0af70f4d4be792b943ad3af27303">ipToStr</a> (uint32_t ip, char *ipStrBuffer=NULL)</td></tr>
-<tr class="memdesc:gaff8b0af70f4d4be792b943ad3af27303 inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert IP address to string. <br /></td></tr>
-<tr class="separator:gaff8b0af70f4d4be792b943ad3af27303 inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga02e6b01f11f2283208f051b1b49b634c inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga02e6b01f11f2283208f051b1b49b634c"></a>
+static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#ga02e6b01f11f2283208f051b1b49b634c">ipToStr</a> (uint32_t ip, char *ipStrBuffer ALLOW_NULL_STRING_BUFFER)</td></tr>
+<tr class="memdesc:ga02e6b01f11f2283208f051b1b49b634c inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert IP address to string. <br /></td></tr>
+<tr class="separator:ga02e6b01f11f2283208f051b1b49b634c inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:gacff5a4927d79e8b4c0d5a3050f5950b0 inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacff5a4927d79e8b4c0d5a3050f5950b0"></a>
 static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#gacff5a4927d79e8b4c0d5a3050f5950b0">networkStatusToStr</a> (<a class="el" href="group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99">NetworkStatus</a> status)</td></tr>
 <tr class="memdesc:gacff5a4927d79e8b4c0d5a3050f5950b0 inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert <a class="el" href="group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99">NetworkStatus</a> to string. <br /></td></tr>
@@ -410,18 +488,18 @@
 static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#ga6a479a58591ead92dcf0586e11fcad17">strToSsid</a> (const char *str, <a class="el" href="structwiconnect_1_1_ssid.html">Ssid</a> *ssid)</td></tr>
 <tr class="memdesc:ga6a479a58591ead92dcf0586e11fcad17 inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert string <a class="el" href="structwiconnect_1_1_ssid.html">Ssid</a>. <br /></td></tr>
 <tr class="separator:ga6a479a58591ead92dcf0586e11fcad17 inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gafce7929a10e16cf9be7307a2f97bef3f inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gafce7929a10e16cf9be7307a2f97bef3f"></a>
-static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#gafce7929a10e16cf9be7307a2f97bef3f">ssidToStr</a> (const <a class="el" href="structwiconnect_1_1_ssid.html">Ssid</a> *ssid, char *ssidStrBuffer=NULL)</td></tr>
-<tr class="memdesc:gafce7929a10e16cf9be7307a2f97bef3f inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert <a class="el" href="structwiconnect_1_1_ssid.html">Ssid</a> to string. <br /></td></tr>
-<tr class="separator:gafce7929a10e16cf9be7307a2f97bef3f inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae8b534c249d503aa764017bb088f3890 inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae8b534c249d503aa764017bb088f3890"></a>
+static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#gae8b534c249d503aa764017bb088f3890">ssidToStr</a> (const <a class="el" href="structwiconnect_1_1_ssid.html">Ssid</a> *ssid, char *ssidStrBuffer ALLOW_NULL_STRING_BUFFER)</td></tr>
+<tr class="memdesc:gae8b534c249d503aa764017bb088f3890 inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert <a class="el" href="structwiconnect_1_1_ssid.html">Ssid</a> to string. <br /></td></tr>
+<tr class="separator:gae8b534c249d503aa764017bb088f3890 inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga347f05073370d6872a5cdac74de39b1b inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga347f05073370d6872a5cdac74de39b1b"></a>
 static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#ga347f05073370d6872a5cdac74de39b1b">strToMacAddress</a> (const char *str, <a class="el" href="structwiconnect_1_1_mac_address.html">MacAddress</a> *macAddress)</td></tr>
 <tr class="memdesc:ga347f05073370d6872a5cdac74de39b1b inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert string <a class="el" href="structwiconnect_1_1_mac_address.html">MacAddress</a>. <br /></td></tr>
 <tr class="separator:ga347f05073370d6872a5cdac74de39b1b inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga13ecaf390b4bf4a68b51a6b18e669134 inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga13ecaf390b4bf4a68b51a6b18e669134"></a>
-static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#ga13ecaf390b4bf4a68b51a6b18e669134">macAddressToStr</a> (const <a class="el" href="structwiconnect_1_1_mac_address.html">MacAddress</a> *macAddress, char *macStrBuffer=NULL)</td></tr>
-<tr class="memdesc:ga13ecaf390b4bf4a68b51a6b18e669134 inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert <a class="el" href="structwiconnect_1_1_mac_address.html">MacAddress</a> to string. <br /></td></tr>
-<tr class="separator:ga13ecaf390b4bf4a68b51a6b18e669134 inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga01520d55f1923d90fb899ddef2f21cdf inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga01520d55f1923d90fb899ddef2f21cdf"></a>
+static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#ga01520d55f1923d90fb899ddef2f21cdf">macAddressToStr</a> (const <a class="el" href="structwiconnect_1_1_mac_address.html">MacAddress</a> *macAddress, char *macStrBuffer ALLOW_NULL_STRING_BUFFER)</td></tr>
+<tr class="memdesc:ga01520d55f1923d90fb899ddef2f21cdf inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert <a class="el" href="structwiconnect_1_1_mac_address.html">MacAddress</a> to string. <br /></td></tr>
+<tr class="separator:ga01520d55f1923d90fb899ddef2f21cdf inherit pub_static_methods_classwiconnect_1_1_network_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_static_methods_classwiconnect_1_1_file_interface"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classwiconnect_1_1_file_interface')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classwiconnect_1_1_file_interface.html">wiconnect::FileInterface</a></td></tr>
 <tr class="memitem:gad74fbe6faf90d987b31380978f3ea341 inherit pub_static_methods_classwiconnect_1_1_file_interface"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad74fbe6faf90d987b31380978f3ea341"></a>
 static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#gad74fbe6faf90d987b31380978f3ea341">fileVersionIntToStr</a> (uint32_t version, bool verbose=true, char *buffer=NULL)</td></tr>
@@ -442,7 +520,7 @@
 <div class="textblock"><p>The root WiConnect library class. This class inheriets all WiConnect functionality. </p>
 <p>This class is implemented as a 'singleton'. This means it only needs to be instantiated once. Subsequent class may either use the class instance or the static function: <a class="el" href="group__api__core__misc.html#ga8dcd3ac87afd58b225abb068e835d06e">Wiconnect::getInstance()</a> </p>
 
-<p>Definition at line <a class="el" href="_wiconnect_interface_8h_source.html#l00074">74</a> of file <a class="el" href="_wiconnect_interface_8h_source.html">WiconnectInterface.h</a>.</p>
+<p>Definition at line <a class="el" href="_wiconnect_interface_8h_source.html#l00078">78</a> of file <a class="el" href="_wiconnect_interface_8h_source.html">WiconnectInterface.h</a>.</p>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
 <a class="anchor" id="a285510a2cba5341db387101ac75a4389"></a>
 <div class="memitem">
@@ -563,7 +641,7 @@
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/<a class="el" href="_wiconnect_interface_8h_source.html">WiconnectInterface.h</a></li>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/<a class="el" href="_wiconnect_interface_8h_source.html">WiconnectInterface.h</a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
--- a/doc/html/classwiconnect_1_1_wiconnect.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_wiconnect.js	Mon Oct 27 13:42:26 2014 -0700
@@ -5,7 +5,8 @@
     [ "checkCurrentCommand", "group__api__core__send__command.html#gaf48c1ec0b92af2619ab846baaaa471cd", null ],
     [ "deinit", "group__api__core__misc.html#ga9d6c981a54c6ab964b469e4f247142d6", null ],
     [ "flush", "group__api__core__misc.html#ga96ac50d85d8ab376755d7d5325de1713", null ],
-    [ "getCommandDefaultTimeout", "group__api__core__settings.html#gad5d31980a7b1e143f00b0117468c1a7e", null ],
+    [ "getBlockingEnabled", "group__api__core__settings.html#gaf6115968c49c128717cacd2f06b883ad", null ],
+    [ "getCommandDefaultTimeout", "group__api__core__settings.html#gad8d98b8d2610f4ea564bede27e87857e", null ],
     [ "getLastCommandResponseCodeStr", "group__api__core__misc.html#gad8069679fabb52d44647d27703f1a09a", null ],
     [ "getLastCommandResponseLength", "group__api__core__misc.html#ga600215de23210071c42996d04390071e", null ],
     [ "getResponseBuffer", "group__api__core__misc.html#ga27b5d6b8207e4ef0f73875606d628da8", null ],
@@ -18,21 +19,22 @@
     [ "reset", "group__api__core__misc.html#gabec1504eb7f486085dad82c4a94310e3", null ],
     [ "responseToInt32", "group__api__core__misc.html#gada79343aece515e00f9be4045d3858a0", null ],
     [ "responseToUint32", "group__api__core__misc.html#gac40b2964149e60245ff3cac6adbcd565", null ],
-    [ "sendCommand", "group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c", null ],
-    [ "sendCommand", "group__api__core__send__command.html#gad23730a1f2f7714ef962f24a0f99f0f7", null ],
-    [ "sendCommand", "group__api__core__send__command.html#ga0e0591e923da9ab814bb3dd3afbda197", null ],
-    [ "sendCommand", "group__api__core__send__command.html#gadd347dd3952ebab2fa27561c12858f65", null ],
+    [ "sendCommand", "group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505", null ],
+    [ "sendCommand", "group__api__core__send__command.html#gaa36b07b28a166fe51f9dc92bcab5d3d8", null ],
+    [ "sendCommand", "group__api__core__send__command.html#gabe0e5c170b9c6ec7d6dc96a3639c721e", null ],
+    [ "sendCommand", "group__api__core__send__command.html#ga8c6d84b338847fbdd41f61c5375117e9", null ],
     [ "sendCommand", "group__api__core__send__command.html#gaca2f1b17d2cc98cbc6dac219ffcf9e84", null ],
-    [ "sendCommand", "group__api__core__send__command.html#ga3655750f929f8f4e966278193d0385a9", null ],
+    [ "sendCommand", "group__api__core__send__command.html#ga5f437c3518de14706c6fcff32a0b0f97", null ],
     [ "sendCommand", "group__api__core__send__command.html#gaf93db1b2730bb586287f7756f3cdf092", null ],
     [ "sendCommand", "group__api__core__send__command.html#gaac75ca154bd5d5a21c714dd828a92363", null ],
     [ "sendCommand", "group__api__core__send__command.html#ga7eb983a196daa5de20a73fd234dc6f64", null ],
     [ "sendCommand", "group__api__core__send__command.html#gadad1c5b3df07a24ab09492edf93dd1f4", null ],
-    [ "sendCommand", "group__api__core__send__command.html#gaa6d744ec08ba6c9abf451bdc2b0beb00", null ],
-    [ "sendCommand", "group__api__core__send__command.html#gace479d34633141ff1eefa0e98c4d2351", null ],
+    [ "sendCommand", "group__api__core__send__command.html#ga9a89a0dd00f8eedb5e3eb8d4a4ed58df", null ],
+    [ "sendCommand", "group__api__core__send__command.html#ga5666d99d72494995db0a812fcc9bbd09", null ],
     [ "sendCommand", "group__api__core__send__command.html#ga9d0ade0ec2866d7e0df5391bc69f5698", null ],
     [ "setAssertLogger", "group__api__core__settings.html#ga273f67fede26be4a3d5d909c5cf8c7e0", null ],
-    [ "setCommandDefaultTimeout", "group__api__core__settings.html#gaaaf8be221699870053ad98911b066a32", null ],
+    [ "setBlockingEnabled", "group__api__core__settings.html#ga851795595a422a14249b7ea9f0038c4c", null ],
+    [ "setCommandDefaultTimeout", "group__api__core__settings.html#gacae50138f9388a66496408f9c2bf6a6f", null ],
     [ "setDebugLogger", "group__api__core__settings.html#ga75fb083451ee530a1c19e6a4c1be185e", null ],
     [ "setPinToGpioMapper", "group__api__core__settings.html#ga180b043ec83c53b5bf6b9ef2b187d08d", null ],
     [ "setSetting", "group__api__core__settings.html#gace51a2841415a53f54fcce336182f0ec", null ],
--- a/doc/html/classwiconnect_1_1_wiconnect_file.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_wiconnect_file.html	Mon Oct 27 13:42:26 2014 -0700
@@ -121,7 +121,7 @@
 
 <p>Definition at line <a class="el" href="_wiconnect_file_8h_source.html#l00044">44</a> of file <a class="el" href="_wiconnect_file_8h_source.html">WiconnectFile.h</a>.</p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/types/<a class="el" href="_wiconnect_file_8h_source.html">WiconnectFile.h</a></li>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/types/<a class="el" href="_wiconnect_file_8h_source.html">WiconnectFile.h</a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
--- a/doc/html/classwiconnect_1_1_wiconnect_socket.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/classwiconnect_1_1_wiconnect_socket.html	Mon Oct 27 13:42:26 2014 -0700
@@ -116,12 +116,14 @@
  <a href="classwiconnect_1_1_wiconnect_socket.html#details">More...</a></p>
 
 <p><code>#include &lt;<a class="el" href="_wiconnect_socket_8h_source.html">WiconnectSocket.h</a>&gt;</code></p>
+
+<p>Inherited by <a class="el" href="classwiconnect_1_1_wiconnect_udp_server.html">wiconnect::WiconnectUdpServer</a>.</p>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Connection object to remote server. </p>
 
 <p>Definition at line <a class="el" href="_wiconnect_socket_8h_source.html#l00043">43</a> of file <a class="el" href="_wiconnect_socket_8h_source.html">WiconnectSocket.h</a>.</p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/types/<a class="el" href="_wiconnect_socket_8h_source.html">WiconnectSocket.h</a></li>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/types/<a class="el" href="_wiconnect_socket_8h_source.html">WiconnectSocket.h</a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/classwiconnect_1_1_wiconnect_udp_server-members.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classwiconnect_1_1_wiconnect_udp_server.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">wiconnect::WiconnectUdpServer Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classwiconnect_1_1_wiconnect_udp_server.html">wiconnect::WiconnectUdpServer</a>, including all inherited members.</p>
+<table class="directory">
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/classwiconnect_1_1_wiconnect_udp_server.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classwiconnect_1_1_wiconnect_udp_server.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="classwiconnect_1_1_wiconnect_udp_server-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">wiconnect::WiconnectUdpServer Class Reference<div class="ingroups"><a class="el" href="group__api__socket__types.html">Types</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>UDP Server Listening socket.  
+ <a href="classwiconnect_1_1_wiconnect_udp_server.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="_wiconnect_udp_server_8h_source.html">WiconnectUdpServer.h</a>&gt;</code></p>
+
+<p>Inherits <a class="el" href="classwiconnect_1_1_wiconnect_socket.html">wiconnect::WiconnectSocket</a>.</p>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>UDP Server Listening socket. </p>
+
+<p>Definition at line <a class="el" href="_wiconnect_udp_server_8h_source.html#l00044">44</a> of file <a class="el" href="_wiconnect_udp_server_8h_source.html">WiconnectUdpServer.h</a>.</p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/types/<a class="el" href="_wiconnect_udp_server_8h_source.html">WiconnectUdpServer.h</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/dir_27a7d49d62c4e820c816b3d69e277c43.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,137 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dir_27a7d49d62c4e820c816b3d69e277c43.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">api Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
+Directories</h2></td></tr>
+<tr class="memitem:dir_a4ac87be2fd883a67ff853570f415ca4"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_a4ac87be2fd883a67ff853570f415ca4.html">types</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:_file_interface_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>FileInterface.h</b> <a href="_file_interface_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_ghm_interface_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>GhmInterface.h</b> <a href="_ghm_interface_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_network_interface_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>NetworkInterface.h</b> <a href="_network_interface_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_r_e_a_d_m_e_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>README.h</b> <a href="_r_e_a_d_m_e_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_socket_interface_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>SocketInterface.h</b> <a href="_socket_interface_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_string_util_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>StringUtil.h</b> <a href="_string_util_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_wiconnect_interface_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>WiconnectInterface.h</b> <a href="_wiconnect_interface_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_wiconnect_types_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>WiconnectTypes.h</b> <a href="_wiconnect_types_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- a/doc/html/dir_92f31fe2573a605ed03b946a310a299c.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/dir_92f31fe2573a605ed03b946a310a299c.html	Mon Oct 27 13:42:26 2014 -0700
@@ -104,29 +104,15 @@
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
 Directories</h2></td></tr>
-<tr class="memitem:dir_93b9e9b21cb7eb1f202bc2087d95d726"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_93b9e9b21cb7eb1f202bc2087d95d726.html">sdk</a></td></tr>
+<tr class="memitem:dir_27a7d49d62c4e820c816b3d69e277c43"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_27a7d49d62c4e820c816b3d69e277c43.html">api</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:dir_00910c710364a583a921b5294bac6e71"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_00910c710364a583a921b5294bac6e71.html">types</a></td></tr>
+<tr class="memitem:dir_93b9e9b21cb7eb1f202bc2087d95d726"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_93b9e9b21cb7eb1f202bc2087d95d726.html">sdk</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
 Files</h2></td></tr>
-<tr class="memitem:_file_interface_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>FileInterface.h</b> <a href="_file_interface_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:_network_interface_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>NetworkInterface.h</b> <a href="_network_interface_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:_r_e_a_d_m_e_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>README.h</b> <a href="_r_e_a_d_m_e_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:_socket_interface_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>SocketInterface.h</b> <a href="_socket_interface_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:_string_util_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>StringUtil.h</b> <a href="_string_util_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:_wiconnect_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>Wiconnect.h</b> <a href="_wiconnect_8h_source.html">[code]</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:_wiconnect_interface_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>WiconnectInterface.h</b> <a href="_wiconnect_interface_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:_wiconnect_types_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>WiconnectTypes.h</b> <a href="_wiconnect_types_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 </div><!-- contents -->
 </div><!-- doc-content -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/dir_a4ac87be2fd883a67ff853570f415ca4.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,156 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dir_a4ac87be2fd883a67ff853570f415ca4.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">types Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:_callback_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>Callback.h</b> <a href="_callback_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_command_queue_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>CommandQueue.h</b> <a href="_command_queue_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_file_list_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>FileList.h</b> <a href="_file_list_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_function_pointer_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>FunctionPointer.h</b> <a href="_function_pointer_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_ghm_message_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>GhmMessage.h</b> <a href="_ghm_message_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_ghm_message_list_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>GhmMessageList.h</b> <a href="_ghm_message_list_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_gpio_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>Gpio.h</b> <a href="_gpio_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_log_func_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>LogFunc.h</b> <a href="_log_func_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_periodic_timer_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>PeriodicTimer.h</b> <a href="_periodic_timer_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_pin_irq_handler_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>PinIrqHandler.h</b> <a href="_pin_irq_handler_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_queued_command_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>QueuedCommand.h</b> <a href="_queued_command_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_reader_func_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>ReaderFunc.h</b> <a href="_reader_func_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_scan_result_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>ScanResult.h</b> <a href="_scan_result_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_scan_result_list_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>ScanResultList.h</b> <a href="_scan_result_list_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_socket_irq_handler_map_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>SocketIrqHandlerMap.h</b> <a href="_socket_irq_handler_map_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_timeout_timer_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>TimeoutTimer.h</b> <a href="_timeout_timer_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_wiconnect_file_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>WiconnectFile.h</b> <a href="_wiconnect_file_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_wiconnect_serial_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>WiconnectSerial.h</b> <a href="_wiconnect_serial_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_wiconnect_socket_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>WiconnectSocket.h</b> <a href="_wiconnect_socket_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_wiconnect_udp_server_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>WiconnectUdpServer.h</b> <a href="_wiconnect_udp_server_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- a/doc/html/functions.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/functions.html	Mon Oct 27 13:42:26 2014 -0700
@@ -147,7 +147,7 @@
 : <a class="el" href="group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106">wiconnect::SocketInterface</a>
 </li>
 <li>connect()
-: <a class="el" href="group__api__socket__misc.html#ga037cb2813683697342fff01239c7f6f8">wiconnect::SocketInterface</a>
+: <a class="el" href="group__api__socket__misc.html#gab24204ef309b6e7a52b03b35a7046b45">wiconnect::SocketInterface</a>
 </li>
 <li>contextType
 : <a class="el" href="structwiconnect_1_1_http_socket_args.html#a401fd2b9a75ec8c76d59bd798d36e25b">wiconnect::HttpSocketArgs</a>
@@ -188,17 +188,23 @@
 
 
 <h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
+<li>getBlockingEnabled()
+: <a class="el" href="group__api__core__settings.html#gaf6115968c49c128717cacd2f06b883ad">wiconnect::Wiconnect</a>
+</li>
 <li>getCommandDefaultTimeout()
-: <a class="el" href="group__api__core__settings.html#gad5d31980a7b1e143f00b0117468c1a7e">wiconnect::Wiconnect</a>
+: <a class="el" href="group__api__core__settings.html#gad8d98b8d2610f4ea564bede27e87857e">wiconnect::Wiconnect</a>
 </li>
 <li>getDhcpEnabled()
 : <a class="el" href="group__api__network__settings.html#ga70ec796b88eb6f8e7990dbf3eb2f2eff">wiconnect::NetworkInterface</a>
 </li>
+<li>getDnsAddress()
+: <a class="el" href="group__api__network__settings.html#ga585cb71d386ee61db3772f4b3218cb6e">wiconnect::NetworkInterface</a>
+</li>
 <li>getInstance()
 : <a class="el" href="group__api__core__misc.html#ga8dcd3ac87afd58b225abb068e835d06e">wiconnect::Wiconnect</a>
 </li>
 <li>getIpAddress()
-: <a class="el" href="group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290">wiconnect::NetworkInterface</a>
+: <a class="el" href="group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f">wiconnect::NetworkInterface</a>
 </li>
 <li>getIpSettings()
 : <a class="el" href="group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b">wiconnect::NetworkInterface</a>
@@ -209,6 +215,9 @@
 <li>getLastCommandResponseLength()
 : <a class="el" href="group__api__core__misc.html#ga600215de23210071c42996d04390071e">wiconnect::Wiconnect</a>
 </li>
+<li>getMacAddress()
+: <a class="el" href="group__api__network__wlan.html#ga70991a2c5865c8f0b44b67de35f3b6b3">wiconnect::NetworkInterface</a>
+</li>
 <li>getNetworkJoinResult()
 : <a class="el" href="group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b">wiconnect::NetworkInterface</a>
 </li>
@@ -218,11 +227,14 @@
 <li>getResponseBuffer()
 : <a class="el" href="group__api__core__misc.html#ga27b5d6b8207e4ef0f73875606d628da8">wiconnect::Wiconnect</a>
 </li>
+<li>getRssi()
+: <a class="el" href="group__api__network__wlan.html#gaa9db3c463cf6b4f351c37671882dd3ee">wiconnect::NetworkInterface</a>
+</li>
 <li>getSetting()
 : <a class="el" href="group__api__core__settings.html#ga16d5022d1fbd784fe0fd90a56911c5bc">wiconnect::Wiconnect</a>
 </li>
 <li>getSignalStrength()
-: <a class="el" href="group__api__network__settings.html#gaba16b9918e55c08285cf5b8b50dbabea">wiconnect::NetworkInterface</a>
+: <a class="el" href="group__api__network__wlan.html#gaba16b9918e55c08285cf5b8b50dbabea">wiconnect::NetworkInterface</a>
 </li>
 <li>getVersion()
 : <a class="el" href="group__api__core__misc.html#ga4fc195839bc6c6bd0091074cbdc94c4f">wiconnect::Wiconnect</a>
@@ -230,6 +242,39 @@
 <li>getWiconnectResultStr()
 : <a class="el" href="group__conversion__util.html#gac96e2d2fca60cba12e7429626f9186be">wiconnect::Wiconnect</a>
 </li>
+<li>ghmActivate()
+: <a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">wiconnect::GhmInterface</a>
+</li>
+<li>ghmDeactivate()
+: <a class="el" href="group__api__ghm__activate.html#gad0e0484d1f9a6608475874544f96708b">wiconnect::GhmInterface</a>
+</li>
+<li>ghmDeleteMessage()
+: <a class="el" href="group__api__ghm__msg.html#ga451de9d69f7ecbf38e36056e502b94b0">wiconnect::GhmInterface</a>
+</li>
+<li>ghmDownloadCapabilities()
+: <a class="el" href="group__api__ghm__activate.html#gaff03ecaa08146e6925820209cdab56bd">wiconnect::GhmInterface</a>
+</li>
+<li>ghmGetMessage()
+: <a class="el" href="group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234">wiconnect::GhmInterface</a>
+</li>
+<li>ghmIsActivated()
+: <a class="el" href="group__api__ghm__activate.html#ga8bec70f780ca7de9dce1a15830c179ff">wiconnect::GhmInterface</a>
+</li>
+<li>ghmListMessages()
+: <a class="el" href="group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502">wiconnect::GhmInterface</a>
+</li>
+<li>ghmPostMessage()
+: <a class="el" href="group__api__ghm__msg.html#gadc281f497041b26a151c72a0b5d03543">wiconnect::GhmInterface</a>
+</li>
+<li>ghmRead()
+: <a class="el" href="group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2">wiconnect::GhmInterface</a>
+</li>
+<li>ghmSynchronize()
+: <a class="el" href="group__api__ghm__com.html#ga0aa48506edb22c90be513683672b96c7">wiconnect::GhmInterface</a>
+</li>
+<li>ghmWrite()
+: <a class="el" href="group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223">wiconnect::GhmInterface</a>
+</li>
 </ul>
 
 
@@ -260,7 +305,7 @@
 : <a class="el" href="group__api__core__misc.html#gae2e3add2e60543d0e3340ed7a9e034ad">wiconnect::Wiconnect</a>
 </li>
 <li>ipToStr()
-: <a class="el" href="group__conversion__util.html#gaff8b0af70f4d4be792b943ad3af27303">wiconnect::NetworkInterface</a>
+: <a class="el" href="group__conversion__util.html#ga02e6b01f11f2283208f051b1b49b634c">wiconnect::NetworkInterface</a>
 </li>
 <li>isInitialized()
 : <a class="el" href="group__api__core__misc.html#gab00c7110984f6d6187241d17a4a431ff">wiconnect::Wiconnect</a>
@@ -296,7 +341,7 @@
 
 <h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
 <li>macAddressToStr()
-: <a class="el" href="group__conversion__util.html#ga13ecaf390b4bf4a68b51a6b18e669134">wiconnect::NetworkInterface</a>
+: <a class="el" href="group__conversion__util.html#ga01520d55f1923d90fb899ddef2f21cdf">wiconnect::NetworkInterface</a>
 </li>
 </ul>
 
@@ -332,9 +377,6 @@
 
 
 <h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
-<li>registerSocketIrqHandler()
-: <a class="el" href="group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a">wiconnect::SocketInterface</a>
-</li>
 <li>reset()
 : <a class="el" href="group__api__core__misc.html#gabec1504eb7f486085dad82c4a94310e3">wiconnect::Wiconnect</a>
 </li>
@@ -355,13 +397,16 @@
 : <a class="el" href="group__api__network__util.html#gacdf014d8aca9de33dbc1563c6bb1f956">wiconnect::NetworkInterface</a>
 </li>
 <li>sendCommand()
-: <a class="el" href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">wiconnect::Wiconnect</a>
+: <a class="el" href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">wiconnect::Wiconnect</a>
 </li>
 <li>setAssertLogger()
 : <a class="el" href="group__api__core__settings.html#ga273f67fede26be4a3d5d909c5cf8c7e0">wiconnect::Wiconnect</a>
 </li>
+<li>setBlockingEnabled()
+: <a class="el" href="group__api__core__settings.html#ga851795595a422a14249b7ea9f0038c4c">wiconnect::Wiconnect</a>
+</li>
 <li>setCommandDefaultTimeout()
-: <a class="el" href="group__api__core__settings.html#gaaaf8be221699870053ad98911b066a32">wiconnect::Wiconnect</a>
+: <a class="el" href="group__api__core__settings.html#gacae50138f9388a66496408f9c2bf6a6f">wiconnect::Wiconnect</a>
 </li>
 <li>setDebugLogger()
 : <a class="el" href="group__api__core__settings.html#ga75fb083451ee530a1c19e6a4c1be185e">wiconnect::Wiconnect</a>
@@ -369,6 +414,9 @@
 <li>setDhcpEnabled()
 : <a class="el" href="group__api__network__settings.html#ga65eb99f880ed739d0f3cd393e5b56eaf">wiconnect::NetworkInterface</a>
 </li>
+<li>setDnsAddress()
+: <a class="el" href="group__api__network__settings.html#ga258d8b80064c6ce311a433affe63a0e9">wiconnect::NetworkInterface</a>
+</li>
 <li>setIpSettings()
 : <a class="el" href="group__api__network__settings.html#ga2f7ec21084d3f2835d9c1c201915a9e0">wiconnect::NetworkInterface</a>
 </li>
@@ -382,7 +430,7 @@
 : <a class="el" href="group__conversion__util.html#gad4661f859cfadbe193793898671043c9">wiconnect::NetworkInterface</a>
 </li>
 <li>ssidToStr()
-: <a class="el" href="group__conversion__util.html#gafce7929a10e16cf9be7307a2f97bef3f">wiconnect::NetworkInterface</a>
+: <a class="el" href="group__conversion__util.html#gae8b534c249d503aa764017bb088f3890">wiconnect::NetworkInterface</a>
 </li>
 <li>startWebSetup()
 : <a class="el" href="group__api__network__setup.html#gaea3e133f2ee8c95d8d108c15561f3847">wiconnect::NetworkInterface</a>
@@ -410,19 +458,19 @@
 
 <h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
 <li>tcpAccept()
-: <a class="el" href="group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3">wiconnect::SocketInterface</a>
+: <a class="el" href="group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035">wiconnect::SocketInterface</a>
 </li>
 <li>tcpConnect()
-: <a class="el" href="group__api__socket__tcp.html#ga4a788d604d759b5da51f682b998b9bd2">wiconnect::SocketInterface</a>
+: <a class="el" href="group__api__socket__tcp.html#gad8e8632715a38222ce4fea5fe0aaf527">wiconnect::SocketInterface</a>
 </li>
 <li>tcpListen()
-: <a class="el" href="group__api__socket__tcp.html#ga563831b33089437233f128483d034578">wiconnect::SocketInterface</a>
+: <a class="el" href="group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa">wiconnect::SocketInterface</a>
 </li>
 <li>tcpServerStop()
 : <a class="el" href="group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0">wiconnect::SocketInterface</a>
 </li>
 <li>tlsConnect()
-: <a class="el" href="group__api__socket__tls.html#gacf10d28ced4591d99c4113ebee6382ca">wiconnect::SocketInterface</a>
+: <a class="el" href="group__api__socket__tls.html#ga4e6e89eb9aedec1ff6d25645c33f51e4">wiconnect::SocketInterface</a>
 </li>
 <li>type
 : <a class="el" href="structwiconnect_1_1_http_socket_args.html#adffa0b3f63392a28c19aef272c918772">wiconnect::HttpSocketArgs</a>
@@ -432,10 +480,10 @@
 
 <h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
 <li>udpConnect()
-: <a class="el" href="group__api__socket__udp.html#ga80f1d19174124f3d0f246e1c1201b3ec">wiconnect::SocketInterface</a>
+: <a class="el" href="group__api__socket__udp.html#ga0ca5eabcd64ce45b574205447101f8aa">wiconnect::SocketInterface</a>
 </li>
-<li>unregisterSocketIrqHandler()
-: <a class="el" href="group__api__socket__misc.html#ga820d2fdb12d343212638e55633bd8551">wiconnect::SocketInterface</a>
+<li>udpListen()
+: <a class="el" href="group__api__socket__udp.html#ga067fb0d662d8e27e3f5b561ded29a51a">wiconnect::SocketInterface</a>
 </li>
 <li>updateFirmware()
 : <a class="el" href="group__api__core__misc.html#gad447fe3341539eb9b276d269645bb632">wiconnect::Wiconnect</a>
--- a/doc/html/functions_func.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/functions_func.html	Mon Oct 27 13:42:26 2014 -0700
@@ -143,7 +143,7 @@
 : <a class="el" href="group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106">wiconnect::SocketInterface</a>
 </li>
 <li>connect()
-: <a class="el" href="group__api__socket__misc.html#ga037cb2813683697342fff01239c7f6f8">wiconnect::SocketInterface</a>
+: <a class="el" href="group__api__socket__misc.html#gab24204ef309b6e7a52b03b35a7046b45">wiconnect::SocketInterface</a>
 </li>
 <li>createFile()
 : <a class="el" href="group__api__file__methods.html#ga16fb09105975644879eb09581ce486e5">wiconnect::FileInterface</a>
@@ -181,17 +181,23 @@
 
 
 <h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
+<li>getBlockingEnabled()
+: <a class="el" href="group__api__core__settings.html#gaf6115968c49c128717cacd2f06b883ad">wiconnect::Wiconnect</a>
+</li>
 <li>getCommandDefaultTimeout()
-: <a class="el" href="group__api__core__settings.html#gad5d31980a7b1e143f00b0117468c1a7e">wiconnect::Wiconnect</a>
+: <a class="el" href="group__api__core__settings.html#gad8d98b8d2610f4ea564bede27e87857e">wiconnect::Wiconnect</a>
 </li>
 <li>getDhcpEnabled()
 : <a class="el" href="group__api__network__settings.html#ga70ec796b88eb6f8e7990dbf3eb2f2eff">wiconnect::NetworkInterface</a>
 </li>
+<li>getDnsAddress()
+: <a class="el" href="group__api__network__settings.html#ga585cb71d386ee61db3772f4b3218cb6e">wiconnect::NetworkInterface</a>
+</li>
 <li>getInstance()
 : <a class="el" href="group__api__core__misc.html#ga8dcd3ac87afd58b225abb068e835d06e">wiconnect::Wiconnect</a>
 </li>
 <li>getIpAddress()
-: <a class="el" href="group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290">wiconnect::NetworkInterface</a>
+: <a class="el" href="group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f">wiconnect::NetworkInterface</a>
 </li>
 <li>getIpSettings()
 : <a class="el" href="group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b">wiconnect::NetworkInterface</a>
@@ -202,6 +208,9 @@
 <li>getLastCommandResponseLength()
 : <a class="el" href="group__api__core__misc.html#ga600215de23210071c42996d04390071e">wiconnect::Wiconnect</a>
 </li>
+<li>getMacAddress()
+: <a class="el" href="group__api__network__wlan.html#ga70991a2c5865c8f0b44b67de35f3b6b3">wiconnect::NetworkInterface</a>
+</li>
 <li>getNetworkJoinResult()
 : <a class="el" href="group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b">wiconnect::NetworkInterface</a>
 </li>
@@ -211,11 +220,14 @@
 <li>getResponseBuffer()
 : <a class="el" href="group__api__core__misc.html#ga27b5d6b8207e4ef0f73875606d628da8">wiconnect::Wiconnect</a>
 </li>
+<li>getRssi()
+: <a class="el" href="group__api__network__wlan.html#gaa9db3c463cf6b4f351c37671882dd3ee">wiconnect::NetworkInterface</a>
+</li>
 <li>getSetting()
 : <a class="el" href="group__api__core__settings.html#ga670947ef630233f7866f885500548233">wiconnect::Wiconnect</a>
 </li>
 <li>getSignalStrength()
-: <a class="el" href="group__api__network__settings.html#gaba16b9918e55c08285cf5b8b50dbabea">wiconnect::NetworkInterface</a>
+: <a class="el" href="group__api__network__wlan.html#gaba16b9918e55c08285cf5b8b50dbabea">wiconnect::NetworkInterface</a>
 </li>
 <li>getVersion()
 : <a class="el" href="group__api__core__misc.html#ga4fc195839bc6c6bd0091074cbdc94c4f">wiconnect::Wiconnect</a>
@@ -223,6 +235,39 @@
 <li>getWiconnectResultStr()
 : <a class="el" href="group__conversion__util.html#gac96e2d2fca60cba12e7429626f9186be">wiconnect::Wiconnect</a>
 </li>
+<li>ghmActivate()
+: <a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">wiconnect::GhmInterface</a>
+</li>
+<li>ghmDeactivate()
+: <a class="el" href="group__api__ghm__activate.html#gad0e0484d1f9a6608475874544f96708b">wiconnect::GhmInterface</a>
+</li>
+<li>ghmDeleteMessage()
+: <a class="el" href="group__api__ghm__msg.html#ga451de9d69f7ecbf38e36056e502b94b0">wiconnect::GhmInterface</a>
+</li>
+<li>ghmDownloadCapabilities()
+: <a class="el" href="group__api__ghm__activate.html#gaff03ecaa08146e6925820209cdab56bd">wiconnect::GhmInterface</a>
+</li>
+<li>ghmGetMessage()
+: <a class="el" href="group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234">wiconnect::GhmInterface</a>
+</li>
+<li>ghmIsActivated()
+: <a class="el" href="group__api__ghm__activate.html#ga8bec70f780ca7de9dce1a15830c179ff">wiconnect::GhmInterface</a>
+</li>
+<li>ghmListMessages()
+: <a class="el" href="group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502">wiconnect::GhmInterface</a>
+</li>
+<li>ghmPostMessage()
+: <a class="el" href="group__api__ghm__msg.html#gadc281f497041b26a151c72a0b5d03543">wiconnect::GhmInterface</a>
+</li>
+<li>ghmRead()
+: <a class="el" href="group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2">wiconnect::GhmInterface</a>
+</li>
+<li>ghmSynchronize()
+: <a class="el" href="group__api__ghm__com.html#ga0aa48506edb22c90be513683672b96c7">wiconnect::GhmInterface</a>
+</li>
+<li>ghmWrite()
+: <a class="el" href="group__api__ghm__com.html#gab524e64f4bbae826c27bf39d7f2d3c2e">wiconnect::GhmInterface</a>
+</li>
 </ul>
 
 
@@ -253,7 +298,7 @@
 : <a class="el" href="group__api__core__misc.html#gae2e3add2e60543d0e3340ed7a9e034ad">wiconnect::Wiconnect</a>
 </li>
 <li>ipToStr()
-: <a class="el" href="group__conversion__util.html#gaff8b0af70f4d4be792b943ad3af27303">wiconnect::NetworkInterface</a>
+: <a class="el" href="group__conversion__util.html#ga02e6b01f11f2283208f051b1b49b634c">wiconnect::NetworkInterface</a>
 </li>
 <li>isInitialized()
 : <a class="el" href="group__api__core__misc.html#gab00c7110984f6d6187241d17a4a431ff">wiconnect::Wiconnect</a>
@@ -286,7 +331,7 @@
 
 <h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
 <li>macAddressToStr()
-: <a class="el" href="group__conversion__util.html#ga13ecaf390b4bf4a68b51a6b18e669134">wiconnect::NetworkInterface</a>
+: <a class="el" href="group__conversion__util.html#ga01520d55f1923d90fb899ddef2f21cdf">wiconnect::NetworkInterface</a>
 </li>
 </ul>
 
@@ -319,9 +364,6 @@
 
 
 <h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
-<li>registerSocketIrqHandler()
-: <a class="el" href="group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a">wiconnect::SocketInterface</a>
-</li>
 <li>reset()
 : <a class="el" href="group__api__core__misc.html#gabec1504eb7f486085dad82c4a94310e3">wiconnect::Wiconnect</a>
 </li>
@@ -342,13 +384,16 @@
 : <a class="el" href="group__api__network__util.html#gacdf014d8aca9de33dbc1563c6bb1f956">wiconnect::NetworkInterface</a>
 </li>
 <li>sendCommand()
-: <a class="el" href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">wiconnect::Wiconnect</a>
+: <a class="el" href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">wiconnect::Wiconnect</a>
 </li>
 <li>setAssertLogger()
 : <a class="el" href="group__api__core__settings.html#ga273f67fede26be4a3d5d909c5cf8c7e0">wiconnect::Wiconnect</a>
 </li>
+<li>setBlockingEnabled()
+: <a class="el" href="group__api__core__settings.html#ga851795595a422a14249b7ea9f0038c4c">wiconnect::Wiconnect</a>
+</li>
 <li>setCommandDefaultTimeout()
-: <a class="el" href="group__api__core__settings.html#gaaaf8be221699870053ad98911b066a32">wiconnect::Wiconnect</a>
+: <a class="el" href="group__api__core__settings.html#gacae50138f9388a66496408f9c2bf6a6f">wiconnect::Wiconnect</a>
 </li>
 <li>setDebugLogger()
 : <a class="el" href="group__api__core__settings.html#ga75fb083451ee530a1c19e6a4c1be185e">wiconnect::Wiconnect</a>
@@ -356,20 +401,23 @@
 <li>setDhcpEnabled()
 : <a class="el" href="group__api__network__settings.html#ga65eb99f880ed739d0f3cd393e5b56eaf">wiconnect::NetworkInterface</a>
 </li>
+<li>setDnsAddress()
+: <a class="el" href="group__api__network__settings.html#ga258d8b80064c6ce311a433affe63a0e9">wiconnect::NetworkInterface</a>
+</li>
 <li>setIpSettings()
-: <a class="el" href="group__api__network__settings.html#gaa418175dd3d06b870f3dd8e035cb4dd0">wiconnect::NetworkInterface</a>
+: <a class="el" href="group__api__network__settings.html#ga2f7ec21084d3f2835d9c1c201915a9e0">wiconnect::NetworkInterface</a>
 </li>
 <li>setPinToGpioMapper()
 : <a class="el" href="group__api__core__settings.html#ga180b043ec83c53b5bf6b9ef2b187d08d">wiconnect::Wiconnect</a>
 </li>
 <li>setSetting()
-: <a class="el" href="group__api__core__settings.html#gace51a2841415a53f54fcce336182f0ec">wiconnect::Wiconnect</a>
+: <a class="el" href="group__api__core__settings.html#ga085a17a466905069940611bdd14c1d3e">wiconnect::Wiconnect</a>
 </li>
 <li>signalStrengthToStr()
 : <a class="el" href="group__conversion__util.html#gad4661f859cfadbe193793898671043c9">wiconnect::NetworkInterface</a>
 </li>
 <li>ssidToStr()
-: <a class="el" href="group__conversion__util.html#gafce7929a10e16cf9be7307a2f97bef3f">wiconnect::NetworkInterface</a>
+: <a class="el" href="group__conversion__util.html#gae8b534c249d503aa764017bb088f3890">wiconnect::NetworkInterface</a>
 </li>
 <li>startWebSetup()
 : <a class="el" href="group__api__network__setup.html#gaea3e133f2ee8c95d8d108c15561f3847">wiconnect::NetworkInterface</a>
@@ -397,29 +445,29 @@
 
 <h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
 <li>tcpAccept()
-: <a class="el" href="group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3">wiconnect::SocketInterface</a>
+: <a class="el" href="group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035">wiconnect::SocketInterface</a>
 </li>
 <li>tcpConnect()
-: <a class="el" href="group__api__socket__tcp.html#ga4a788d604d759b5da51f682b998b9bd2">wiconnect::SocketInterface</a>
+: <a class="el" href="group__api__socket__tcp.html#gad8e8632715a38222ce4fea5fe0aaf527">wiconnect::SocketInterface</a>
 </li>
 <li>tcpListen()
-: <a class="el" href="group__api__socket__tcp.html#ga563831b33089437233f128483d034578">wiconnect::SocketInterface</a>
+: <a class="el" href="group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa">wiconnect::SocketInterface</a>
 </li>
 <li>tcpServerStop()
 : <a class="el" href="group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0">wiconnect::SocketInterface</a>
 </li>
 <li>tlsConnect()
-: <a class="el" href="group__api__socket__tls.html#gacf10d28ced4591d99c4113ebee6382ca">wiconnect::SocketInterface</a>
+: <a class="el" href="group__api__socket__tls.html#ga4e6e89eb9aedec1ff6d25645c33f51e4">wiconnect::SocketInterface</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
 <li>udpConnect()
-: <a class="el" href="group__api__socket__udp.html#ga80f1d19174124f3d0f246e1c1201b3ec">wiconnect::SocketInterface</a>
+: <a class="el" href="group__api__socket__udp.html#ga0ca5eabcd64ce45b574205447101f8aa">wiconnect::SocketInterface</a>
 </li>
-<li>unregisterSocketIrqHandler()
-: <a class="el" href="group__api__socket__misc.html#ga820d2fdb12d343212638e55633bd8551">wiconnect::SocketInterface</a>
+<li>udpListen()
+: <a class="el" href="group__api__socket__udp.html#ga067fb0d662d8e27e3f5b561ded29a51a">wiconnect::SocketInterface</a>
 </li>
 <li>updateFirmware()
 : <a class="el" href="group__api__core__misc.html#gad447fe3341539eb9b276d269645bb632">wiconnect::Wiconnect</a>
--- a/doc/html/group__api__core.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__core.html	Mon Oct 27 13:42:26 2014 -0700
@@ -104,7 +104,7 @@
 </div><!--header-->
 <div class="contents">
 
-<p>This contains all core methods.  
+<p>This contains all core related operations.  
 <a href="#details">More...</a></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
@@ -129,7 +129,7 @@
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<p>This contains all core methods. </p>
+<p>This contains all core related operations. </p>
 </div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/group__api__core__macro.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__core__macro.html	Mon Oct 27 13:42:26 2014 -0700
@@ -141,6 +141,10 @@
 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__macro.html#gabb158b483cd6d8a8d2d4bf8d38bc9830">WICONNECT_SUCCEEDED</a>(result, func)&#160;&#160;&#160;((result = (func)) == <a class="el" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7">wiconnect::WICONNECT_SUCCESS</a>)</td></tr>
 <tr class="memdesc:gabb158b483cd6d8a8d2d4bf8d38bc9830"><td class="mdescLeft">&#160;</td><td class="mdescRight">Populates <em>result</em> with return value from <em>func</em>, returns TRUE if return value is WICONNECT_SUCCESS. <br /></td></tr>
 <tr class="separator:gabb158b483cd6d8a8d2d4bf8d38bc9830"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga436d782bd2cdce3696eadda1083416af"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga436d782bd2cdce3696eadda1083416af"></a>
+#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__macro.html#ga436d782bd2cdce3696eadda1083416af">WICONNECT_IS_PROCESSING</a>(result, func)&#160;&#160;&#160;((result = (func)) == <a class="el" href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a289d83a8cf2d1e1f272134d8268925c0">wiconnect::WICONNECT_PROCESSING</a>)</td></tr>
+<tr class="memdesc:ga436d782bd2cdce3696eadda1083416af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Populates <em>result</em> with return value from <em>func</em>, returns TRUE if return value is WICONNECT_PROCESSING. <br /></td></tr>
+<tr class="separator:ga436d782bd2cdce3696eadda1083416af"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga2aa16118029ab13ab41514cb8eb93ba7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2aa16118029ab13ab41514cb8eb93ba7"></a>
 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__macro.html#ga2aa16118029ab13ab41514cb8eb93ba7">WICONNECT_MAX_CMD_SIZE</a>&#160;&#160;&#160;128</td></tr>
 <tr class="memdesc:ga2aa16118029ab13ab41514cb8eb93ba7"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum command size that may be sent to the WiConnect WiFi module. <br /></td></tr>
@@ -162,7 +166,7 @@
 <tr class="memdesc:ga8bc3b8d2e7e7c9d10b23e0a15cd4507a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum Wiconnect Module flash filesystem filename length. <br /></td></tr>
 <tr class="separator:ga8bc3b8d2e7e7c9d10b23e0a15cd4507a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga580e5f45fee866c845e0d3fd1eb1744a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga580e5f45fee866c845e0d3fd1eb1744a"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__macro.html#ga580e5f45fee866c845e0d3fd1eb1744a">WICONNECT_WAIT_FOREVER</a>&#160;&#160;&#160;0xFFFFFFFF</td></tr>
+#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__macro.html#ga580e5f45fee866c845e0d3fd1eb1744a">WICONNECT_WAIT_FOREVER</a>&#160;&#160;&#160;0xFFFFFFFFUL</td></tr>
 <tr class="memdesc:ga580e5f45fee866c845e0d3fd1eb1744a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Never timeout. <br /></td></tr>
 <tr class="separator:ga580e5f45fee866c845e0d3fd1eb1744a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga12620767dcf50182fb9f72fe5d995301"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga12620767dcf50182fb9f72fe5d995301"></a>
@@ -170,7 +174,7 @@
 <tr class="memdesc:ga12620767dcf50182fb9f72fe5d995301"><td class="mdescLeft">&#160;</td><td class="mdescRight">Timeout immediately. <br /></td></tr>
 <tr class="separator:ga12620767dcf50182fb9f72fe5d995301"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga6d336ec791dcd22238d2fc4995fb9431"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6d336ec791dcd22238d2fc4995fb9431"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__macro.html#ga6d336ec791dcd22238d2fc4995fb9431">WICONNECT_FIRMWARE_UPDATE_TIMEOUT</a>&#160;&#160;&#160;90000</td></tr>
+#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__macro.html#ga6d336ec791dcd22238d2fc4995fb9431">WICONNECT_FIRMWARE_UPDATE_TIMEOUT</a>&#160;&#160;&#160;90000UL</td></tr>
 <tr class="memdesc:ga6d336ec791dcd22238d2fc4995fb9431"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default firmware update timeout in ms. <br /></td></tr>
 <tr class="separator:ga6d336ec791dcd22238d2fc4995fb9431"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:gad466ede4f07512308e38402d777d8380"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad466ede4f07512308e38402d777d8380"></a>
@@ -189,6 +193,10 @@
 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__macro.html#gae7b6cfdff3a9aef465d5c4434937417d">WICONNECT_USE_DEFAULT_STRING_BUFFERS</a></td></tr>
 <tr class="memdesc:gae7b6cfdff3a9aef465d5c4434937417d"><td class="mdescLeft">&#160;</td><td class="mdescRight">When defined enables certain conversion API functions to use a default buffer to store string. <br /></td></tr>
 <tr class="separator:gae7b6cfdff3a9aef465d5c4434937417d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga593c6629b59a853057cd6a5547ed3f4f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga593c6629b59a853057cd6a5547ed3f4f"></a>
+#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__macro.html#ga593c6629b59a853057cd6a5547ed3f4f">WICONNECT_GPIO_IRQ_ENABLED</a></td></tr>
+<tr class="memdesc:ga593c6629b59a853057cd6a5547ed3f4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">When defined enables external interrupts on specified gpios. <br /></td></tr>
+<tr class="separator:ga593c6629b59a853057cd6a5547ed3f4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:gaaff0108d684631b2bb88e1f6c255e9ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaaff0108d684631b2bb88e1f6c255e9ac"></a>
 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__macro.html#gaaff0108d684631b2bb88e1f6c255e9ac">WICONNECT_DEFAULT_MALLOC</a>&#160;&#160;&#160;malloc</td></tr>
 <tr class="memdesc:gaaff0108d684631b2bb88e1f6c255e9ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">When WICONNECT_ENABLE_MALLOC defined, this is the default malloc function. <br /></td></tr>
@@ -217,6 +225,10 @@
 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__macro.html#ga347d0e1228e8174563c6bcf48de18401">WICONNECT_DEFAULT_NONBLOCKING</a>&#160;&#160;&#160;false</td></tr>
 <tr class="memdesc:ga347d0e1228e8174563c6bcf48de18401"><td class="mdescLeft">&#160;</td><td class="mdescRight">The default blocking mode of the Library. <br /></td></tr>
 <tr class="separator:ga347d0e1228e8174563c6bcf48de18401"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga80e1660ca602aff9f95ccbb4822fad9c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga80e1660ca602aff9f95ccbb4822fad9c"></a>
+#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__macro.html#ga80e1660ca602aff9f95ccbb4822fad9c">WICONNECT_ENABLE_DEBUGGING</a></td></tr>
+<tr class="memdesc:ga80e1660ca602aff9f95ccbb4822fad9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">If defined, enables low-level debugging. <br /></td></tr>
+<tr class="separator:ga80e1660ca602aff9f95ccbb4822fad9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:gaa1dbeca66111f3a22d0ee6b122d69270"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa1dbeca66111f3a22d0ee6b122d69270"></a>
 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>&#160;&#160;&#160;NC</td></tr>
 <tr class="memdesc:gaa1dbeca66111f3a22d0ee6b122d69270"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default value for a pin, Not connected. <br /></td></tr>
--- a/doc/html/group__api__core__macro.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__core__macro.js	Mon Oct 27 13:42:26 2014 -0700
@@ -15,9 +15,12 @@
     [ "WICONNECT_DEFAULT_MALLOC", "group__api__core__macro.html#gaaff0108d684631b2bb88e1f6c255e9ac", null ],
     [ "WICONNECT_DEFAULT_NONBLOCKING", "group__api__core__macro.html#ga347d0e1228e8174563c6bcf48de18401", null ],
     [ "WICONNECT_DEFAULT_TIMEOUT", "group__api__core__macro.html#ga7741b7a0fbbf9b7e47898b7d30e5e321", null ],
+    [ "WICONNECT_ENABLE_DEBUGGING", "group__api__core__macro.html#ga80e1660ca602aff9f95ccbb4822fad9c", null ],
     [ "WICONNECT_ENABLE_MALLOC", "group__api__core__macro.html#gae9cf1249b46e784aa05250e2bcbe2e02", null ],
     [ "WICONNECT_FAILED", "group__api__core__macro.html#gab27aa3ef76302b5221766abfd4f47e64", null ],
     [ "WICONNECT_FIRMWARE_UPDATE_TIMEOUT", "group__api__core__macro.html#ga6d336ec791dcd22238d2fc4995fb9431", null ],
+    [ "WICONNECT_GPIO_IRQ_ENABLED", "group__api__core__macro.html#ga593c6629b59a853057cd6a5547ed3f4f", null ],
+    [ "WICONNECT_IS_PROCESSING", "group__api__core__macro.html#ga436d782bd2cdce3696eadda1083416af", null ],
     [ "WICONNECT_MAX_CMD_SIZE", "group__api__core__macro.html#ga2aa16118029ab13ab41514cb8eb93ba7", null ],
     [ "WICONNECT_MAX_FILENAME_SIZE", "group__api__core__macro.html#ga8bc3b8d2e7e7c9d10b23e0a15cd4507a", null ],
     [ "WICONNECT_MAX_HOST_SIZE", "group__api__core__macro.html#ga7c5dcedd35669199b46bb292b3d3b525", null ],
--- a/doc/html/group__api__core__send__command.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__core__send__command.html	Mon Oct 27 13:42:26 2014 -0700
@@ -109,24 +109,24 @@
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
 Functions</h2></td></tr>
-<tr class="memitem:ga3a2637e5ce300a03c448edf1eff13c2c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c">wiconnect::Wiconnect::sendCommand</a> (const <a class="el" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback, char *responseBuffer, int responseBufferLen, int timeoutMs, const <a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, void *user, const char *cmd, va_list vaList)</td></tr>
-<tr class="memdesc:ga3a2637e5ce300a03c448edf1eff13c2c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="#ga3a2637e5ce300a03c448edf1eff13c2c">More...</a><br /></td></tr>
-<tr class="separator:ga3a2637e5ce300a03c448edf1eff13c2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gad23730a1f2f7714ef962f24a0f99f0f7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gad23730a1f2f7714ef962f24a0f99f0f7">wiconnect::Wiconnect::sendCommand</a> (char *responseBuffer, int responseBufferLen, int timeoutMs, const <a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, void *user, const char *cmd, va_list vaList)</td></tr>
-<tr class="memdesc:gad23730a1f2f7714ef962f24a0f99f0f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="#gad23730a1f2f7714ef962f24a0f99f0f7">More...</a><br /></td></tr>
-<tr class="separator:gad23730a1f2f7714ef962f24a0f99f0f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga0e0591e923da9ab814bb3dd3afbda197"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#ga0e0591e923da9ab814bb3dd3afbda197">wiconnect::Wiconnect::sendCommand</a> (char *responseBuffer, int responseBufferLen, int timeoutMs, const <a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, void *user, const char *cmd,...)</td></tr>
-<tr class="memdesc:ga0e0591e923da9ab814bb3dd3afbda197"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="#ga0e0591e923da9ab814bb3dd3afbda197">More...</a><br /></td></tr>
-<tr class="separator:ga0e0591e923da9ab814bb3dd3afbda197"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gadd347dd3952ebab2fa27561c12858f65"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gadd347dd3952ebab2fa27561c12858f65">wiconnect::Wiconnect::sendCommand</a> (int timeoutMs, const <a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, void *user, const char *cmd,...)</td></tr>
-<tr class="memdesc:gadd347dd3952ebab2fa27561c12858f65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="#gadd347dd3952ebab2fa27561c12858f65">More...</a><br /></td></tr>
-<tr class="separator:gadd347dd3952ebab2fa27561c12858f65"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadd23f2f86fcc0a438dad798ab3353505"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505">wiconnect::Wiconnect::sendCommand</a> (const <a class="el" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback, char *responseBuffer, int responseBufferLen, <a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, const <a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, void *user, const char *cmd, va_list vaList)</td></tr>
+<tr class="memdesc:gadd23f2f86fcc0a438dad798ab3353505"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="#gadd23f2f86fcc0a438dad798ab3353505">More...</a><br /></td></tr>
+<tr class="separator:gadd23f2f86fcc0a438dad798ab3353505"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa36b07b28a166fe51f9dc92bcab5d3d8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gaa36b07b28a166fe51f9dc92bcab5d3d8">wiconnect::Wiconnect::sendCommand</a> (char *responseBuffer, int responseBufferLen, <a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, const <a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, void *user, const char *cmd, va_list vaList)</td></tr>
+<tr class="memdesc:gaa36b07b28a166fe51f9dc92bcab5d3d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="#gaa36b07b28a166fe51f9dc92bcab5d3d8">More...</a><br /></td></tr>
+<tr class="separator:gaa36b07b28a166fe51f9dc92bcab5d3d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabe0e5c170b9c6ec7d6dc96a3639c721e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gabe0e5c170b9c6ec7d6dc96a3639c721e">wiconnect::Wiconnect::sendCommand</a> (char *responseBuffer, int responseBufferLen, <a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, const <a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, void *user, const char *cmd,...)</td></tr>
+<tr class="memdesc:gabe0e5c170b9c6ec7d6dc96a3639c721e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="#gabe0e5c170b9c6ec7d6dc96a3639c721e">More...</a><br /></td></tr>
+<tr class="separator:gabe0e5c170b9c6ec7d6dc96a3639c721e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8c6d84b338847fbdd41f61c5375117e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#ga8c6d84b338847fbdd41f61c5375117e9">wiconnect::Wiconnect::sendCommand</a> (<a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, const <a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, void *user, const char *cmd,...)</td></tr>
+<tr class="memdesc:ga8c6d84b338847fbdd41f61c5375117e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="#ga8c6d84b338847fbdd41f61c5375117e9">More...</a><br /></td></tr>
+<tr class="separator:ga8c6d84b338847fbdd41f61c5375117e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:gaca2f1b17d2cc98cbc6dac219ffcf9e84"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gaca2f1b17d2cc98cbc6dac219ffcf9e84">wiconnect::Wiconnect::sendCommand</a> (const <a class="el" href="classwiconnect_1_1_reader_func.html">ReaderFunc</a> &amp;reader, void *user, const char *cmd,...)</td></tr>
 <tr class="memdesc:gaca2f1b17d2cc98cbc6dac219ffcf9e84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="#gaca2f1b17d2cc98cbc6dac219ffcf9e84">More...</a><br /></td></tr>
 <tr class="separator:gaca2f1b17d2cc98cbc6dac219ffcf9e84"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga3655750f929f8f4e966278193d0385a9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#ga3655750f929f8f4e966278193d0385a9">wiconnect::Wiconnect::sendCommand</a> (char *responseBuffer, int responseBufferLen, int timeoutMs, const char *cmd,...)</td></tr>
-<tr class="memdesc:ga3655750f929f8f4e966278193d0385a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="#ga3655750f929f8f4e966278193d0385a9">More...</a><br /></td></tr>
-<tr class="separator:ga3655750f929f8f4e966278193d0385a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5f437c3518de14706c6fcff32a0b0f97"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#ga5f437c3518de14706c6fcff32a0b0f97">wiconnect::Wiconnect::sendCommand</a> (char *responseBuffer, int responseBufferLen, <a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, const char *cmd,...)</td></tr>
+<tr class="memdesc:ga5f437c3518de14706c6fcff32a0b0f97"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="#ga5f437c3518de14706c6fcff32a0b0f97">More...</a><br /></td></tr>
+<tr class="separator:ga5f437c3518de14706c6fcff32a0b0f97"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:gaf93db1b2730bb586287f7756f3cdf092"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gaf93db1b2730bb586287f7756f3cdf092">wiconnect::Wiconnect::sendCommand</a> (const <a class="el" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback, char *responseBuffer, int responseBufferLen, const char *cmd,...)</td></tr>
 <tr class="memdesc:gaf93db1b2730bb586287f7756f3cdf092"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="#gaf93db1b2730bb586287f7756f3cdf092">More...</a><br /></td></tr>
 <tr class="separator:gaf93db1b2730bb586287f7756f3cdf092"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -139,11 +139,11 @@
 <tr class="memitem:gadad1c5b3df07a24ab09492edf93dd1f4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gadad1c5b3df07a24ab09492edf93dd1f4">wiconnect::Wiconnect::sendCommand</a> (const char *cmd,...)</td></tr>
 <tr class="memdesc:gadad1c5b3df07a24ab09492edf93dd1f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="#gadad1c5b3df07a24ab09492edf93dd1f4">More...</a><br /></td></tr>
 <tr class="separator:gadad1c5b3df07a24ab09492edf93dd1f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gaa6d744ec08ba6c9abf451bdc2b0beb00"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gaa6d744ec08ba6c9abf451bdc2b0beb00">wiconnect::Wiconnect::sendCommand</a> (const <a class="el" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback, int timeoutMs, const char *cmd,...)</td></tr>
-<tr class="separator:gaa6d744ec08ba6c9abf451bdc2b0beb00"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gace479d34633141ff1eefa0e98c4d2351"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gace479d34633141ff1eefa0e98c4d2351">wiconnect::Wiconnect::sendCommand</a> (int timeoutMs, const char *cmd,...)</td></tr>
-<tr class="memdesc:gace479d34633141ff1eefa0e98c4d2351"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="#gace479d34633141ff1eefa0e98c4d2351">More...</a><br /></td></tr>
-<tr class="separator:gace479d34633141ff1eefa0e98c4d2351"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9a89a0dd00f8eedb5e3eb8d4a4ed58df"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#ga9a89a0dd00f8eedb5e3eb8d4a4ed58df">wiconnect::Wiconnect::sendCommand</a> (const <a class="el" href="classwiconnect_1_1_callback.html">Callback</a> &amp;completeCallback, <a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, const char *cmd,...)</td></tr>
+<tr class="separator:ga9a89a0dd00f8eedb5e3eb8d4a4ed58df"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5666d99d72494995db0a812fcc9bbd09"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#ga5666d99d72494995db0a812fcc9bbd09">wiconnect::Wiconnect::sendCommand</a> (<a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs, const char *cmd,...)</td></tr>
+<tr class="memdesc:ga5666d99d72494995db0a812fcc9bbd09"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send command to WiConnect WiFi module.  <a href="#ga5666d99d72494995db0a812fcc9bbd09">More...</a><br /></td></tr>
+<tr class="separator:ga5666d99d72494995db0a812fcc9bbd09"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga9d0ade0ec2866d7e0df5391bc69f5698"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#ga9d0ade0ec2866d7e0df5391bc69f5698">wiconnect::Wiconnect::sendCommand</a> (const char *cmd, va_list vaList)</td></tr>
 <tr class="separator:ga9d0ade0ec2866d7e0df5391bc69f5698"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:gaf48c1ec0b92af2619ab846baaaa471cd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__send__command.html#gaf48c1ec0b92af2619ab846baaaa471cd">wiconnect::Wiconnect::checkCurrentCommand</a> ()</td></tr>
@@ -176,7 +176,7 @@
 
 </div>
 </div>
-<a class="anchor" id="ga3a2637e5ce300a03c448edf1eff13c2c"></a>
+<a class="anchor" id="gadd23f2f86fcc0a438dad798ab3353505"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -201,7 +201,7 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">int&#160;</td>
+          <td class="paramtype"><a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a>&#160;</td>
           <td class="paramname"><em>timeoutMs</em>, </td>
         </tr>
         <tr>
@@ -255,7 +255,7 @@
 
 </div>
 </div>
-<a class="anchor" id="gad23730a1f2f7714ef962f24a0f99f0f7"></a>
+<a class="anchor" id="gaa36b07b28a166fe51f9dc92bcab5d3d8"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -274,7 +274,7 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">int&#160;</td>
+          <td class="paramtype"><a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a>&#160;</td>
           <td class="paramname"><em>timeoutMs</em>, </td>
         </tr>
         <tr>
@@ -327,7 +327,7 @@
 
 </div>
 </div>
-<a class="anchor" id="ga0e0591e923da9ab814bb3dd3afbda197"></a>
+<a class="anchor" id="gabe0e5c170b9c6ec7d6dc96a3639c721e"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -346,7 +346,7 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">int&#160;</td>
+          <td class="paramtype"><a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a>&#160;</td>
           <td class="paramname"><em>timeoutMs</em>, </td>
         </tr>
         <tr>
@@ -400,14 +400,14 @@
 
 </div>
 </div>
-<a class="anchor" id="gadd347dd3952ebab2fa27561c12858f65"></a>
+<a class="anchor" id="ga8c6d84b338847fbdd41f61c5375117e9"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
           <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::Wiconnect::sendCommand </td>
           <td>(</td>
-          <td class="paramtype">int&#160;</td>
+          <td class="paramtype"><a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a>&#160;</td>
           <td class="paramname"><em>timeoutMs</em>, </td>
         </tr>
         <tr>
@@ -499,7 +499,7 @@
 <p>Send command to WiConnect WiFi module. </p>
 <ul>
 <li>This method uses the library internal buffer and</li>
-<li>default timeout. See <a class="el" href="group__api__core__settings.html#gaaaf8be221699870053ad98911b066a32" title="Sets the default maximum time an API method may execute before terminating and return a timeout error...">setCommandDefaultTimeout()</a></li>
+<li>default timeout. See <a class="el" href="group__api__core__settings.html#gacae50138f9388a66496408f9c2bf6a6f" title="Sets the default maximum time an API method may execute before terminating and return a timeout error...">setCommandDefaultTimeout()</a></li>
 </ul>
 <dl class="section note"><dt>Note</dt><dd>Refer to <a class="el" href="index.html#send_command_desc">Sending Commands To WiFi Module</a> for more info </dd>
 <dd>
@@ -516,7 +516,7 @@
 
 </div>
 </div>
-<a class="anchor" id="ga3655750f929f8f4e966278193d0385a9"></a>
+<a class="anchor" id="ga5f437c3518de14706c6fcff32a0b0f97"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -535,7 +535,7 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">int&#160;</td>
+          <td class="paramtype"><a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a>&#160;</td>
           <td class="paramname"><em>timeoutMs</em>, </td>
         </tr>
         <tr>
@@ -719,7 +719,7 @@
 <p>Send command to WiConnect WiFi module. </p>
 <ul>
 <li>This method uses the library internal buffer and</li>
-<li>default timeout. See <a class="el" href="group__api__core__settings.html#gaaaf8be221699870053ad98911b066a32" title="Sets the default maximum time an API method may execute before terminating and return a timeout error...">setCommandDefaultTimeout()</a></li>
+<li>default timeout. See <a class="el" href="group__api__core__settings.html#gacae50138f9388a66496408f9c2bf6a6f" title="Sets the default maximum time an API method may execute before terminating and return a timeout error...">setCommandDefaultTimeout()</a></li>
 </ul>
 <dl class="section note"><dt>Note</dt><dd>Refer to <a class="el" href="index.html#send_command_desc">Sending Commands To WiFi Module</a> for more info </dd>
 <dd>
@@ -762,7 +762,7 @@
 <p>Send command to WiConnect WiFi module. </p>
 <ul>
 <li>This method uses the library internal buffer and</li>
-<li>default timeout. See <a class="el" href="group__api__core__settings.html#gaaaf8be221699870053ad98911b066a32" title="Sets the default maximum time an API method may execute before terminating and return a timeout error...">setCommandDefaultTimeout()</a></li>
+<li>default timeout. See <a class="el" href="group__api__core__settings.html#gacae50138f9388a66496408f9c2bf6a6f" title="Sets the default maximum time an API method may execute before terminating and return a timeout error...">setCommandDefaultTimeout()</a></li>
 </ul>
 <dl class="section note"><dt>Note</dt><dd>Refer to <a class="el" href="index.html#send_command_desc">Sending Commands To WiFi Module</a> for more info </dd>
 <dd>
@@ -777,7 +777,7 @@
 
 </div>
 </div>
-<a class="anchor" id="gaa6d744ec08ba6c9abf451bdc2b0beb00"></a>
+<a class="anchor" id="ga9a89a0dd00f8eedb5e3eb8d4a4ed58df"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -790,7 +790,7 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">int&#160;</td>
+          <td class="paramtype"><a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a>&#160;</td>
           <td class="paramname"><em>timeoutMs</em>, </td>
         </tr>
         <tr>
@@ -828,14 +828,14 @@
 
 </div>
 </div>
-<a class="anchor" id="gace479d34633141ff1eefa0e98c4d2351"></a>
+<a class="anchor" id="ga5666d99d72494995db0a812fcc9bbd09"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
           <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::Wiconnect::sendCommand </td>
           <td>(</td>
-          <td class="paramtype">int&#160;</td>
+          <td class="paramtype"><a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a>&#160;</td>
           <td class="paramname"><em>timeoutMs</em>, </td>
         </tr>
         <tr>
@@ -899,7 +899,7 @@
 </div><div class="memdoc">
 <ul>
 <li>This method uses the library internal buffer and</li>
-<li>default timeout. See <a class="el" href="group__api__core__settings.html#gaaaf8be221699870053ad98911b066a32" title="Sets the default maximum time an API method may execute before terminating and return a timeout error...">setCommandDefaultTimeout()</a></li>
+<li>default timeout. See <a class="el" href="group__api__core__settings.html#gacae50138f9388a66496408f9c2bf6a6f" title="Sets the default maximum time an API method may execute before terminating and return a timeout error...">setCommandDefaultTimeout()</a></li>
 </ul>
 <dl class="section note"><dt>Note</dt><dd>Refer to <a class="el" href="index.html#send_command_desc">Sending Commands To WiFi Module</a> for more info</dd></dl>
 <dl class="params"><dt>Parameters</dt><dd>
--- a/doc/html/group__api__core__send__command.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__core__send__command.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,18 +1,18 @@
 var group__api__core__send__command =
 [
     [ "checkCurrentCommand", "group__api__core__send__command.html#gaf48c1ec0b92af2619ab846baaaa471cd", null ],
-    [ "sendCommand", "group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c", null ],
-    [ "sendCommand", "group__api__core__send__command.html#gad23730a1f2f7714ef962f24a0f99f0f7", null ],
-    [ "sendCommand", "group__api__core__send__command.html#ga0e0591e923da9ab814bb3dd3afbda197", null ],
-    [ "sendCommand", "group__api__core__send__command.html#gadd347dd3952ebab2fa27561c12858f65", null ],
+    [ "sendCommand", "group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505", null ],
+    [ "sendCommand", "group__api__core__send__command.html#gaa36b07b28a166fe51f9dc92bcab5d3d8", null ],
+    [ "sendCommand", "group__api__core__send__command.html#gabe0e5c170b9c6ec7d6dc96a3639c721e", null ],
+    [ "sendCommand", "group__api__core__send__command.html#ga8c6d84b338847fbdd41f61c5375117e9", null ],
     [ "sendCommand", "group__api__core__send__command.html#gaca2f1b17d2cc98cbc6dac219ffcf9e84", null ],
-    [ "sendCommand", "group__api__core__send__command.html#ga3655750f929f8f4e966278193d0385a9", null ],
+    [ "sendCommand", "group__api__core__send__command.html#ga5f437c3518de14706c6fcff32a0b0f97", null ],
     [ "sendCommand", "group__api__core__send__command.html#gaf93db1b2730bb586287f7756f3cdf092", null ],
     [ "sendCommand", "group__api__core__send__command.html#gaac75ca154bd5d5a21c714dd828a92363", null ],
     [ "sendCommand", "group__api__core__send__command.html#ga7eb983a196daa5de20a73fd234dc6f64", null ],
     [ "sendCommand", "group__api__core__send__command.html#gadad1c5b3df07a24ab09492edf93dd1f4", null ],
-    [ "sendCommand", "group__api__core__send__command.html#gaa6d744ec08ba6c9abf451bdc2b0beb00", null ],
-    [ "sendCommand", "group__api__core__send__command.html#gace479d34633141ff1eefa0e98c4d2351", null ],
+    [ "sendCommand", "group__api__core__send__command.html#ga9a89a0dd00f8eedb5e3eb8d4a4ed58df", null ],
+    [ "sendCommand", "group__api__core__send__command.html#ga5666d99d72494995db0a812fcc9bbd09", null ],
     [ "sendCommand", "group__api__core__send__command.html#ga9d0ade0ec2866d7e0df5391bc69f5698", null ],
     [ "stopCurrentCommand", "group__api__core__send__command.html#ga4a9bd29de1d5c496fbcc28ecfa51e7c0", null ]
 ];
\ No newline at end of file
--- a/doc/html/group__api__core__settings.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__core__settings.html	Mon Oct 27 13:42:26 2014 -0700
@@ -124,12 +124,19 @@
 <tr class="memitem:ga670947ef630233f7866f885500548233"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__settings.html#ga670947ef630233f7866f885500548233">wiconnect::Wiconnect::getSetting</a> (const char *settingStr, char *valueBuffer, uint16_t valueBufferLen)</td></tr>
 <tr class="memdesc:ga670947ef630233f7866f885500548233"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a module setting.  <a href="#ga670947ef630233f7866f885500548233">More...</a><br /></td></tr>
 <tr class="separator:ga670947ef630233f7866f885500548233"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gaaaf8be221699870053ad98911b066a32"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__settings.html#gaaaf8be221699870053ad98911b066a32">wiconnect::Wiconnect::setCommandDefaultTimeout</a> (int timeoutMs)</td></tr>
-<tr class="memdesc:gaaaf8be221699870053ad98911b066a32"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the default maximum time an API method may execute before terminating and return a timeout error code.  <a href="#gaaaf8be221699870053ad98911b066a32">More...</a><br /></td></tr>
-<tr class="separator:gaaaf8be221699870053ad98911b066a32"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gad5d31980a7b1e143f00b0117468c1a7e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__settings.html#gad5d31980a7b1e143f00b0117468c1a7e">wiconnect::Wiconnect::getCommandDefaultTimeout</a> ()</td></tr>
-<tr class="memdesc:gad5d31980a7b1e143f00b0117468c1a7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current default maximum API execution time.  <a href="#gad5d31980a7b1e143f00b0117468c1a7e">More...</a><br /></td></tr>
-<tr class="separator:gad5d31980a7b1e143f00b0117468c1a7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga851795595a422a14249b7ea9f0038c4c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__settings.html#ga851795595a422a14249b7ea9f0038c4c">wiconnect::Wiconnect::setBlockingEnabled</a> (bool blockingEnabled)</td></tr>
+<tr class="memdesc:ga851795595a422a14249b7ea9f0038c4c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets if API calls are blocking or non-blocking.  <a href="#ga851795595a422a14249b7ea9f0038c4c">More...</a><br /></td></tr>
+<tr class="separator:ga851795595a422a14249b7ea9f0038c4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf6115968c49c128717cacd2f06b883ad"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf6115968c49c128717cacd2f06b883ad"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__settings.html#gaf6115968c49c128717cacd2f06b883ad">wiconnect::Wiconnect::getBlockingEnabled</a> (void)</td></tr>
+<tr class="memdesc:gaf6115968c49c128717cacd2f06b883ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets if API calls are blocking or non-blocking. <br /></td></tr>
+<tr class="separator:gaf6115968c49c128717cacd2f06b883ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacae50138f9388a66496408f9c2bf6a6f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__settings.html#gacae50138f9388a66496408f9c2bf6a6f">wiconnect::Wiconnect::setCommandDefaultTimeout</a> (<a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> timeoutMs)</td></tr>
+<tr class="memdesc:gacae50138f9388a66496408f9c2bf6a6f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the default maximum time an API method may execute before terminating and return a timeout error code.  <a href="#gacae50138f9388a66496408f9c2bf6a6f">More...</a><br /></td></tr>
+<tr class="separator:gacae50138f9388a66496408f9c2bf6a6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad8d98b8d2610f4ea564bede27e87857e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__settings.html#gad8d98b8d2610f4ea564bede27e87857e">wiconnect::Wiconnect::getCommandDefaultTimeout</a> ()</td></tr>
+<tr class="memdesc:gad8d98b8d2610f4ea564bede27e87857e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current default maximum API execution time.  <a href="#gad8d98b8d2610f4ea564bede27e87857e">More...</a><br /></td></tr>
+<tr class="separator:gad8d98b8d2610f4ea564bede27e87857e"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga180b043ec83c53b5bf6b9ef2b187d08d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__core__settings.html#ga180b043ec83c53b5bf6b9ef2b187d08d">wiconnect::Wiconnect::setPinToGpioMapper</a> (PinToGpioMapper mapper)</td></tr>
 <tr class="memdesc:ga180b043ec83c53b5bf6b9ef2b187d08d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a mapping function used to convert from a host Pin to WiConnect WiFi module GPIO.  <a href="#ga180b043ec83c53b5bf6b9ef2b187d08d">More...</a><br /></td></tr>
 <tr class="separator:ga180b043ec83c53b5bf6b9ef2b187d08d"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -143,12 +150,12 @@
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <p>API getters/setters for core library settings. </p>
 <h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="gad5d31980a7b1e143f00b0117468c1a7e"></a>
+<a class="anchor" id="gad8d98b8d2610f4ea564bede27e87857e"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int wiconnect::Wiconnect::getCommandDefaultTimeout </td>
+          <td class="memname"><a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a> wiconnect::Wiconnect::getCommandDefaultTimeout </td>
           <td>(</td>
           <td class="paramname"></td><td>)</td>
           <td></td>
@@ -304,14 +311,38 @@
 
 </div>
 </div>
-<a class="anchor" id="gaaaf8be221699870053ad98911b066a32"></a>
+<a class="anchor" id="ga851795595a422a14249b7ea9f0038c4c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void wiconnect::Wiconnect::setBlockingEnabled </td>
+          <td>(</td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>blockingEnabled</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Sets if API calls are blocking or non-blocking. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">blockingEnabled</td><td>The new blocking value </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gacae50138f9388a66496408f9c2bf6a6f"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
           <td class="memname">void wiconnect::Wiconnect::setCommandDefaultTimeout </td>
           <td>(</td>
-          <td class="paramtype">int&#160;</td>
+          <td class="paramtype"><a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a>&#160;</td>
           <td class="paramname"><em>timeoutMs</em></td><td>)</td>
           <td></td>
         </tr>
@@ -319,7 +350,7 @@
 </div><div class="memdoc">
 
 <p>Sets the default maximum time an API method may execute before terminating and return a timeout error code. </p>
-<dl class="section note"><dt>Note</dt><dd>All API methods (execpt some <a class="el" href="group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c" title="Send command to WiConnect WiFi module. ">sendCommand()</a>) use this default value.</dd></dl>
+<dl class="section note"><dt>Note</dt><dd>All API methods (execpt some <a class="el" href="group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505" title="Send command to WiConnect WiFi module. ">sendCommand()</a>) use this default value.</dd></dl>
 <dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
     <tr><td class="paramdir">[in]</td><td class="paramname">timeoutMs</td><td>Default command timeout in milliseconds </td></tr>
--- a/doc/html/group__api__core__settings.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__core__settings.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,11 +1,13 @@
 var group__api__core__settings =
 [
-    [ "getCommandDefaultTimeout", "group__api__core__settings.html#gad5d31980a7b1e143f00b0117468c1a7e", null ],
+    [ "getBlockingEnabled", "group__api__core__settings.html#gaf6115968c49c128717cacd2f06b883ad", null ],
+    [ "getCommandDefaultTimeout", "group__api__core__settings.html#gad8d98b8d2610f4ea564bede27e87857e", null ],
     [ "getSetting", "group__api__core__settings.html#ga16d5022d1fbd784fe0fd90a56911c5bc", null ],
     [ "getSetting", "group__api__core__settings.html#ga9dfd70aac8f0770f300ccf3a126ba296", null ],
     [ "getSetting", "group__api__core__settings.html#ga670947ef630233f7866f885500548233", null ],
     [ "setAssertLogger", "group__api__core__settings.html#ga273f67fede26be4a3d5d909c5cf8c7e0", null ],
-    [ "setCommandDefaultTimeout", "group__api__core__settings.html#gaaaf8be221699870053ad98911b066a32", null ],
+    [ "setBlockingEnabled", "group__api__core__settings.html#ga851795595a422a14249b7ea9f0038c4c", null ],
+    [ "setCommandDefaultTimeout", "group__api__core__settings.html#gacae50138f9388a66496408f9c2bf6a6f", null ],
     [ "setDebugLogger", "group__api__core__settings.html#ga75fb083451ee530a1c19e6a4c1be185e", null ],
     [ "setPinToGpioMapper", "group__api__core__settings.html#ga180b043ec83c53b5bf6b9ef2b187d08d", null ],
     [ "setSetting", "group__api__core__settings.html#gace51a2841415a53f54fcce336182f0ec", null ],
--- a/doc/html/group__api__core__types.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__core__types.html	Mon Oct 27 13:42:26 2014 -0700
@@ -272,7 +272,7 @@
 </table>
 <dl><dt><b>Examples: </b></dt><dd><a class="el" href="tcp_server_2example_8cpp-example.html#a0">tcp_server/example.cpp</a>, and <a class="el" href="web_setup_2example_8cpp-example.html#a0">web_setup/example.cpp</a>.</dd>
 </dl>
-<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00159">159</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
+<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00166">166</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
 
 </div>
 </div>
--- a/doc/html/group__api__core__types.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__core__types.js	Mon Oct 27 13:42:26 2014 -0700
@@ -6,7 +6,8 @@
       [ "checkCurrentCommand", "group__api__core__send__command.html#gaf48c1ec0b92af2619ab846baaaa471cd", null ],
       [ "deinit", "group__api__core__misc.html#ga9d6c981a54c6ab964b469e4f247142d6", null ],
       [ "flush", "group__api__core__misc.html#ga96ac50d85d8ab376755d7d5325de1713", null ],
-      [ "getCommandDefaultTimeout", "group__api__core__settings.html#gad5d31980a7b1e143f00b0117468c1a7e", null ],
+      [ "getBlockingEnabled", "group__api__core__settings.html#gaf6115968c49c128717cacd2f06b883ad", null ],
+      [ "getCommandDefaultTimeout", "group__api__core__settings.html#gad8d98b8d2610f4ea564bede27e87857e", null ],
       [ "getLastCommandResponseCodeStr", "group__api__core__misc.html#gad8069679fabb52d44647d27703f1a09a", null ],
       [ "getLastCommandResponseLength", "group__api__core__misc.html#ga600215de23210071c42996d04390071e", null ],
       [ "getResponseBuffer", "group__api__core__misc.html#ga27b5d6b8207e4ef0f73875606d628da8", null ],
@@ -19,21 +20,22 @@
       [ "reset", "group__api__core__misc.html#gabec1504eb7f486085dad82c4a94310e3", null ],
       [ "responseToInt32", "group__api__core__misc.html#gada79343aece515e00f9be4045d3858a0", null ],
       [ "responseToUint32", "group__api__core__misc.html#gac40b2964149e60245ff3cac6adbcd565", null ],
-      [ "sendCommand", "group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c", null ],
-      [ "sendCommand", "group__api__core__send__command.html#gad23730a1f2f7714ef962f24a0f99f0f7", null ],
-      [ "sendCommand", "group__api__core__send__command.html#ga0e0591e923da9ab814bb3dd3afbda197", null ],
-      [ "sendCommand", "group__api__core__send__command.html#gadd347dd3952ebab2fa27561c12858f65", null ],
+      [ "sendCommand", "group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505", null ],
+      [ "sendCommand", "group__api__core__send__command.html#gaa36b07b28a166fe51f9dc92bcab5d3d8", null ],
+      [ "sendCommand", "group__api__core__send__command.html#gabe0e5c170b9c6ec7d6dc96a3639c721e", null ],
+      [ "sendCommand", "group__api__core__send__command.html#ga8c6d84b338847fbdd41f61c5375117e9", null ],
       [ "sendCommand", "group__api__core__send__command.html#gaca2f1b17d2cc98cbc6dac219ffcf9e84", null ],
-      [ "sendCommand", "group__api__core__send__command.html#ga3655750f929f8f4e966278193d0385a9", null ],
+      [ "sendCommand", "group__api__core__send__command.html#ga5f437c3518de14706c6fcff32a0b0f97", null ],
       [ "sendCommand", "group__api__core__send__command.html#gaf93db1b2730bb586287f7756f3cdf092", null ],
       [ "sendCommand", "group__api__core__send__command.html#gaac75ca154bd5d5a21c714dd828a92363", null ],
       [ "sendCommand", "group__api__core__send__command.html#ga7eb983a196daa5de20a73fd234dc6f64", null ],
       [ "sendCommand", "group__api__core__send__command.html#gadad1c5b3df07a24ab09492edf93dd1f4", null ],
-      [ "sendCommand", "group__api__core__send__command.html#gaa6d744ec08ba6c9abf451bdc2b0beb00", null ],
-      [ "sendCommand", "group__api__core__send__command.html#gace479d34633141ff1eefa0e98c4d2351", null ],
+      [ "sendCommand", "group__api__core__send__command.html#ga9a89a0dd00f8eedb5e3eb8d4a4ed58df", null ],
+      [ "sendCommand", "group__api__core__send__command.html#ga5666d99d72494995db0a812fcc9bbd09", null ],
       [ "sendCommand", "group__api__core__send__command.html#ga9d0ade0ec2866d7e0df5391bc69f5698", null ],
       [ "setAssertLogger", "group__api__core__settings.html#ga273f67fede26be4a3d5d909c5cf8c7e0", null ],
-      [ "setCommandDefaultTimeout", "group__api__core__settings.html#gaaaf8be221699870053ad98911b066a32", null ],
+      [ "setBlockingEnabled", "group__api__core__settings.html#ga851795595a422a14249b7ea9f0038c4c", null ],
+      [ "setCommandDefaultTimeout", "group__api__core__settings.html#gacae50138f9388a66496408f9c2bf6a6f", null ],
       [ "setDebugLogger", "group__api__core__settings.html#ga75fb083451ee530a1c19e6a4c1be185e", null ],
       [ "setPinToGpioMapper", "group__api__core__settings.html#ga180b043ec83c53b5bf6b9ef2b187d08d", null ],
       [ "setSetting", "group__api__core__settings.html#gace51a2841415a53f54fcce336182f0ec", null ],
--- a/doc/html/group__api__file.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__file.html	Mon Oct 27 13:42:26 2014 -0700
@@ -104,16 +104,16 @@
 </div><!--header-->
 <div class="contents">
 
-<p>This contains all file methods.  
+<p>This contains all file related operations.  
 <a href="#details">More...</a></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
 Modules</h2></td></tr>
 <tr class="memitem:group__api__file__methods"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__file__methods.html">Methods</a></td></tr>
-<tr class="memdesc:group__api__file__methods"><td class="mdescLeft">&#160;</td><td class="mdescRight">File Types. <br /></td></tr>
+<tr class="memdesc:group__api__file__methods"><td class="mdescLeft">&#160;</td><td class="mdescRight">File methods. <br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:group__api__file__types"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__file__types.html">Types</a></td></tr>
-<tr class="memdesc:group__api__file__types"><td class="mdescLeft">&#160;</td><td class="mdescRight">File Types. <br /></td></tr>
+<tr class="memdesc:group__api__file__types"><td class="mdescLeft">&#160;</td><td class="mdescRight">File types. <br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:group__api__file__macro"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__file__macro.html">Macros</a></td></tr>
 <tr class="memdesc:group__api__file__macro"><td class="mdescLeft">&#160;</td><td class="mdescRight">API specific macros. <br /></td></tr>
@@ -123,7 +123,7 @@
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<p>This contains all file methods. </p>
+<p>This contains all file related operations. </p>
 </div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/group__api__file__methods.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__file__methods.html	Mon Oct 27 13:42:26 2014 -0700
@@ -104,7 +104,7 @@
 </div><!--header-->
 <div class="contents">
 
-<p>File Types.  
+<p>File methods.  
 <a href="#details">More...</a></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
@@ -126,7 +126,7 @@
 <tr class="separator:ga10536639c61213c037883dade021838f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<p>File Types. </p>
+<p>File methods. </p>
 <h2 class="groupheader">Function Documentation</h2>
 <a class="anchor" id="ga16fb09105975644879eb09581ce486e5"></a>
 <div class="memitem">
--- a/doc/html/group__api__file__types.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__file__types.html	Mon Oct 27 13:42:26 2014 -0700
@@ -105,7 +105,7 @@
 </div><!--header-->
 <div class="contents">
 
-<p>File Types.  
+<p>File types.  
 <a href="#details">More...</a></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
@@ -174,7 +174,7 @@
 <tr class="separator:ga9919a4237eea2b0d1f27c16d64e62c63"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<p>File Types. </p>
+<p>File types. </p>
 <h2 class="groupheader">Enumeration Type Documentation</h2>
 <a class="anchor" id="gafbe48908f5c190c3b0f272d3016e609e"></a>
 <div class="memitem">
@@ -217,7 +217,7 @@
 </td></tr>
 </table>
 
-<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00364">364</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
+<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00380">380</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
 
 </div>
 </div>
@@ -271,7 +271,7 @@
 </td></tr>
 </table>
 
-<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00383">383</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
+<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00399">399</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
 
 </div>
 </div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/group__api__ghm.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('group__api__ghm.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#groups">Modules</a>  </div>
+  <div class="headertitle">
+<div class="title">goHACK.me</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This contains all goHACK.me related operations.  
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
+Modules</h2></td></tr>
+<tr class="memitem:group__api__ghm__activate"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__activate.html">Activation</a></td></tr>
+<tr class="memdesc:group__api__ghm__activate"><td class="mdescLeft">&#160;</td><td class="mdescRight">Methods for activating/deactivating the module with <a href="http://goHACK.me">http://goHACK.me</a>. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:group__api__ghm__com"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html">Read/Write</a></td></tr>
+<tr class="memdesc:group__api__ghm__com"><td class="mdescLeft">&#160;</td><td class="mdescRight">Methods for reading &amp; writing data from/to <a href="http://goHACK.me">http://goHACK.me</a>. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:group__api__ghm__msg"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html">Message</a></td></tr>
+<tr class="memdesc:group__api__ghm__msg"><td class="mdescLeft">&#160;</td><td class="mdescRight">Methods for getting, posting, listing, deleting messages wtih <a href="http://goHACK.me">http://goHACK.me</a>. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:group__api__ghm__types"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__types.html">Types</a></td></tr>
+<tr class="memdesc:group__api__ghm__types"><td class="mdescLeft">&#160;</td><td class="mdescRight">goHACK.me Types <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:group__api__ghm__macro"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__macro.html">Macros</a></td></tr>
+<tr class="memdesc:group__api__ghm__macro"><td class="mdescLeft">&#160;</td><td class="mdescRight">API specific macros. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:group__api__ghm__examples"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__examples.html">Examples</a></td></tr>
+<tr class="memdesc:group__api__ghm__examples"><td class="mdescLeft">&#160;</td><td class="mdescRight">goHACK.me examples <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>This contains all goHACK.me related operations. </p>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/group__api__ghm.js	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,9 @@
+var group__api__ghm =
+[
+    [ "Activation", "group__api__ghm__activate.html", "group__api__ghm__activate" ],
+    [ "Read/Write", "group__api__ghm__com.html", "group__api__ghm__com" ],
+    [ "Message", "group__api__ghm__msg.html", "group__api__ghm__msg" ],
+    [ "Types", "group__api__ghm__types.html", "group__api__ghm__types" ],
+    [ "Macros", "group__api__ghm__macro.html", null ],
+    [ "Examples", "group__api__ghm__examples.html", null ]
+];
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/group__api__ghm__activate.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,278 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('group__api__ghm__activate.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">Activation<div class="ingroups"><a class="el" href="group__api__ghm.html">goHACK.me</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Methods for activating/deactivating the module with <a href="http://goHACK.me">http://goHACK.me</a>.  
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:gaff03ecaa08146e6925820209cdab56bd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__activate.html#gaff03ecaa08146e6925820209cdab56bd">wiconnect::GhmInterface::ghmDownloadCapabilities</a> (const char *capsNameOrCustomUrl=NULL, uint32_t version=0)</td></tr>
+<tr class="memdesc:gaff03ecaa08146e6925820209cdab56bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Download a device capabilities file to WiFi module's internal file system.  <a href="#gaff03ecaa08146e6925820209cdab56bd">More...</a><br /></td></tr>
+<tr class="separator:gaff03ecaa08146e6925820209cdab56bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa0213731eebd4a14e9099d01ff76beff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">wiconnect::GhmInterface::ghmActivate</a> (const char *userName, const char *password, const char *capsFilename=NULL)</td></tr>
+<tr class="memdesc:gaa0213731eebd4a14e9099d01ff76beff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Activate WiFi module with <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="#gaa0213731eebd4a14e9099d01ff76beff">More...</a><br /></td></tr>
+<tr class="separator:gaa0213731eebd4a14e9099d01ff76beff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad0e0484d1f9a6608475874544f96708b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__activate.html#gad0e0484d1f9a6608475874544f96708b">wiconnect::GhmInterface::ghmDeactivate</a> (const char *userName, const char *password)</td></tr>
+<tr class="memdesc:gad0e0484d1f9a6608475874544f96708b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deactivate WiFi module with <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="#gad0e0484d1f9a6608475874544f96708b">More...</a><br /></td></tr>
+<tr class="separator:gad0e0484d1f9a6608475874544f96708b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8bec70f780ca7de9dce1a15830c179ff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__activate.html#ga8bec70f780ca7de9dce1a15830c179ff">wiconnect::GhmInterface::ghmIsActivated</a> (bool *statusPtr)</td></tr>
+<tr class="memdesc:ga8bec70f780ca7de9dce1a15830c179ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return if WiFi module is activated with <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="#ga8bec70f780ca7de9dce1a15830c179ff">More...</a><br /></td></tr>
+<tr class="separator:ga8bec70f780ca7de9dce1a15830c179ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>Methods for activating/deactivating the module with <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="gaa0213731eebd4a14e9099d01ff76beff"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::GhmInterface::ghmActivate </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>userName</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>password</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>capsFilename</em> = <code>NULL</code>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Activate WiFi module with <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<dl class="section note"><dt>Note</dt><dd>You must first sign-up with <a href="http://goHACK.me">http://goHACK.me</a> before you can activate the device. Go to <a href="http://goHACK.me">http://goHACK.me</a> to sign-up.</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">userName</td><td>Your username </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">password</td><td>Your password </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">capsFilename</td><td>Optional, filename of existing capabilities file on module's internal file system. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="gad0e0484d1f9a6608475874544f96708b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::GhmInterface::ghmDeactivate </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>userName</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>password</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Deactivate WiFi module with <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<dl class="section note"><dt>Note</dt><dd>You must first sign-up with <a href="http://goHACK.me">http://goHACK.me</a> before you can deactivate the device. Go to <a href="http://goHACK.me">http://goHACK.me</a> to sign-up.</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">userName</td><td>Your username </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">password</td><td>Your password </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="gaff03ecaa08146e6925820209cdab56bd"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::GhmInterface::ghmDownloadCapabilities </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>capsNameOrCustomUrl</em> = <code>NULL</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint32_t&#160;</td>
+          <td class="paramname"><em>version</em> = <code>0</code>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Download a device capabilities file to WiFi module's internal file system. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">capsNameOrCustomUrl</td><td>Optional, specify the caps file name or URL to caps file </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">version</td><td>Optional, version to set downloaded caps file as </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga8bec70f780ca7de9dce1a15830c179ff"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::GhmInterface::ghmIsActivated </td>
+          <td>(</td>
+          <td class="paramtype">bool *&#160;</td>
+          <td class="paramname"><em>statusPtr</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Return if WiFi module is activated with <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[out]</td><td class="paramname">statusPtr</td><td>Pointer to hold activation status. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/group__api__ghm__activate.js	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,7 @@
+var group__api__ghm__activate =
+[
+    [ "ghmActivate", "group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff", null ],
+    [ "ghmDeactivate", "group__api__ghm__activate.html#gad0e0484d1f9a6608475874544f96708b", null ],
+    [ "ghmDownloadCapabilities", "group__api__ghm__activate.html#gaff03ecaa08146e6925820209cdab56bd", null ],
+    [ "ghmIsActivated", "group__api__ghm__activate.html#ga8bec70f780ca7de9dce1a15830c179ff", null ]
+];
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/group__api__ghm__com.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,429 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('group__api__ghm__com.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">Read/Write<div class="ingroups"><a class="el" href="group__api__ghm.html">goHACK.me</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Methods for reading &amp; writing data from/to <a href="http://goHACK.me">http://goHACK.me</a>.  
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga3fde7b34da992719b41fc52178b73bc2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2">wiconnect::GhmInterface::ghmRead</a> (const char *controlName, const char **valueStrPtr)</td></tr>
+<tr class="memdesc:ga3fde7b34da992719b41fc52178b73bc2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read control data from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="#ga3fde7b34da992719b41fc52178b73bc2">More...</a><br /></td></tr>
+<tr class="separator:ga3fde7b34da992719b41fc52178b73bc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2d4f14ef409c30b49ce2a06b72d10c7f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga2d4f14ef409c30b49ce2a06b72d10c7f">wiconnect::GhmInterface::ghmRead</a> (const char *controlName, uint32_t *valueIntPtr)</td></tr>
+<tr class="memdesc:ga2d4f14ef409c30b49ce2a06b72d10c7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read control data from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="#ga2d4f14ef409c30b49ce2a06b72d10c7f">More...</a><br /></td></tr>
+<tr class="separator:ga2d4f14ef409c30b49ce2a06b72d10c7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga965090d4b28bda9f58716b522a6bee12"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga965090d4b28bda9f58716b522a6bee12">wiconnect::GhmInterface::ghmRead</a> (const char *controlName, char *valueBuffer, uint16_t valueBufferLen)</td></tr>
+<tr class="memdesc:ga965090d4b28bda9f58716b522a6bee12"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read control data from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="#ga965090d4b28bda9f58716b522a6bee12">More...</a><br /></td></tr>
+<tr class="separator:ga965090d4b28bda9f58716b522a6bee12"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2f57fc33ad0e71d608b1350d4e3ab223"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223">wiconnect::GhmInterface::ghmWrite</a> (const char *elementName, const char *strValue)</td></tr>
+<tr class="memdesc:ga2f57fc33ad0e71d608b1350d4e3ab223"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write stream or control data to <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="#ga2f57fc33ad0e71d608b1350d4e3ab223">More...</a><br /></td></tr>
+<tr class="separator:ga2f57fc33ad0e71d608b1350d4e3ab223"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga26ef47c451e7dbe869f19f5f36695e7c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga26ef47c451e7dbe869f19f5f36695e7c">wiconnect::GhmInterface::ghmWrite</a> (const char *elementName, uint32_t uintValue)</td></tr>
+<tr class="memdesc:ga26ef47c451e7dbe869f19f5f36695e7c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write stream or control data to <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="#ga26ef47c451e7dbe869f19f5f36695e7c">More...</a><br /></td></tr>
+<tr class="separator:ga26ef47c451e7dbe869f19f5f36695e7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab524e64f4bbae826c27bf39d7f2d3c2e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#gab524e64f4bbae826c27bf39d7f2d3c2e">wiconnect::GhmInterface::ghmWrite</a> (const char *elementName, int32_t intValue)</td></tr>
+<tr class="memdesc:gab524e64f4bbae826c27bf39d7f2d3c2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write stream or control data to <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="#gab524e64f4bbae826c27bf39d7f2d3c2e">More...</a><br /></td></tr>
+<tr class="separator:gab524e64f4bbae826c27bf39d7f2d3c2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5eb797aba87a3ab76d742afe34292ee6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga5eb797aba87a3ab76d742afe34292ee6">wiconnect::GhmInterface::ghmWrite</a> (const <a class="el" href="structwiconnect_1_1_ghm_element_array.html">GhmElementArray</a> *elementArray)</td></tr>
+<tr class="memdesc:ga5eb797aba87a3ab76d742afe34292ee6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write stream or control data to <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="#ga5eb797aba87a3ab76d742afe34292ee6">More...</a><br /></td></tr>
+<tr class="separator:ga5eb797aba87a3ab76d742afe34292ee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0aa48506edb22c90be513683672b96c7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__com.html#ga0aa48506edb22c90be513683672b96c7">wiconnect::GhmInterface::ghmSynchronize</a> (<a class="el" href="group__api__ghm__types.html#ga44ea17651dcf42ac9816f549beb577ac">GhmSyncType</a> type=GHM_SYNC_ALL)</td></tr>
+<tr class="memdesc:ga0aa48506edb22c90be513683672b96c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Synchronize WiFi module with <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="#ga0aa48506edb22c90be513683672b96c7">More...</a><br /></td></tr>
+<tr class="separator:ga0aa48506edb22c90be513683672b96c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>Methods for reading &amp; writing data from/to <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ga3fde7b34da992719b41fc52178b73bc2"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::GhmInterface::ghmRead </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>controlName</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char **&#160;</td>
+          <td class="paramname"><em>valueStrPtr</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Read control data from <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<dl class="section note"><dt>Note</dt><dd>The WiFi module must first be activated. See <a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate()</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">controlName</td><td>The name of the control in the activated capabilities file. </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">valueStrPtr</td><td>Pointer to pointer to hold control's string value </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga2d4f14ef409c30b49ce2a06b72d10c7f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::GhmInterface::ghmRead </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>controlName</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint32_t *&#160;</td>
+          <td class="paramname"><em>valueIntPtr</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Read control data from <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<dl class="section note"><dt>Note</dt><dd>The WiFi module must first be activated. See <a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate()</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">controlName</td><td>The name of the control in the activated capabilities file. </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">valueIntPtr</td><td>Pointer hold control's integer value </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga965090d4b28bda9f58716b522a6bee12"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::GhmInterface::ghmRead </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>controlName</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>valueBuffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint16_t&#160;</td>
+          <td class="paramname"><em>valueBufferLen</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Read control data from <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<dl class="section note"><dt>Note</dt><dd>The WiFi module must first be activated. See <a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate()</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">controlName</td><td>The name of the control in the activated capabilities file. </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">valueBuffer</td><td>Buffer to hold control's string value </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">valueBufferLen</td><td>Length of valueBuffer </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga0aa48506edb22c90be513683672b96c7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::GhmInterface::ghmSynchronize </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__api__ghm__types.html#ga44ea17651dcf42ac9816f549beb577ac">GhmSyncType</a>&#160;</td>
+          <td class="paramname"><em>type</em> = <code><a class="el" href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577aca8aa4d4efd897cd69e0f08feaeaa122e7">GHM_SYNC_ALL</a></code></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Synchronize WiFi module with <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<dl class="section note"><dt>Note</dt><dd>The WiFi module must first be activated. See <a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate()</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>Type of synchronization. See <a class="el" href="group__api__ghm__types.html#ga44ea17651dcf42ac9816f549beb577ac">GhmSyncType</a> </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga2f57fc33ad0e71d608b1350d4e3ab223"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::GhmInterface::ghmWrite </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>elementName</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>strValue</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write stream or control data to <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<dl class="section note"><dt>Note</dt><dd>The WiFi module must first be activated. See <a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate()</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">elementName</td><td>The name of the control or stream in the activated capabilities file. </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">strValue</td><td>String value of control or stream </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga26ef47c451e7dbe869f19f5f36695e7c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::GhmInterface::ghmWrite </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>elementName</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint32_t&#160;</td>
+          <td class="paramname"><em>uintValue</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write stream or control data to <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<dl class="section note"><dt>Note</dt><dd>The WiFi module must first be activated. See <a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate()</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">elementName</td><td>The name of the control or stream in the activated capabilities file. </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">uintValue</td><td>Unsigned integer value of control or stream </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="gab524e64f4bbae826c27bf39d7f2d3c2e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::GhmInterface::ghmWrite </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>elementName</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int32_t&#160;</td>
+          <td class="paramname"><em>intValue</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write stream or control data to <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<dl class="section note"><dt>Note</dt><dd>The WiFi module must first be activated. See <a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate()</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">elementName</td><td>The name of the control or stream in the activated capabilities file. </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">intValue</td><td>signed integer value of control or stream </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga5eb797aba87a3ab76d742afe34292ee6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::GhmInterface::ghmWrite </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structwiconnect_1_1_ghm_element_array.html">GhmElementArray</a> *&#160;</td>
+          <td class="paramname"><em>elementArray</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write stream or control data to <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<dl class="section note"><dt>Note</dt><dd>The WiFi module must first be activated. See <a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate()</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">elementArray</td><td>Array of stream and/or control values to send to <a href="http://goHACK.me">http://goHACK.me</a> </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/group__api__ghm__com.js	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,11 @@
+var group__api__ghm__com =
+[
+    [ "ghmRead", "group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2", null ],
+    [ "ghmRead", "group__api__ghm__com.html#ga2d4f14ef409c30b49ce2a06b72d10c7f", null ],
+    [ "ghmRead", "group__api__ghm__com.html#ga965090d4b28bda9f58716b522a6bee12", null ],
+    [ "ghmSynchronize", "group__api__ghm__com.html#ga0aa48506edb22c90be513683672b96c7", null ],
+    [ "ghmWrite", "group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223", null ],
+    [ "ghmWrite", "group__api__ghm__com.html#ga26ef47c451e7dbe869f19f5f36695e7c", null ],
+    [ "ghmWrite", "group__api__ghm__com.html#gab524e64f4bbae826c27bf39d7f2d3c2e", null ],
+    [ "ghmWrite", "group__api__ghm__com.html#ga5eb797aba87a3ab76d742afe34292ee6", null ]
+];
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/group__api__ghm__examples.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,116 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('group__api__ghm__examples.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">Examples<div class="ingroups"><a class="el" href="group__api__ghm.html">goHACK.me</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>goHACK.me examples  
+<a href="#details">More...</a></p>
+<p>goHACK.me examples </p>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/group__api__ghm__macro.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,116 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('group__api__ghm__macro.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">Macros<div class="ingroups"><a class="el" href="group__api__ghm.html">goHACK.me</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>API specific macros.  
+<a href="#details">More...</a></p>
+<p>API specific macros. </p>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/group__api__ghm__msg.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,400 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('group__api__ghm__msg.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">Message<div class="ingroups"><a class="el" href="group__api__ghm.html">goHACK.me</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Methods for getting, posting, listing, deleting messages wtih <a href="http://goHACK.me">http://goHACK.me</a>.  
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:gadc281f497041b26a151c72a0b5d03543"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#gadc281f497041b26a151c72a0b5d03543">wiconnect::GhmInterface::ghmPostMessage</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, bool jsonFormatted=false)</td></tr>
+<tr class="memdesc:gadc281f497041b26a151c72a0b5d03543"><td class="mdescLeft">&#160;</td><td class="mdescRight">POST message to <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="#gadc281f497041b26a151c72a0b5d03543">More...</a><br /></td></tr>
+<tr class="separator:gadc281f497041b26a151c72a0b5d03543"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaaa05391432b2ca38bb416c671f57b234"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234">wiconnect::GhmInterface::ghmGetMessage</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <a class="el" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a> getType=GHM_MSG_GET_DATA_ONLY)</td></tr>
+<tr class="memdesc:gaaa05391432b2ca38bb416c671f57b234"><td class="mdescLeft">&#160;</td><td class="mdescRight">GET message from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="#gaaa05391432b2ca38bb416c671f57b234">More...</a><br /></td></tr>
+<tr class="separator:gaaa05391432b2ca38bb416c671f57b234"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa905a010f0e234d290eaef6e42975c29"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#gaa905a010f0e234d290eaef6e42975c29">wiconnect::GhmInterface::ghmGetMessage</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, uint8_t listIndex, <a class="el" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a> getType=GHM_MSG_GET_DATA_ONLY)</td></tr>
+<tr class="memdesc:gaa905a010f0e234d290eaef6e42975c29"><td class="mdescLeft">&#160;</td><td class="mdescRight">GET message from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="#gaa905a010f0e234d290eaef6e42975c29">More...</a><br /></td></tr>
+<tr class="separator:gaa905a010f0e234d290eaef6e42975c29"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9c6dffaa871f2443a32d75276160682d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#ga9c6dffaa871f2443a32d75276160682d">wiconnect::GhmInterface::ghmGetMessage</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *msgId, <a class="el" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a> getType=GHM_MSG_GET_DATA_ONLY)</td></tr>
+<tr class="memdesc:ga9c6dffaa871f2443a32d75276160682d"><td class="mdescLeft">&#160;</td><td class="mdescRight">GET message from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="#ga9c6dffaa871f2443a32d75276160682d">More...</a><br /></td></tr>
+<tr class="separator:ga9c6dffaa871f2443a32d75276160682d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga451de9d69f7ecbf38e36056e502b94b0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#ga451de9d69f7ecbf38e36056e502b94b0">wiconnect::GhmInterface::ghmDeleteMessage</a> (uint8_t listIndex)</td></tr>
+<tr class="memdesc:ga451de9d69f7ecbf38e36056e502b94b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete message from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="#ga451de9d69f7ecbf38e36056e502b94b0">More...</a><br /></td></tr>
+<tr class="separator:ga451de9d69f7ecbf38e36056e502b94b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7273f4c691aeccd241327f1be3e8d0e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#ga7273f4c691aeccd241327f1be3e8d0e9">wiconnect::GhmInterface::ghmDeleteMessage</a> (const char *msgId)</td></tr>
+<tr class="memdesc:ga7273f4c691aeccd241327f1be3e8d0e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete message from <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="#ga7273f4c691aeccd241327f1be3e8d0e9">More...</a><br /></td></tr>
+<tr class="separator:ga7273f4c691aeccd241327f1be3e8d0e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae69971594793e1a10f11a51277909502"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502">wiconnect::GhmInterface::ghmListMessages</a> (<a class="el" href="classwiconnect_1_1_ghm_message_list.html">GhmMessageList</a> &amp;msgList, uint8_t maxCount=0)</td></tr>
+<tr class="memdesc:gae69971594793e1a10f11a51277909502"><td class="mdescLeft">&#160;</td><td class="mdescRight">List available messages for device on <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="#gae69971594793e1a10f11a51277909502">More...</a><br /></td></tr>
+<tr class="separator:gae69971594793e1a10f11a51277909502"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>Methods for getting, posting, listing, deleting messages wtih <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ga451de9d69f7ecbf38e36056e502b94b0"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::GhmInterface::ghmDeleteMessage </td>
+          <td>(</td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>listIndex</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Delete message from <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<dl class="section note"><dt>Note</dt><dd><a class="el" href="group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502">ghmListMessages()</a> must be called first before using this method.</dd>
+<dd>
+The WiFi module must first be activated. See <a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate()</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">listIndex</td><td>The index of the message returned from <a class="el" href="group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502" title="List available messages for device on http://goHACK.me. ">ghmListMessages()</a> </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga7273f4c691aeccd241327f1be3e8d0e9"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::GhmInterface::ghmDeleteMessage </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>msgId</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Delete message from <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<dl class="section note"><dt>Note</dt><dd>The WiFi module must first be activated. See <a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate()</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">msgId</td><td>The <a href="http://goHACK.me">http://goHACK.me</a> message ID. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="gaaa05391432b2ca38bb416c671f57b234"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::GhmInterface::ghmGetMessage </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;&#160;</td>
+          <td class="paramname"><em>socket</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a>&#160;</td>
+          <td class="paramname"><em>getType</em> = <code><a class="el" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127">GHM_MSG_GET_DATA_ONLY</a></code>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>GET message from <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<dl class="section note"><dt>Note</dt><dd>The WiFi module must first be activated. See <a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate()</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[out]</td><td class="paramname">socket</td><td><a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> used to receive message data from <a href="http://goHACK.me">http://goHACK.me</a> </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">getType</td><td>The additional message data to receive. See <a class="el" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a> </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="gaa905a010f0e234d290eaef6e42975c29"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::GhmInterface::ghmGetMessage </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;&#160;</td>
+          <td class="paramname"><em>socket</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>listIndex</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a>&#160;</td>
+          <td class="paramname"><em>getType</em> = <code><a class="el" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127">GHM_MSG_GET_DATA_ONLY</a></code>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>GET message from <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<dl class="section note"><dt>Note</dt><dd><a class="el" href="group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502">ghmListMessages()</a> must be called first before using this method.</dd>
+<dd>
+The WiFi module must first be activated. See <a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate()</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[out]</td><td class="paramname">socket</td><td><a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> used to receive message data from <a href="http://goHACK.me">http://goHACK.me</a> </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">listIndex</td><td>The index of the message returned from <a class="el" href="group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502" title="List available messages for device on http://goHACK.me. ">ghmListMessages()</a> </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">getType</td><td>The additional message data to receive. See <a class="el" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a> </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga9c6dffaa871f2443a32d75276160682d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::GhmInterface::ghmGetMessage </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;&#160;</td>
+          <td class="paramname"><em>socket</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>msgId</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a>&#160;</td>
+          <td class="paramname"><em>getType</em> = <code><a class="el" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127">GHM_MSG_GET_DATA_ONLY</a></code>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>GET message from <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<dl class="section note"><dt>Note</dt><dd>The WiFi module must first be activated. See <a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate()</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[out]</td><td class="paramname">socket</td><td><a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> used to receive message data from <a href="http://goHACK.me">http://goHACK.me</a> </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">msgId</td><td>The <a href="http://goHACK.me">http://goHACK.me</a> message ID. </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">getType</td><td>The additional message data to receive. See <a class="el" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a> </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="gae69971594793e1a10f11a51277909502"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::GhmInterface::ghmListMessages </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classwiconnect_1_1_ghm_message_list.html">GhmMessageList</a> &amp;&#160;</td>
+          <td class="paramname"><em>msgList</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t&#160;</td>
+          <td class="paramname"><em>maxCount</em> = <code>0</code>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>List available messages for device on <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<dl class="section note"><dt>Note</dt><dd>The WiFi module must first be activated. See <a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate()</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[out]</td><td class="paramname">msgList</td><td><a class="el" href="classwiconnect_1_1_ghm_message_list.html">GhmMessageList</a> to hold received messages. </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">maxCount</td><td>Optional, the maximum number of messages to receive. If 0, receive all messages (max of 25). </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="gadc281f497041b26a151c72a0b5d03543"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::GhmInterface::ghmPostMessage </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;&#160;</td>
+          <td class="paramname"><em>socket</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>jsonFormatted</em> = <code>false</code>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>POST message to <a href="http://goHACK.me">http://goHACK.me</a>. </p>
+<dl class="section note"><dt>Note</dt><dd>The WiFi module must first be activated. See <a class="el" href="group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff">ghmActivate()</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[out]</td><td class="paramname">socket</td><td><a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> used to send message data to <a href="http://goHACK.me">http://goHACK.me</a> </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">jsonFormatted</td><td>If true, the input message data should be JSON formatted, else the message data should be ASCII formatted. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/group__api__ghm__msg.js	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,10 @@
+var group__api__ghm__msg =
+[
+    [ "ghmDeleteMessage", "group__api__ghm__msg.html#ga451de9d69f7ecbf38e36056e502b94b0", null ],
+    [ "ghmDeleteMessage", "group__api__ghm__msg.html#ga7273f4c691aeccd241327f1be3e8d0e9", null ],
+    [ "ghmGetMessage", "group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234", null ],
+    [ "ghmGetMessage", "group__api__ghm__msg.html#gaa905a010f0e234d290eaef6e42975c29", null ],
+    [ "ghmGetMessage", "group__api__ghm__msg.html#ga9c6dffaa871f2443a32d75276160682d", null ],
+    [ "ghmListMessages", "group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502", null ],
+    [ "ghmPostMessage", "group__api__ghm__msg.html#gadc281f497041b26a151c72a0b5d03543", null ]
+];
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/group__api__ghm__types.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,220 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('group__api__ghm__types.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#enum-members">Enumerations</a>  </div>
+  <div class="headertitle">
+<div class="title">Types<div class="ingroups"><a class="el" href="group__api__ghm.html">goHACK.me</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>goHACK.me Types  
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwiconnect_1_1_ghm_interface.html">wiconnect::GhmInterface</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The provides an interface for <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="classwiconnect_1_1_ghm_interface.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwiconnect_1_1_ghm_element.html">wiconnect::GhmElement</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">goHACK.me stream or control value  <a href="structwiconnect_1_1_ghm_element.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwiconnect_1_1_ghm_element_array.html">wiconnect::GhmElementArray</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Array of goHACK.me stream or control values.  <a href="structwiconnect_1_1_ghm_element_array.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwiconnect_1_1_ghm_message.html">wiconnect::GhmMessage</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Contains single entry from goHACK.me message listing.  <a href="classwiconnect_1_1_ghm_message.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwiconnect_1_1_ghm_message_list.html">wiconnect::GhmMessageList</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">List of goHACK.me messages.  <a href="classwiconnect_1_1_ghm_message_list.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:ga4174104f02851ee92e51846877706e67"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4174104f02851ee92e51846877706e67"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__types.html#ga4174104f02851ee92e51846877706e67">wiconnect::GhmElementValueType</a> </td></tr>
+<tr class="memdesc:ga4174104f02851ee92e51846877706e67"><td class="mdescLeft">&#160;</td><td class="mdescRight">goHACK.me stream or control value type <br /></td></tr>
+<tr class="separator:ga4174104f02851ee92e51846877706e67"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga44ea17651dcf42ac9816f549beb577ac"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__types.html#ga44ea17651dcf42ac9816f549beb577ac">wiconnect::GhmSyncType</a> { <br />
+&#160;&#160;<a class="el" href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577aca8aa4d4efd897cd69e0f08feaeaa122e7">wiconnect::GHM_SYNC_ALL</a>, 
+<br />
+&#160;&#160;<a class="el" href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577acafcf2af6407845b24a3abac79587243e0">wiconnect::GHM_SYNC_PUSH_ONLY</a>, 
+<br />
+&#160;&#160;<a class="el" href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577acaad5fbcfa42d14a2662bc5a517c108bdd">wiconnect::GHM_SYNC_PULL_ONLY</a>
+<br />
+ }</td></tr>
+<tr class="memdesc:ga44ea17651dcf42ac9816f549beb577ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">goHACK.me sychronization type  <a href="group__api__ghm__types.html#ga44ea17651dcf42ac9816f549beb577ac">More...</a><br /></td></tr>
+<tr class="separator:ga44ea17651dcf42ac9816f549beb577ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf75750bfef61c73f9e4677e9de663df1"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">wiconnect::GhmMessageGetType</a> { <br />
+&#160;&#160;<a class="el" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127">wiconnect::GHM_MSG_GET_DATA_ONLY</a>, 
+<br />
+&#160;&#160;<a class="el" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a19876ca1d097b96c48a1e8b54ee562d1">wiconnect::GHM_MSG_GET_BODY</a>, 
+<br />
+&#160;&#160;<a class="el" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1adcf75ccabf6676b9b8f3050080f4bab7">wiconnect::GHM_MSG_GET_ALL</a>
+<br />
+ }</td></tr>
+<tr class="memdesc:gaf75750bfef61c73f9e4677e9de663df1"><td class="mdescLeft">&#160;</td><td class="mdescRight">goHACK.me message GET type  <a href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">More...</a><br /></td></tr>
+<tr class="separator:gaf75750bfef61c73f9e4677e9de663df1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>goHACK.me Types </p>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a class="anchor" id="gaf75750bfef61c73f9e4677e9de663df1"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">wiconnect::GhmMessageGetType</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>goHACK.me message GET type </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127"></a>GHM_MSG_GET_DATA_ONLY&#160;</td><td class="fielddoc">
+<p>Only GET the message data. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="ggaf75750bfef61c73f9e4677e9de663df1a19876ca1d097b96c48a1e8b54ee562d1"></a>GHM_MSG_GET_BODY&#160;</td><td class="fielddoc">
+<p>Get the message body. This is JSON formatted. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="ggaf75750bfef61c73f9e4677e9de663df1adcf75ccabf6676b9b8f3050080f4bab7"></a>GHM_MSG_GET_ALL&#160;</td><td class="fielddoc">
+<p>Get entire message. This includes headers. Is JSON formatted. </p>
+</td></tr>
+</table>
+
+<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00472">472</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga44ea17651dcf42ac9816f549beb577ac"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="group__api__ghm__types.html#ga44ea17651dcf42ac9816f549beb577ac">wiconnect::GhmSyncType</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>goHACK.me sychronization type </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="gga44ea17651dcf42ac9816f549beb577aca8aa4d4efd897cd69e0f08feaeaa122e7"></a>GHM_SYNC_ALL&#160;</td><td class="fielddoc">
+<p>Push and pull all streams and controls. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="gga44ea17651dcf42ac9816f549beb577acafcf2af6407845b24a3abac79587243e0"></a>GHM_SYNC_PUSH_ONLY&#160;</td><td class="fielddoc">
+<p>Only push streams and controls to remote server. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="gga44ea17651dcf42ac9816f549beb577acaad5fbcfa42d14a2662bc5a517c108bdd"></a>GHM_SYNC_PULL_ONLY&#160;</td><td class="fielddoc">
+<p>Only pull controls from remote server. </p>
+</td></tr>
+</table>
+
+<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00461">461</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/group__api__ghm__types.js	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,39 @@
+var group__api__ghm__types =
+[
+    [ "GhmInterface", "classwiconnect_1_1_ghm_interface.html", [
+      [ "ghmActivate", "group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff", null ],
+      [ "ghmDeactivate", "group__api__ghm__activate.html#gad0e0484d1f9a6608475874544f96708b", null ],
+      [ "ghmDeleteMessage", "group__api__ghm__msg.html#ga451de9d69f7ecbf38e36056e502b94b0", null ],
+      [ "ghmDeleteMessage", "group__api__ghm__msg.html#ga7273f4c691aeccd241327f1be3e8d0e9", null ],
+      [ "ghmDownloadCapabilities", "group__api__ghm__activate.html#gaff03ecaa08146e6925820209cdab56bd", null ],
+      [ "ghmGetMessage", "group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234", null ],
+      [ "ghmGetMessage", "group__api__ghm__msg.html#gaa905a010f0e234d290eaef6e42975c29", null ],
+      [ "ghmGetMessage", "group__api__ghm__msg.html#ga9c6dffaa871f2443a32d75276160682d", null ],
+      [ "ghmIsActivated", "group__api__ghm__activate.html#ga8bec70f780ca7de9dce1a15830c179ff", null ],
+      [ "ghmListMessages", "group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502", null ],
+      [ "ghmPostMessage", "group__api__ghm__msg.html#gadc281f497041b26a151c72a0b5d03543", null ],
+      [ "ghmRead", "group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2", null ],
+      [ "ghmRead", "group__api__ghm__com.html#ga2d4f14ef409c30b49ce2a06b72d10c7f", null ],
+      [ "ghmRead", "group__api__ghm__com.html#ga965090d4b28bda9f58716b522a6bee12", null ],
+      [ "ghmSynchronize", "group__api__ghm__com.html#ga0aa48506edb22c90be513683672b96c7", null ],
+      [ "ghmWrite", "group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223", null ],
+      [ "ghmWrite", "group__api__ghm__com.html#ga26ef47c451e7dbe869f19f5f36695e7c", null ],
+      [ "ghmWrite", "group__api__ghm__com.html#gab524e64f4bbae826c27bf39d7f2d3c2e", null ],
+      [ "ghmWrite", "group__api__ghm__com.html#ga5eb797aba87a3ab76d742afe34292ee6", null ]
+    ] ],
+    [ "GhmElement", "structwiconnect_1_1_ghm_element.html", null ],
+    [ "GhmElementArray", "structwiconnect_1_1_ghm_element_array.html", null ],
+    [ "GhmMessage", "classwiconnect_1_1_ghm_message.html", null ],
+    [ "GhmMessageList", "classwiconnect_1_1_ghm_message_list.html", null ],
+    [ "GhmElementValueType", "group__api__ghm__types.html#ga4174104f02851ee92e51846877706e67", null ],
+    [ "GhmMessageGetType", "group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1", [
+      [ "GHM_MSG_GET_DATA_ONLY", "group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127", null ],
+      [ "GHM_MSG_GET_BODY", "group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a19876ca1d097b96c48a1e8b54ee562d1", null ],
+      [ "GHM_MSG_GET_ALL", "group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1adcf75ccabf6676b9b8f3050080f4bab7", null ]
+    ] ],
+    [ "GhmSyncType", "group__api__ghm__types.html#ga44ea17651dcf42ac9816f549beb577ac", [
+      [ "GHM_SYNC_ALL", "group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577aca8aa4d4efd897cd69e0f08feaeaa122e7", null ],
+      [ "GHM_SYNC_PUSH_ONLY", "group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577acafcf2af6407845b24a3abac79587243e0", null ],
+      [ "GHM_SYNC_PULL_ONLY", "group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577acaad5fbcfa42d14a2662bc5a517c108bdd", null ]
+    ] ]
+];
\ No newline at end of file
--- a/doc/html/group__api__network.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__network.html	Mon Oct 27 13:42:26 2014 -0700
@@ -104,7 +104,7 @@
 </div><!--header-->
 <div class="contents">
 
-<p>This contains all network methods.  
+<p>This contains all network related operations.  
 <a href="#details">More...</a></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
@@ -132,7 +132,7 @@
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<p>This contains all network methods. </p>
+<p>This contains all network related operations. </p>
 </div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/group__api__network__settings.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__network__settings.html	Mon Oct 27 13:42:26 2014 -0700
@@ -128,26 +128,30 @@
 WiconnectResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b">wiconnect::NetworkInterface::getIpSettings</a> (uint32_t *ip, uint32_t *netmask, uint32_t *gateway)</td></tr>
 <tr class="memdesc:ga291aef702f1c10bf2970394e3458022b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get network IP settings. <br /></td></tr>
 <tr class="separator:ga291aef702f1c10bf2970394e3458022b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gaba16b9918e55c08285cf5b8b50dbabea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaba16b9918e55c08285cf5b8b50dbabea"></a>
-WiconnectResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__settings.html#gaba16b9918e55c08285cf5b8b50dbabea">wiconnect::NetworkInterface::getSignalStrength</a> (NetworkSignalStrength *signalStrengthPtr)</td></tr>
-<tr class="memdesc:gaba16b9918e55c08285cf5b8b50dbabea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get signal strength to WiFi network. <br /></td></tr>
-<tr class="separator:gaba16b9918e55c08285cf5b8b50dbabea"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga0b8fc3d5be0bae9ffcdc1b4b9aee6290"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290">wiconnect::NetworkInterface::getIpAddress</a> (char *buffer=NULL)</td></tr>
-<tr class="memdesc:ga0b8fc3d5be0bae9ffcdc1b4b9aee6290"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the current IP address of the module if possible, else return 0.0.0.0.  <a href="#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290">More...</a><br /></td></tr>
-<tr class="separator:ga0b8fc3d5be0bae9ffcdc1b4b9aee6290"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga258d8b80064c6ce311a433affe63a0e9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga258d8b80064c6ce311a433affe63a0e9"></a>
+WiconnectResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__settings.html#ga258d8b80064c6ce311a433affe63a0e9">wiconnect::NetworkInterface::setDnsAddress</a> (uint32_t dnsAddress)</td></tr>
+<tr class="memdesc:ga258d8b80064c6ce311a433affe63a0e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set static DNS Address. <br /></td></tr>
+<tr class="separator:ga258d8b80064c6ce311a433affe63a0e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga585cb71d386ee61db3772f4b3218cb6e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga585cb71d386ee61db3772f4b3218cb6e"></a>
+WiconnectResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__settings.html#ga585cb71d386ee61db3772f4b3218cb6e">wiconnect::NetworkInterface::getDnsAddress</a> (uint32_t *dnsAddress)</td></tr>
+<tr class="memdesc:ga585cb71d386ee61db3772f4b3218cb6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the static DNS address. <br /></td></tr>
+<tr class="separator:ga585cb71d386ee61db3772f4b3218cb6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabd8eb629fd40defaa9ab22c189652a3f"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f">wiconnect::NetworkInterface::getIpAddress</a> (char *buffer ALLOW_NULL_STRING_BUFFER)</td></tr>
+<tr class="memdesc:gabd8eb629fd40defaa9ab22c189652a3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the current IP address of the module if possible, else return 0.0.0.0.  <a href="#gabd8eb629fd40defaa9ab22c189652a3f">More...</a><br /></td></tr>
+<tr class="separator:gabd8eb629fd40defaa9ab22c189652a3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <p>API getters/setters for module network settings. </p>
 <h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="ga0b8fc3d5be0bae9ffcdc1b4b9aee6290"></a>
+<a class="anchor" id="gabd8eb629fd40defaa9ab22c189652a3f"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
           <td class="memname">const char* wiconnect::NetworkInterface::getIpAddress </td>
           <td>(</td>
-          <td class="paramtype">char *&#160;</td>
-          <td class="paramname"><em>buffer</em> = <code>NULL</code></td><td>)</td>
+          <td class="paramtype">char *buffer&#160;</td>
+          <td class="paramname"><em>ALLOW_NULL_STRING_BUFFER</em></td><td>)</td>
           <td></td>
         </tr>
       </table>
--- a/doc/html/group__api__network__settings.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__network__settings.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,10 +1,11 @@
 var group__api__network__settings =
 [
     [ "getDhcpEnabled", "group__api__network__settings.html#ga70ec796b88eb6f8e7990dbf3eb2f2eff", null ],
-    [ "getIpAddress", "group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290", null ],
+    [ "getDnsAddress", "group__api__network__settings.html#ga585cb71d386ee61db3772f4b3218cb6e", null ],
+    [ "getIpAddress", "group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f", null ],
     [ "getIpSettings", "group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b", null ],
-    [ "getSignalStrength", "group__api__network__settings.html#gaba16b9918e55c08285cf5b8b50dbabea", null ],
     [ "setDhcpEnabled", "group__api__network__settings.html#ga65eb99f880ed739d0f3cd393e5b56eaf", null ],
+    [ "setDnsAddress", "group__api__network__settings.html#ga258d8b80064c6ce311a433affe63a0e9", null ],
     [ "setIpSettings", "group__api__network__settings.html#ga2f7ec21084d3f2835d9c1c201915a9e0", null ],
     [ "setIpSettings", "group__api__network__settings.html#gaa418175dd3d06b870f3dd8e035cb4dd0", null ]
 ];
\ No newline at end of file
--- a/doc/html/group__api__network__types.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__network__types.html	Mon Oct 27 13:42:26 2014 -0700
@@ -242,7 +242,7 @@
 </td></tr>
 </table>
 
-<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00236">236</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
+<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00250">250</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
 
 </div>
 </div>
@@ -278,7 +278,7 @@
 </td></tr>
 </table>
 
-<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00253">253</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
+<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00267">267</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
 
 </div>
 </div>
@@ -308,7 +308,7 @@
 </td></tr>
 </table>
 
-<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00224">224</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
+<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00238">238</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
 
 </div>
 </div>
--- a/doc/html/group__api__network__types.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__network__types.js	Mon Oct 27 13:42:26 2014 -0700
@@ -2,11 +2,14 @@
 [
     [ "NetworkInterface", "classwiconnect_1_1_network_interface.html", [
       [ "getDhcpEnabled", "group__api__network__settings.html#ga70ec796b88eb6f8e7990dbf3eb2f2eff", null ],
-      [ "getIpAddress", "group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290", null ],
+      [ "getDnsAddress", "group__api__network__settings.html#ga585cb71d386ee61db3772f4b3218cb6e", null ],
+      [ "getIpAddress", "group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f", null ],
       [ "getIpSettings", "group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b", null ],
+      [ "getMacAddress", "group__api__network__wlan.html#ga70991a2c5865c8f0b44b67de35f3b6b3", null ],
       [ "getNetworkJoinResult", "group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b", null ],
       [ "getNetworkStatus", "group__api__network__wlan.html#ga047ba9670f60406466391cec5bdd28e5", null ],
-      [ "getSignalStrength", "group__api__network__settings.html#gaba16b9918e55c08285cf5b8b50dbabea", null ],
+      [ "getRssi", "group__api__network__wlan.html#gaa9db3c463cf6b4f351c37671882dd3ee", null ],
+      [ "getSignalStrength", "group__api__network__wlan.html#gaba16b9918e55c08285cf5b8b50dbabea", null ],
       [ "isWebSetupRunning", "group__api__network__setup.html#gab52d3a01427d0e8bd52460d992144f65", null ],
       [ "join", "group__api__network__wlan.html#gac439d0af5a17da32d405e25dcba83d16", null ],
       [ "leave", "group__api__network__wlan.html#ga14dc0f4fa58a7ebb25b77fae22052328", null ],
@@ -14,6 +17,7 @@
       [ "ping", "group__api__network__util.html#ga1da909dadb6f0e90218927ed350f72bc", null ],
       [ "scan", "group__api__network__util.html#gacdf014d8aca9de33dbc1563c6bb1f956", null ],
       [ "setDhcpEnabled", "group__api__network__settings.html#ga65eb99f880ed739d0f3cd393e5b56eaf", null ],
+      [ "setDnsAddress", "group__api__network__settings.html#ga258d8b80064c6ce311a433affe63a0e9", null ],
       [ "setIpSettings", "group__api__network__settings.html#ga2f7ec21084d3f2835d9c1c201915a9e0", null ],
       [ "setIpSettings", "group__api__network__settings.html#gaa418175dd3d06b870f3dd8e035cb4dd0", null ],
       [ "startWebSetup", "group__api__network__setup.html#gaea3e133f2ee8c95d8d108c15561f3847", null ],
--- a/doc/html/group__api__network__wlan.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__network__wlan.html	Mon Oct 27 13:42:26 2014 -0700
@@ -121,6 +121,18 @@
 <tr class="memitem:gafefe6e679d7b48a7127d3ed6371fe58b"><td class="memItemLeft" align="right" valign="top">WiconnectResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b">wiconnect::NetworkInterface::getNetworkJoinResult</a> (NetworkJoinResult *joinResultPtr)</td></tr>
 <tr class="memdesc:gafefe6e679d7b48a7127d3ed6371fe58b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the result of joining the network.  <a href="#gafefe6e679d7b48a7127d3ed6371fe58b">More...</a><br /></td></tr>
 <tr class="separator:gafefe6e679d7b48a7127d3ed6371fe58b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaba16b9918e55c08285cf5b8b50dbabea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaba16b9918e55c08285cf5b8b50dbabea"></a>
+WiconnectResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__wlan.html#gaba16b9918e55c08285cf5b8b50dbabea">wiconnect::NetworkInterface::getSignalStrength</a> (NetworkSignalStrength *signalStrengthPtr)</td></tr>
+<tr class="memdesc:gaba16b9918e55c08285cf5b8b50dbabea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get <a class="el" href="group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36">NetworkSignalStrength</a> of WiFi network module is connected. <br /></td></tr>
+<tr class="separator:gaba16b9918e55c08285cf5b8b50dbabea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa9db3c463cf6b4f351c37671882dd3ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa9db3c463cf6b4f351c37671882dd3ee"></a>
+WiconnectResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__wlan.html#gaa9db3c463cf6b4f351c37671882dd3ee">wiconnect::NetworkInterface::getRssi</a> (int32_t *rssiPtr)</td></tr>
+<tr class="memdesc:gaa9db3c463cf6b4f351c37671882dd3ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the RSSI in dBm of WiFi network. <br /></td></tr>
+<tr class="separator:gaa9db3c463cf6b4f351c37671882dd3ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga70991a2c5865c8f0b44b67de35f3b6b3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga70991a2c5865c8f0b44b67de35f3b6b3"></a>
+WiconnectResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__wlan.html#ga70991a2c5865c8f0b44b67de35f3b6b3">wiconnect::NetworkInterface::getMacAddress</a> (MacAddress *macAddress)</td></tr>
+<tr class="memdesc:ga70991a2c5865c8f0b44b67de35f3b6b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get MAC address of the WiFi module. <br /></td></tr>
+<tr class="separator:ga70991a2c5865c8f0b44b67de35f3b6b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <p>Methods for joining/leaving a WLAN. </p>
--- a/doc/html/group__api__network__wlan.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__network__wlan.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,7 +1,10 @@
 var group__api__network__wlan =
 [
+    [ "getMacAddress", "group__api__network__wlan.html#ga70991a2c5865c8f0b44b67de35f3b6b3", null ],
     [ "getNetworkJoinResult", "group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b", null ],
     [ "getNetworkStatus", "group__api__network__wlan.html#ga047ba9670f60406466391cec5bdd28e5", null ],
+    [ "getRssi", "group__api__network__wlan.html#gaa9db3c463cf6b4f351c37671882dd3ee", null ],
+    [ "getSignalStrength", "group__api__network__wlan.html#gaba16b9918e55c08285cf5b8b50dbabea", null ],
     [ "join", "group__api__network__wlan.html#gac439d0af5a17da32d405e25dcba83d16", null ],
     [ "leave", "group__api__network__wlan.html#ga14dc0f4fa58a7ebb25b77fae22052328", null ]
 ];
\ No newline at end of file
--- a/doc/html/group__api__socket.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__socket.html	Mon Oct 27 13:42:26 2014 -0700
@@ -104,7 +104,7 @@
 </div><!--header-->
 <div class="contents">
 
-<p>This contains all socket methods.  
+<p>This contains all socket related operations.  
 <a href="#details">More...</a></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
@@ -135,7 +135,7 @@
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<p>This contains all socket methods. </p>
+<p>This contains all socket related operations. </p>
 </div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/group__api__socket__misc.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__socket__misc.html	Mon Oct 27 13:42:26 2014 -0700
@@ -112,15 +112,9 @@
 <tr class="memitem:ga8a80d96efac7cc514fe7fc61d1878106"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106">wiconnect::SocketInterface::closeAllSockets</a> ()</td></tr>
 <tr class="memdesc:ga8a80d96efac7cc514fe7fc61d1878106"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close all opened sockets.  <a href="#ga8a80d96efac7cc514fe7fc61d1878106">More...</a><br /></td></tr>
 <tr class="separator:ga8a80d96efac7cc514fe7fc61d1878106"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga94d1eb5407cb8b60ad366ecbe0e1b52a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a">wiconnect::SocketInterface::registerSocketIrqHandler</a> (<a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin, const <a class="el" href="classwiconnect_1_1_callback.html">Callback</a> &amp;handler)</td></tr>
-<tr class="memdesc:ga94d1eb5407cb8b60ad366ecbe0e1b52a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a host pin as an external interrupt. When the external interrupt is triggered, the supplied callback is executed.  <a href="#ga94d1eb5407cb8b60ad366ecbe0e1b52a">More...</a><br /></td></tr>
-<tr class="separator:ga94d1eb5407cb8b60ad366ecbe0e1b52a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga820d2fdb12d343212638e55633bd8551"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__misc.html#ga820d2fdb12d343212638e55633bd8551">wiconnect::SocketInterface::unregisterSocketIrqHandler</a> (<a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin)</td></tr>
-<tr class="memdesc:ga820d2fdb12d343212638e55633bd8551"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unregister a previously registered IRQ pin.  <a href="#ga820d2fdb12d343212638e55633bd8551">More...</a><br /></td></tr>
-<tr class="separator:ga820d2fdb12d343212638e55633bd8551"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga037cb2813683697342fff01239c7f6f8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__misc.html#ga037cb2813683697342fff01239c7f6f8">wiconnect::SocketInterface::connect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <a class="el" href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">SocketType</a> type, const char *host, uint16_t remortPort, uint16_t localPort, const void *args, <a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin)</td></tr>
-<tr class="memdesc:ga037cb2813683697342fff01239c7f6f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote server.  <a href="#ga037cb2813683697342fff01239c7f6f8">More...</a><br /></td></tr>
-<tr class="separator:ga037cb2813683697342fff01239c7f6f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab24204ef309b6e7a52b03b35a7046b45"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__misc.html#gab24204ef309b6e7a52b03b35a7046b45">wiconnect::SocketInterface::connect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, <a class="el" href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">SocketType</a> type, const char *host, uint16_t remortPort, uint16_t localPort, const void *args GPIO_IRQ_ARG)</td></tr>
+<tr class="memdesc:gab24204ef309b6e7a52b03b35a7046b45"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote server.  <a href="#gab24204ef309b6e7a52b03b35a7046b45">More...</a><br /></td></tr>
+<tr class="separator:gab24204ef309b6e7a52b03b35a7046b45"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <p>Miscellaneous socket methods. </p>
@@ -144,7 +138,7 @@
 
 </div>
 </div>
-<a class="anchor" id="ga037cb2813683697342fff01239c7f6f8"></a>
+<a class="anchor" id="gab24204ef309b6e7a52b03b35a7046b45"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -181,14 +175,8 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const void *&#160;</td>
-          <td class="paramname"><em>args</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a>&#160;</td>
-          <td class="paramname"><em>irqPin</em>&#160;</td>
+          <td class="paramtype">const void *args&#160;</td>
+          <td class="paramname"><em>GPIO_IRQ_ARG</em>&#160;</td>
         </tr>
         <tr>
           <td></td>
@@ -208,79 +196,7 @@
     <tr><td class="paramdir">[in]</td><td class="paramname">remortPort</td><td>The port of the remote server </td></tr>
     <tr><td class="paramdir">[in]</td><td class="paramname">localPort</td><td>The port of the module's side of the connection </td></tr>
     <tr><td class="paramdir">[in]</td><td class="paramname">args</td><td>Depedent on the connection type </td></tr>
-    <tr><td class="paramdir">[in]</td><td class="paramname">irqPin</td><td>Data available external interrupt pin. See <a class="el" href="group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a" title="Register a host pin as an external interrupt. When the external interrupt is triggered, the supplied callback is executed. ">registerSocketIrqHandler()</a> for more info </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ga94d1eb5407cb8b60ad366ecbe0e1b52a"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::SocketInterface::registerSocketIrqHandler </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a>&#160;</td>
-          <td class="paramname"><em>irqPin</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="classwiconnect_1_1_callback.html">Callback</a> &amp;&#160;</td>
-          <td class="paramname"><em>handler</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Register a host pin as an external interrupt. When the external interrupt is triggered, the supplied callback is executed. </p>
-<p>This should be called before calling one of the connect methods below with an irqPin parameter.</p>
-<p>Basically how this works is:</p><ol type="1">
-<li>The supplied irqPin is configured as an external interrupt pin.</li>
-<li>A connection is opened and configured with the same irqPin. This irqPin physically connected to a GPIO on the WiFi module.</li>
-<li>When the WiFi module has data to send to the HOST it asserts the irqPin.</li>
-<li>The irqPin interrupt executes and calls the supplied handler.</li>
-<li><p class="startli">The handler should notify the HOST that the given irqPin has triggered and have the associated socket read data from the module.</p>
-<dl class="section note"><dt>Note</dt><dd>arg1 of the handler contains the irqPin</dd></dl>
-<dl class="params"><dt>Parameters</dt><dd>
-  <table class="params">
-    <tr><td class="paramdir">[in]</td><td class="paramname">irqPin</td><td>The HOST pin to configure as an external interrupt. This pin should be physically connected to a module GPIO. </td></tr>
-    <tr><td class="paramdir">[in]</td><td class="paramname">handler</td><td><a class="el" href="classwiconnect_1_1_callback.html" title="Generic callback function. ">Callback</a> to be executed with the external irqPin interrupt triggers </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
-</li>
-</ol>
-
-</div>
-</div>
-<a class="anchor" id="ga820d2fdb12d343212638e55633bd8551"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::SocketInterface::unregisterSocketIrqHandler </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a>&#160;</td>
-          <td class="paramname"><em>irqPin</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Unregister a previously registered IRQ pin. </p>
-<p>This disables the given irqPin as an external interrupt. Refer to <a class="el" href="group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a" title="Register a host pin as an external interrupt. When the external interrupt is triggered, the supplied callback is executed. ">registerSocketIrqHandler()</a> for more information.</p>
-<dl class="params"><dt>Parameters</dt><dd>
-  <table class="params">
-    <tr><td class="paramdir">[in]</td><td class="paramname">irqPin</td><td>The HOST pin to unregister </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">irqPin</td><td>Data available external interrupt pin. See registerSocketIrqHandler() for more info </td></tr>
   </table>
   </dd>
 </dl>
--- a/doc/html/group__api__socket__misc.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__socket__misc.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,7 +1,5 @@
 var group__api__socket__misc =
 [
     [ "closeAllSockets", "group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106", null ],
-    [ "connect", "group__api__socket__misc.html#ga037cb2813683697342fff01239c7f6f8", null ],
-    [ "registerSocketIrqHandler", "group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a", null ],
-    [ "unregisterSocketIrqHandler", "group__api__socket__misc.html#ga820d2fdb12d343212638e55633bd8551", null ]
+    [ "connect", "group__api__socket__misc.html#gab24204ef309b6e7a52b03b35a7046b45", null ]
 ];
\ No newline at end of file
--- a/doc/html/group__api__socket__tcp.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__socket__tcp.html	Mon Oct 27 13:42:26 2014 -0700
@@ -109,15 +109,15 @@
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
 Functions</h2></td></tr>
-<tr class="memitem:ga4a788d604d759b5da51f682b998b9bd2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#ga4a788d604d759b5da51f682b998b9bd2">wiconnect::SocketInterface::tcpConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *host, uint16_t remortPort, <a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin=<a class="el" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>)</td></tr>
-<tr class="memdesc:ga4a788d604d759b5da51f682b998b9bd2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote TCP server.  <a href="#ga4a788d604d759b5da51f682b998b9bd2">More...</a><br /></td></tr>
-<tr class="separator:ga4a788d604d759b5da51f682b998b9bd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga563831b33089437233f128483d034578"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#ga563831b33089437233f128483d034578">wiconnect::SocketInterface::tcpListen</a> (uint16_t listeningPort, int maxClients=0, <a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin=<a class="el" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>)</td></tr>
-<tr class="memdesc:ga563831b33089437233f128483d034578"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start internal TCP server and listen on specified port.  <a href="#ga563831b33089437233f128483d034578">More...</a><br /></td></tr>
-<tr class="separator:ga563831b33089437233f128483d034578"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga0ea4efc810c7c5a9fbd96fcc627633b3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3">wiconnect::SocketInterface::tcpAccept</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, int timeoutMs=<a class="el" href="group__api__core__macro.html#ga580e5f45fee866c845e0d3fd1eb1744a">WICONNECT_WAIT_FOREVER</a>)</td></tr>
-<tr class="memdesc:ga0ea4efc810c7c5a9fbd96fcc627633b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait for next client to connect to TCP server.  <a href="#ga0ea4efc810c7c5a9fbd96fcc627633b3">More...</a><br /></td></tr>
-<tr class="separator:ga0ea4efc810c7c5a9fbd96fcc627633b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad8e8632715a38222ce4fea5fe0aaf527"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#gad8e8632715a38222ce4fea5fe0aaf527">wiconnect::SocketInterface::tcpConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *host, uint16_t remortPort GPIO_IRQ_ARG_NC)</td></tr>
+<tr class="memdesc:gad8e8632715a38222ce4fea5fe0aaf527"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote TCP server.  <a href="#gad8e8632715a38222ce4fea5fe0aaf527">More...</a><br /></td></tr>
+<tr class="separator:gad8e8632715a38222ce4fea5fe0aaf527"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9f4f3e53ea7f4e84d43529da8580aaaa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa">wiconnect::SocketInterface::tcpListen</a> (uint16_t listeningPort, int maxClients=0 GPIO_IRQ_ARG_NC)</td></tr>
+<tr class="memdesc:ga9f4f3e53ea7f4e84d43529da8580aaaa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start internal TCP server and listen on specified port.  <a href="#ga9f4f3e53ea7f4e84d43529da8580aaaa">More...</a><br /></td></tr>
+<tr class="separator:ga9f4f3e53ea7f4e84d43529da8580aaaa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9e12bc568b7e8d72152e53a90de13035"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035">wiconnect::SocketInterface::tcpAccept</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, uint32_t timeoutMs=<a class="el" href="group__api__core__macro.html#ga580e5f45fee866c845e0d3fd1eb1744a">WICONNECT_WAIT_FOREVER</a>)</td></tr>
+<tr class="memdesc:ga9e12bc568b7e8d72152e53a90de13035"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait for next client to connect to TCP server.  <a href="#ga9e12bc568b7e8d72152e53a90de13035">More...</a><br /></td></tr>
+<tr class="separator:ga9e12bc568b7e8d72152e53a90de13035"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga3d0137ebe308674e75f81457c38679d0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0">wiconnect::SocketInterface::tcpServerStop</a> (void)</td></tr>
 <tr class="memdesc:ga3d0137ebe308674e75f81457c38679d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop TCP server from listening on port. Close all connected clients.  <a href="#ga3d0137ebe308674e75f81457c38679d0">More...</a><br /></td></tr>
 <tr class="separator:ga3d0137ebe308674e75f81457c38679d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -125,7 +125,7 @@
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <p>TCP methods. </p>
 <h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="ga0ea4efc810c7c5a9fbd96fcc627633b3"></a>
+<a class="anchor" id="ga9e12bc568b7e8d72152e53a90de13035"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -138,7 +138,7 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">int&#160;</td>
+          <td class="paramtype">uint32_t&#160;</td>
           <td class="paramname"><em>timeoutMs</em> = <code><a class="el" href="group__api__core__macro.html#ga580e5f45fee866c845e0d3fd1eb1744a">WICONNECT_WAIT_FOREVER</a></code>&#160;</td>
         </tr>
         <tr>
@@ -161,7 +161,7 @@
 
 </div>
 </div>
-<a class="anchor" id="ga4a788d604d759b5da51f682b998b9bd2"></a>
+<a class="anchor" id="gad8e8632715a38222ce4fea5fe0aaf527"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -180,14 +180,8 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">uint16_t&#160;</td>
-          <td class="paramname"><em>remortPort</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a>&#160;</td>
-          <td class="paramname"><em>irqPin</em> = <code><a class="el" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a></code>&#160;</td>
+          <td class="paramtype">uint16_t remortPort&#160;</td>
+          <td class="paramname"><em>GPIO_IRQ_ARG_NC</em>&#160;</td>
         </tr>
         <tr>
           <td></td>
@@ -203,7 +197,7 @@
     <tr><td class="paramdir">[out]</td><td class="paramname">socket</td><td>TCP <a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> object of opened connection. </td></tr>
     <tr><td class="paramdir">[in]</td><td class="paramname">host</td><td>The host/IP address of the remote TCP server </td></tr>
     <tr><td class="paramdir">[in]</td><td class="paramname">remortPort</td><td>The port of the remote server </td></tr>
-    <tr><td class="paramdir">[in]</td><td class="paramname">irqPin</td><td>Optional, Data available external interrupt pin. See <a class="el" href="group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a" title="Register a host pin as an external interrupt. When the external interrupt is triggered, the supplied callback is executed. ">registerSocketIrqHandler()</a> for more info </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">irqPin</td><td>Optional, Data available external interrupt pin. See registerSocketIrqHandler() for more info </td></tr>
   </table>
   </dd>
 </dl>
@@ -211,7 +205,7 @@
 
 </div>
 </div>
-<a class="anchor" id="ga563831b33089437233f128483d034578"></a>
+<a class="anchor" id="ga9f4f3e53ea7f4e84d43529da8580aaaa"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -225,13 +219,7 @@
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>maxClients</em> = <code>0</code>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a>&#160;</td>
-          <td class="paramname"><em>irqPin</em> = <code><a class="el" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a></code>&#160;</td>
+          <td class="paramname"><em>maxClients</em> = <code>0&#160;GPIO_IRQ_ARG_NC</code>&#160;</td>
         </tr>
         <tr>
           <td></td>
@@ -246,7 +234,7 @@
   <table class="params">
     <tr><td class="paramdir">[in]</td><td class="paramname">listeningPort</td><td>The local port the server should listen on </td></tr>
     <tr><td class="paramdir">[in]</td><td class="paramname">maxClients</td><td>Optional, the maximum simultaneous connected clients, 0 is default, 1-8 valid range </td></tr>
-    <tr><td class="paramdir">[in]</td><td class="paramname">irqPin</td><td>Optional, Data available external interrupt pin. See <a class="el" href="group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a" title="Register a host pin as an external interrupt. When the external interrupt is triggered, the supplied callback is executed. ">registerSocketIrqHandler()</a> for more info </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">irqPin</td><td>Optional, Data available external interrupt pin. See registerSocketIrqHandler() for more info </td></tr>
   </table>
   </dd>
 </dl>
--- a/doc/html/group__api__socket__tcp.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__socket__tcp.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,7 +1,7 @@
 var group__api__socket__tcp =
 [
-    [ "tcpAccept", "group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3", null ],
-    [ "tcpConnect", "group__api__socket__tcp.html#ga4a788d604d759b5da51f682b998b9bd2", null ],
-    [ "tcpListen", "group__api__socket__tcp.html#ga563831b33089437233f128483d034578", null ],
+    [ "tcpAccept", "group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035", null ],
+    [ "tcpConnect", "group__api__socket__tcp.html#gad8e8632715a38222ce4fea5fe0aaf527", null ],
+    [ "tcpListen", "group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa", null ],
     [ "tcpServerStop", "group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0", null ]
 ];
\ No newline at end of file
--- a/doc/html/group__api__socket__tls.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__socket__tls.html	Mon Oct 27 13:42:26 2014 -0700
@@ -109,14 +109,14 @@
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
 Functions</h2></td></tr>
-<tr class="memitem:gacf10d28ced4591d99c4113ebee6382ca"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tls.html#gacf10d28ced4591d99c4113ebee6382ca">wiconnect::SocketInterface::tlsConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *host, uint16_t remortPort, const char *certFilename=NULL, <a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin=<a class="el" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>)</td></tr>
-<tr class="memdesc:gacf10d28ced4591d99c4113ebee6382ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote TLS server.  <a href="#gacf10d28ced4591d99c4113ebee6382ca">More...</a><br /></td></tr>
-<tr class="separator:gacf10d28ced4591d99c4113ebee6382ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4e6e89eb9aedec1ff6d25645c33f51e4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__tls.html#ga4e6e89eb9aedec1ff6d25645c33f51e4">wiconnect::SocketInterface::tlsConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *host, uint16_t remortPort, const char *certFilename=NULL GPIO_IRQ_ARG_NC)</td></tr>
+<tr class="memdesc:ga4e6e89eb9aedec1ff6d25645c33f51e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote TLS server.  <a href="#ga4e6e89eb9aedec1ff6d25645c33f51e4">More...</a><br /></td></tr>
+<tr class="separator:ga4e6e89eb9aedec1ff6d25645c33f51e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <p>TLS methods. </p>
 <h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="gacf10d28ced4591d99c4113ebee6382ca"></a>
+<a class="anchor" id="ga4e6e89eb9aedec1ff6d25645c33f51e4"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -142,13 +142,7 @@
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">const char *&#160;</td>
-          <td class="paramname"><em>certFilename</em> = <code>NULL</code>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a>&#160;</td>
-          <td class="paramname"><em>irqPin</em> = <code><a class="el" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a></code>&#160;</td>
+          <td class="paramname"><em>certFilename</em> = <code>NULL&#160;GPIO_IRQ_ARG_NC</code>&#160;</td>
         </tr>
         <tr>
           <td></td>
@@ -165,7 +159,7 @@
     <tr><td class="paramdir">[in]</td><td class="paramname">host</td><td>The host/IP address of the remote TLS server </td></tr>
     <tr><td class="paramdir">[in]</td><td class="paramname">remortPort</td><td>The port of the remote server </td></tr>
     <tr><td class="paramdir">[in]</td><td class="paramname">certFilename</td><td>Optional, filename of certificate on module's file system </td></tr>
-    <tr><td class="paramdir">[in]</td><td class="paramname">irqPin</td><td>Optional, Data available external interrupt pin. See <a class="el" href="group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a" title="Register a host pin as an external interrupt. When the external interrupt is triggered, the supplied callback is executed. ">registerSocketIrqHandler()</a> for more info </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">irqPin</td><td>Optional, Data available external interrupt pin. See registerSocketIrqHandler() for more info </td></tr>
   </table>
   </dd>
 </dl>
--- a/doc/html/group__api__socket__tls.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__socket__tls.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,4 +1,4 @@
 var group__api__socket__tls =
 [
-    [ "tlsConnect", "group__api__socket__tls.html#gacf10d28ced4591d99c4113ebee6382ca", null ]
+    [ "tlsConnect", "group__api__socket__tls.html#ga4e6e89eb9aedec1ff6d25645c33f51e4", null ]
 ];
\ No newline at end of file
--- a/doc/html/group__api__socket__types.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__socket__types.html	Mon Oct 27 13:42:26 2014 -0700
@@ -119,6 +119,9 @@
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwiconnect_1_1_wiconnect_socket.html">wiconnect::WiconnectSocket</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connection object to remote server.  <a href="classwiconnect_1_1_wiconnect_socket.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwiconnect_1_1_wiconnect_udp_server.html">wiconnect::WiconnectUdpServer</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">UDP Server Listening socket.  <a href="classwiconnect_1_1_wiconnect_udp_server.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
 Enumerations</h2></td></tr>
@@ -131,7 +134,11 @@
 <br />
 &#160;&#160;<a class="el" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756dab1b41b1c4daf8d171414b68e9033cfbc">wiconnect::SOCKET_TYPE_UDP</a>, 
 <br />
-&#160;&#160;<a class="el" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751">wiconnect::SOCKET_TYPE_HTTP</a>
+&#160;&#160;<a class="el" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751">wiconnect::SOCKET_TYPE_HTTP</a>, 
+<br />
+&#160;&#160;<a class="el" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da77625728d545a400e0eae1483225ff91">wiconnect::SOCKET_TYPE_UDPS</a>, 
+<br />
+&#160;&#160;<a class="el" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da94c82597ad724e81c0bace9ed64ebc5f">wiconnect::SOCKET_TYPE_GHM</a>
 <br />
  }</td></tr>
 <tr class="memdesc:ga69dc55558df4c81599c5fb3dff98756d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Socket type.  <a href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">More...</a><br /></td></tr>
@@ -173,7 +180,7 @@
 </td></tr>
 </table>
 
-<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00337">337</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
+<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00353">353</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
 
 </div>
 </div>
@@ -202,11 +209,17 @@
 <p>UDP Socket type. </p>
 </td></tr>
 <tr><td class="fieldname"><a class="anchor" id="gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751"></a>SOCKET_TYPE_HTTP&#160;</td><td class="fielddoc">
-<p>HTTP Socket type. </p>
+<p>HTTP Socket type,. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="gga69dc55558df4c81599c5fb3dff98756da77625728d545a400e0eae1483225ff91"></a>SOCKET_TYPE_UDPS&#160;</td><td class="fielddoc">
+<p>UDP Server Socket type. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="gga69dc55558df4c81599c5fb3dff98756da94c82597ad724e81c0bace9ed64ebc5f"></a>SOCKET_TYPE_GHM&#160;</td><td class="fielddoc">
+<p>goHACK.me message type </p>
 </td></tr>
 </table>
 
-<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00324">324</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
+<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00338">338</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
 
 </div>
 </div>
--- a/doc/html/group__api__socket__types.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__socket__types.js	Mon Oct 27 13:42:26 2014 -0700
@@ -2,21 +2,20 @@
 [
     [ "SocketInterface", "classwiconnect_1_1_socket_interface.html", [
       [ "closeAllSockets", "group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106", null ],
-      [ "connect", "group__api__socket__misc.html#ga037cb2813683697342fff01239c7f6f8", null ],
+      [ "connect", "group__api__socket__misc.html#gab24204ef309b6e7a52b03b35a7046b45", null ],
       [ "httpAddHeader", "group__api__socket__http.html#gabed18edc44f464bac64ce8a6dc3617ec", null ],
       [ "httpConnect", "group__api__socket__http.html#ga181a03d883f60dff0c03b65e066f0eed", null ],
       [ "httpGet", "group__api__socket__http.html#gac9b6c6a348f790cc8d43889dd72029f6", null ],
       [ "httpGetStatus", "group__api__socket__http.html#gadf59ca0783b89ee32f205e33f1bd5517", null ],
       [ "httpHead", "group__api__socket__http.html#gabcb3d69b2b1718e7ebe1ed171dec1f85", null ],
       [ "httpPost", "group__api__socket__http.html#ga1b6a3ebdbd164f0eb683fc335ef4d365", null ],
-      [ "registerSocketIrqHandler", "group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a", null ],
-      [ "tcpAccept", "group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3", null ],
-      [ "tcpConnect", "group__api__socket__tcp.html#ga4a788d604d759b5da51f682b998b9bd2", null ],
-      [ "tcpListen", "group__api__socket__tcp.html#ga563831b33089437233f128483d034578", null ],
+      [ "tcpAccept", "group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035", null ],
+      [ "tcpConnect", "group__api__socket__tcp.html#gad8e8632715a38222ce4fea5fe0aaf527", null ],
+      [ "tcpListen", "group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa", null ],
       [ "tcpServerStop", "group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0", null ],
-      [ "tlsConnect", "group__api__socket__tls.html#gacf10d28ced4591d99c4113ebee6382ca", null ],
-      [ "udpConnect", "group__api__socket__udp.html#ga80f1d19174124f3d0f246e1c1201b3ec", null ],
-      [ "unregisterSocketIrqHandler", "group__api__socket__misc.html#ga820d2fdb12d343212638e55633bd8551", null ]
+      [ "tlsConnect", "group__api__socket__tls.html#ga4e6e89eb9aedec1ff6d25645c33f51e4", null ],
+      [ "udpConnect", "group__api__socket__udp.html#ga0ca5eabcd64ce45b574205447101f8aa", null ],
+      [ "udpListen", "group__api__socket__udp.html#ga067fb0d662d8e27e3f5b561ded29a51a", null ]
     ] ],
     [ "HttpSocketArgs", "structwiconnect_1_1_http_socket_args.html", [
       [ "certName", "structwiconnect_1_1_http_socket_args.html#a6dda2d739bd2c43d1b63d7a526ecf95c", null ],
@@ -25,6 +24,7 @@
       [ "type", "structwiconnect_1_1_http_socket_args.html#adffa0b3f63392a28c19aef272c918772", null ]
     ] ],
     [ "WiconnectSocket", "classwiconnect_1_1_wiconnect_socket.html", null ],
+    [ "WiconnectUdpServer", "classwiconnect_1_1_wiconnect_udp_server.html", null ],
     [ "HttpSocketType", "group__api__socket__types.html#gadc1d6e26d4138c536bd5dce7ed4569d6", [
       [ "SOCKET_HTTP_GET", "group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6afc257aa28936e9fa8a332995b5449685", null ],
       [ "SOCKET_HTTP_POST", "group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6ab271a5cd1775076aeb8c25fc14da12cb", null ],
@@ -35,6 +35,8 @@
       [ "SOCKET_TYPE_TCP", "group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756daece967eb28f8913c30bc70fa1e0e5ff9", null ],
       [ "SOCKET_TYPE_TLS", "group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da0c365c200e62d61bf22798c25ccb96b4", null ],
       [ "SOCKET_TYPE_UDP", "group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756dab1b41b1c4daf8d171414b68e9033cfbc", null ],
-      [ "SOCKET_TYPE_HTTP", "group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751", null ]
+      [ "SOCKET_TYPE_HTTP", "group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751", null ],
+      [ "SOCKET_TYPE_UDPS", "group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da77625728d545a400e0eae1483225ff91", null ],
+      [ "SOCKET_TYPE_GHM", "group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da94c82597ad724e81c0bace9ed64ebc5f", null ]
     ] ]
 ];
\ No newline at end of file
--- a/doc/html/group__api__socket__udp.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__socket__udp.html	Mon Oct 27 13:42:26 2014 -0700
@@ -109,14 +109,17 @@
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
 Functions</h2></td></tr>
-<tr class="memitem:ga80f1d19174124f3d0f246e1c1201b3ec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__udp.html#ga80f1d19174124f3d0f246e1c1201b3ec">wiconnect::SocketInterface::udpConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *host, uint16_t remortPort, uint16_t localPort=<a class="el" href="group__api__socket__macro.html#gae54117ebe433295ef992b9ca83c46d98">SOCKET_ANY_PORT</a>, <a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> irqPin=<a class="el" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>)</td></tr>
-<tr class="memdesc:ga80f1d19174124f3d0f246e1c1201b3ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote UDP server.  <a href="#ga80f1d19174124f3d0f246e1c1201b3ec">More...</a><br /></td></tr>
-<tr class="separator:ga80f1d19174124f3d0f246e1c1201b3ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0ca5eabcd64ce45b574205447101f8aa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__udp.html#ga0ca5eabcd64ce45b574205447101f8aa">wiconnect::SocketInterface::udpConnect</a> (<a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a> &amp;socket, const char *host, uint16_t remortPort, uint16_t localPort=<a class="el" href="group__api__socket__macro.html#gae54117ebe433295ef992b9ca83c46d98">SOCKET_ANY_PORT</a> GPIO_IRQ_ARG_NC)</td></tr>
+<tr class="memdesc:ga0ca5eabcd64ce45b574205447101f8aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to remote UDP server.  <a href="#ga0ca5eabcd64ce45b574205447101f8aa">More...</a><br /></td></tr>
+<tr class="separator:ga0ca5eabcd64ce45b574205447101f8aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga067fb0d662d8e27e3f5b561ded29a51a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__socket__udp.html#ga067fb0d662d8e27e3f5b561ded29a51a">wiconnect::SocketInterface::udpListen</a> (<a class="el" href="classwiconnect_1_1_wiconnect_udp_server.html">WiconnectUdpServer</a> &amp;udpServer, uint16_t listeningPort)</td></tr>
+<tr class="memdesc:ga067fb0d662d8e27e3f5b561ded29a51a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start a UDP server listening on the given port.  <a href="#ga067fb0d662d8e27e3f5b561ded29a51a">More...</a><br /></td></tr>
+<tr class="separator:ga067fb0d662d8e27e3f5b561ded29a51a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <p>UDP methods. </p>
 <h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="ga80f1d19174124f3d0f246e1c1201b3ec"></a>
+<a class="anchor" id="ga0ca5eabcd64ce45b574205447101f8aa"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -142,13 +145,7 @@
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">uint16_t&#160;</td>
-          <td class="paramname"><em>localPort</em> = <code><a class="el" href="group__api__socket__macro.html#gae54117ebe433295ef992b9ca83c46d98">SOCKET_ANY_PORT</a></code>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a>&#160;</td>
-          <td class="paramname"><em>irqPin</em> = <code><a class="el" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a></code>&#160;</td>
+          <td class="paramname"><em>localPort</em> = <code><a class="el" href="group__api__socket__macro.html#gae54117ebe433295ef992b9ca83c46d98">SOCKET_ANY_PORT</a>&#160;GPIO_IRQ_ARG_NC</code>&#160;</td>
         </tr>
         <tr>
           <td></td>
@@ -165,7 +162,43 @@
     <tr><td class="paramdir">[in]</td><td class="paramname">host</td><td>The host/IP address of the remote UDP server </td></tr>
     <tr><td class="paramdir">[in]</td><td class="paramname">remortPort</td><td>The port of the remote server </td></tr>
     <tr><td class="paramdir">[in]</td><td class="paramname">localPort</td><td>Optional, port of module's side of the connection </td></tr>
-    <tr><td class="paramdir">[in]</td><td class="paramname">irqPin</td><td>Optional, Data available external interrupt pin. See <a class="el" href="group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a" title="Register a host pin as an external interrupt. When the external interrupt is triggered, the supplied callback is executed. ">registerSocketIrqHandler()</a> for more info </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">irqPin</td><td>Optional, Data available external interrupt pin. See registerSocketIrqHandler() for more info </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result of method. See <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga067fb0d662d8e27e3f5b561ded29a51a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnect::SocketInterface::udpListen </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classwiconnect_1_1_wiconnect_udp_server.html">WiconnectUdpServer</a> &amp;&#160;</td>
+          <td class="paramname"><em>udpServer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint16_t&#160;</td>
+          <td class="paramname"><em>listeningPort</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Start a UDP server listening on the given port. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[out]</td><td class="paramname">udpServer</td><td>UDP <a class="el" href="classwiconnect_1_1_wiconnect_udp_server.html">WiconnectUdpServer</a> object listening server </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">listeningPort</td><td>The port the UDP server listens on </td></tr>
   </table>
   </dd>
 </dl>
--- a/doc/html/group__api__socket__udp.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__api__socket__udp.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,4 +1,5 @@
 var group__api__socket__udp =
 [
-    [ "udpConnect", "group__api__socket__udp.html#ga80f1d19174124f3d0f246e1c1201b3ec", null ]
+    [ "udpConnect", "group__api__socket__udp.html#ga0ca5eabcd64ce45b574205447101f8aa", null ],
+    [ "udpListen", "group__api__socket__udp.html#ga067fb0d662d8e27e3f5b561ded29a51a", null ]
 ];
\ No newline at end of file
--- a/doc/html/group__conversion__util.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__conversion__util.html	Mon Oct 27 13:42:26 2014 -0700
@@ -127,10 +127,10 @@
 static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#ga93bdb8669a70adaa61dc76073ce66591">wiconnect::NetworkInterface::strToIp</a> (const char *str, uint32_t *intPtr)</td></tr>
 <tr class="memdesc:ga93bdb8669a70adaa61dc76073ce66591"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert string to IP address. <br /></td></tr>
 <tr class="separator:ga93bdb8669a70adaa61dc76073ce66591"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gaff8b0af70f4d4be792b943ad3af27303"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaff8b0af70f4d4be792b943ad3af27303"></a>
-static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#gaff8b0af70f4d4be792b943ad3af27303">wiconnect::NetworkInterface::ipToStr</a> (uint32_t ip, char *ipStrBuffer=NULL)</td></tr>
-<tr class="memdesc:gaff8b0af70f4d4be792b943ad3af27303"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert IP address to string. <br /></td></tr>
-<tr class="separator:gaff8b0af70f4d4be792b943ad3af27303"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga02e6b01f11f2283208f051b1b49b634c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga02e6b01f11f2283208f051b1b49b634c"></a>
+static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#ga02e6b01f11f2283208f051b1b49b634c">wiconnect::NetworkInterface::ipToStr</a> (uint32_t ip, char *ipStrBuffer ALLOW_NULL_STRING_BUFFER)</td></tr>
+<tr class="memdesc:ga02e6b01f11f2283208f051b1b49b634c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert IP address to string. <br /></td></tr>
+<tr class="separator:ga02e6b01f11f2283208f051b1b49b634c"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:gacff5a4927d79e8b4c0d5a3050f5950b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacff5a4927d79e8b4c0d5a3050f5950b0"></a>
 static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#gacff5a4927d79e8b4c0d5a3050f5950b0">wiconnect::NetworkInterface::networkStatusToStr</a> (NetworkStatus status)</td></tr>
 <tr class="memdesc:gacff5a4927d79e8b4c0d5a3050f5950b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert <a class="el" href="group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99">NetworkStatus</a> to string. <br /></td></tr>
@@ -159,18 +159,18 @@
 static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#ga6a479a58591ead92dcf0586e11fcad17">wiconnect::NetworkInterface::strToSsid</a> (const char *str, Ssid *ssid)</td></tr>
 <tr class="memdesc:ga6a479a58591ead92dcf0586e11fcad17"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert string <a class="el" href="structwiconnect_1_1_ssid.html">Ssid</a>. <br /></td></tr>
 <tr class="separator:ga6a479a58591ead92dcf0586e11fcad17"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gafce7929a10e16cf9be7307a2f97bef3f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gafce7929a10e16cf9be7307a2f97bef3f"></a>
-static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#gafce7929a10e16cf9be7307a2f97bef3f">wiconnect::NetworkInterface::ssidToStr</a> (const Ssid *ssid, char *ssidStrBuffer=NULL)</td></tr>
-<tr class="memdesc:gafce7929a10e16cf9be7307a2f97bef3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert <a class="el" href="structwiconnect_1_1_ssid.html">Ssid</a> to string. <br /></td></tr>
-<tr class="separator:gafce7929a10e16cf9be7307a2f97bef3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae8b534c249d503aa764017bb088f3890"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae8b534c249d503aa764017bb088f3890"></a>
+static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#gae8b534c249d503aa764017bb088f3890">wiconnect::NetworkInterface::ssidToStr</a> (const Ssid *ssid, char *ssidStrBuffer ALLOW_NULL_STRING_BUFFER)</td></tr>
+<tr class="memdesc:gae8b534c249d503aa764017bb088f3890"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert <a class="el" href="structwiconnect_1_1_ssid.html">Ssid</a> to string. <br /></td></tr>
+<tr class="separator:gae8b534c249d503aa764017bb088f3890"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga347f05073370d6872a5cdac74de39b1b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga347f05073370d6872a5cdac74de39b1b"></a>
 static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#ga347f05073370d6872a5cdac74de39b1b">wiconnect::NetworkInterface::strToMacAddress</a> (const char *str, MacAddress *macAddress)</td></tr>
 <tr class="memdesc:ga347f05073370d6872a5cdac74de39b1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert string <a class="el" href="structwiconnect_1_1_mac_address.html">MacAddress</a>. <br /></td></tr>
 <tr class="separator:ga347f05073370d6872a5cdac74de39b1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga13ecaf390b4bf4a68b51a6b18e669134"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga13ecaf390b4bf4a68b51a6b18e669134"></a>
-static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#ga13ecaf390b4bf4a68b51a6b18e669134">wiconnect::NetworkInterface::macAddressToStr</a> (const MacAddress *macAddress, char *macStrBuffer=NULL)</td></tr>
-<tr class="memdesc:ga13ecaf390b4bf4a68b51a6b18e669134"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert <a class="el" href="structwiconnect_1_1_mac_address.html">MacAddress</a> to string. <br /></td></tr>
-<tr class="separator:ga13ecaf390b4bf4a68b51a6b18e669134"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga01520d55f1923d90fb899ddef2f21cdf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga01520d55f1923d90fb899ddef2f21cdf"></a>
+static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#ga01520d55f1923d90fb899ddef2f21cdf">wiconnect::NetworkInterface::macAddressToStr</a> (const MacAddress *macAddress, char *macStrBuffer ALLOW_NULL_STRING_BUFFER)</td></tr>
+<tr class="memdesc:ga01520d55f1923d90fb899ddef2f21cdf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert <a class="el" href="structwiconnect_1_1_mac_address.html">MacAddress</a> to string. <br /></td></tr>
+<tr class="separator:ga01520d55f1923d90fb899ddef2f21cdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:gac96e2d2fca60cba12e7429626f9186be"><td class="memItemLeft" align="right" valign="top">static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__conversion__util.html#gac96e2d2fca60cba12e7429626f9186be">wiconnect::Wiconnect::getWiconnectResultStr</a> (<a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> wiconnectResult)</td></tr>
 <tr class="memdesc:gac96e2d2fca60cba12e7429626f9186be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts a <a class="el" href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">WiconnectResult</a> to string representation.  <a href="#gac96e2d2fca60cba12e7429626f9186be">More...</a><br /></td></tr>
 <tr class="separator:gac96e2d2fca60cba12e7429626f9186be"><td class="memSeparator" colspan="2">&#160;</td></tr>
--- a/doc/html/group__conversion__util.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/group__conversion__util.js	Mon Oct 27 13:42:26 2014 -0700
@@ -5,14 +5,14 @@
     [ "fileVersionIntToStr", "group__conversion__util.html#gad74fbe6faf90d987b31380978f3ea341", null ],
     [ "fileVersionStrToInt", "group__conversion__util.html#gae995028f5a70c58ccf6013c9811e79aa", null ],
     [ "getWiconnectResultStr", "group__conversion__util.html#gac96e2d2fca60cba12e7429626f9186be", null ],
-    [ "ipToStr", "group__conversion__util.html#gaff8b0af70f4d4be792b943ad3af27303", null ],
-    [ "macAddressToStr", "group__conversion__util.html#ga13ecaf390b4bf4a68b51a6b18e669134", null ],
+    [ "ipToStr", "group__conversion__util.html#ga02e6b01f11f2283208f051b1b49b634c", null ],
+    [ "macAddressToStr", "group__conversion__util.html#ga01520d55f1923d90fb899ddef2f21cdf", null ],
     [ "networkJoinResultToStr", "group__conversion__util.html#ga5a682e671900b9b7f931137deb847fa6", null ],
     [ "networkSecurityToStr", "group__conversion__util.html#gae02c549079cfb0350117cd6343a3d66f", null ],
     [ "networkStatusToStr", "group__conversion__util.html#gacff5a4927d79e8b4c0d5a3050f5950b0", null ],
     [ "rssiToSignalStrength", "group__conversion__util.html#ga6216eed4cc05c37ce1ed13a0fbb6acd8", null ],
     [ "signalStrengthToStr", "group__conversion__util.html#gad4661f859cfadbe193793898671043c9", null ],
-    [ "ssidToStr", "group__conversion__util.html#gafce7929a10e16cf9be7307a2f97bef3f", null ],
+    [ "ssidToStr", "group__conversion__util.html#gae8b534c249d503aa764017bb088f3890", null ],
     [ "strToIp", "group__conversion__util.html#ga93bdb8669a70adaa61dc76073ce66591", null ],
     [ "strToMacAddress", "group__conversion__util.html#ga347f05073370d6872a5cdac74de39b1b", null ],
     [ "strToNetworkSecurity", "group__conversion__util.html#gad7d49be19f9ca91bc129668dd50d9e57", null ],
--- a/doc/html/hierarchy.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/hierarchy.html	Mon Oct 27 13:42:26 2014 -0700
@@ -118,20 +118,27 @@
 <tr id="row_2_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_callback.html" target="_self">wiconnect::Callback</a></td><td class="desc">Generic callback function </td></tr>
 <tr id="row_2_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_log_func.html" target="_self">wiconnect::LogFunc</a></td><td class="desc">Logging callback function </td></tr>
 <tr id="row_2_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_reader_func.html" target="_self">wiconnect::ReaderFunc</a></td><td class="desc">Generic data reading callback function </td></tr>
-<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwiconnect_1_1_http_socket_args.html" target="_self">wiconnect::HttpSocketArgs</a></td><td class="desc">Struct for hold HTTP socket configuration </td></tr>
-<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwiconnect_1_1_mac_address.html" target="_self">wiconnect::MacAddress</a></td><td class="desc">Network MAC Address type </td></tr>
-<tr id="row_5_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_5_" class="arrow" onclick="toggleFolder('5_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_network_interface.html" target="_self">wiconnect::NetworkInterface</a></td><td class="desc">The provides an interface for joining and/or creating a network. It provides other utilities such as scanning for networks, pinging a network, resolving a domain name to IP address </td></tr>
+<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwiconnect_1_1_ghm_element.html" target="_self">wiconnect::GhmElement</a></td><td class="desc">GoHACK.me stream or control value </td></tr>
+<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwiconnect_1_1_ghm_element_array.html" target="_self">wiconnect::GhmElementArray</a></td><td class="desc">Array of goHACK.me stream or control values </td></tr>
+<tr id="row_5_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_5_" class="arrow" onclick="toggleFolder('5_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_ghm_interface.html" target="_self">wiconnect::GhmInterface</a></td><td class="desc">The provides an interface for <a href="http://goHACK.me">http://goHACK.me</a> </td></tr>
 <tr id="row_5_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_wiconnect.html" target="_self">wiconnect::Wiconnect</a></td><td class="desc">The root WiConnect library class. This class inheriets all WiConnect functionality </td></tr>
-<tr id="row_6_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_queued_command.html" target="_self">wiconnect::QueuedCommand</a></td><td class="desc">Class which contains command for asynchronous processing </td></tr>
-<tr id="row_7_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_scan_result.html" target="_self">wiconnect::ScanResult</a></td><td class="desc">Contains single entry from WiFi scan results </td></tr>
-<tr id="row_8_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_scan_result_list.html" target="_self">wiconnect::ScanResultList</a></td><td class="desc">List of WiFi network scan results </td></tr>
-<tr id="row_9_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_serial_config.html" target="_self">wiconnect::SerialConfig</a></td><td class="desc">Host&lt;-&gt;<a class="el" href="classwiconnect_1_1_wiconnect.html" title="The root WiConnect library class. This class inheriets all WiConnect functionality. ">Wiconnect</a> Module serial configuration </td></tr>
-<tr id="row_10_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_10_" class="arrow" onclick="toggleFolder('10_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_socket_interface.html" target="_self">wiconnect::SocketInterface</a></td><td class="desc">The provides an interface for creating TCP/UDP/TLS/HTTP client sockets. A client socket connects to a remote server </td></tr>
+<tr id="row_6_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_ghm_message.html" target="_self">wiconnect::GhmMessage</a></td><td class="desc">Contains single entry from goHACK.me message listing </td></tr>
+<tr id="row_7_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_ghm_message_list.html" target="_self">wiconnect::GhmMessageList</a></td><td class="desc">List of goHACK.me messages </td></tr>
+<tr id="row_8_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwiconnect_1_1_http_socket_args.html" target="_self">wiconnect::HttpSocketArgs</a></td><td class="desc">Struct for hold HTTP socket configuration </td></tr>
+<tr id="row_9_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwiconnect_1_1_mac_address.html" target="_self">wiconnect::MacAddress</a></td><td class="desc">Network MAC Address type </td></tr>
+<tr id="row_10_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_10_" class="arrow" onclick="toggleFolder('10_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_network_interface.html" target="_self">wiconnect::NetworkInterface</a></td><td class="desc">The provides an interface for joining and/or creating a network. It provides other utilities such as scanning for networks, pinging a network, resolving a domain name to IP address </td></tr>
 <tr id="row_10_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_wiconnect.html" target="_self">wiconnect::Wiconnect</a></td><td class="desc">The root WiConnect library class. This class inheriets all WiConnect functionality </td></tr>
-<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwiconnect_1_1_ssid.html" target="_self">wiconnect::Ssid</a></td><td class="desc">Network SSID type </td></tr>
-<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_string_util.html" target="_self">StringUtil</a></td><td class="desc"></td></tr>
-<tr id="row_13_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_wiconnect_file.html" target="_self">wiconnect::WiconnectFile</a></td><td class="desc">WiConnect WiFi module file object </td></tr>
-<tr id="row_14_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_wiconnect_socket.html" target="_self">wiconnect::WiconnectSocket</a></td><td class="desc">Connection object to remote server </td></tr>
+<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_queued_command.html" target="_self">wiconnect::QueuedCommand</a></td><td class="desc">Class which contains command for asynchronous processing </td></tr>
+<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_scan_result.html" target="_self">wiconnect::ScanResult</a></td><td class="desc">Contains single entry from WiFi scan results </td></tr>
+<tr id="row_13_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_scan_result_list.html" target="_self">wiconnect::ScanResultList</a></td><td class="desc">List of WiFi network scan results </td></tr>
+<tr id="row_14_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_serial_config.html" target="_self">wiconnect::SerialConfig</a></td><td class="desc">Host&lt;-&gt;<a class="el" href="classwiconnect_1_1_wiconnect.html" title="The root WiConnect library class. This class inheriets all WiConnect functionality. ">Wiconnect</a> Module serial configuration </td></tr>
+<tr id="row_15_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_15_" class="arrow" onclick="toggleFolder('15_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_socket_interface.html" target="_self">wiconnect::SocketInterface</a></td><td class="desc">The provides an interface for creating TCP/UDP/TLS/HTTP client sockets. A client socket connects to a remote server </td></tr>
+<tr id="row_15_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_wiconnect.html" target="_self">wiconnect::Wiconnect</a></td><td class="desc">The root WiConnect library class. This class inheriets all WiConnect functionality </td></tr>
+<tr id="row_16_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structwiconnect_1_1_ssid.html" target="_self">wiconnect::Ssid</a></td><td class="desc">Network SSID type </td></tr>
+<tr id="row_17_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_string_util.html" target="_self">StringUtil</a></td><td class="desc"></td></tr>
+<tr id="row_18_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_wiconnect_file.html" target="_self">wiconnect::WiconnectFile</a></td><td class="desc">WiConnect WiFi module file object </td></tr>
+<tr id="row_19_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_19_" class="arrow" onclick="toggleFolder('19_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_wiconnect_socket.html" target="_self">wiconnect::WiconnectSocket</a></td><td class="desc">Connection object to remote server </td></tr>
+<tr id="row_19_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwiconnect_1_1_wiconnect_udp_server.html" target="_self">wiconnect::WiconnectUdpServer</a></td><td class="desc">UDP Server Listening socket </td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->
--- a/doc/html/hierarchy.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/hierarchy.js	Mon Oct 27 13:42:26 2014 -0700
@@ -9,6 +9,13 @@
       [ "wiconnect::LogFunc", "classwiconnect_1_1_log_func.html", null ],
       [ "wiconnect::ReaderFunc", "classwiconnect_1_1_reader_func.html", null ]
     ] ],
+    [ "wiconnect::GhmElement", "structwiconnect_1_1_ghm_element.html", null ],
+    [ "wiconnect::GhmElementArray", "structwiconnect_1_1_ghm_element_array.html", null ],
+    [ "wiconnect::GhmInterface", "classwiconnect_1_1_ghm_interface.html", [
+      [ "wiconnect::Wiconnect", "classwiconnect_1_1_wiconnect.html", null ]
+    ] ],
+    [ "wiconnect::GhmMessage", "classwiconnect_1_1_ghm_message.html", null ],
+    [ "wiconnect::GhmMessageList", "classwiconnect_1_1_ghm_message_list.html", null ],
     [ "wiconnect::HttpSocketArgs", "structwiconnect_1_1_http_socket_args.html", null ],
     [ "wiconnect::MacAddress", "structwiconnect_1_1_mac_address.html", null ],
     [ "wiconnect::NetworkInterface", "classwiconnect_1_1_network_interface.html", [
@@ -24,5 +31,7 @@
     [ "wiconnect::Ssid", "structwiconnect_1_1_ssid.html", null ],
     [ "StringUtil", "class_string_util.html", null ],
     [ "wiconnect::WiconnectFile", "classwiconnect_1_1_wiconnect_file.html", null ],
-    [ "wiconnect::WiconnectSocket", "classwiconnect_1_1_wiconnect_socket.html", null ]
+    [ "wiconnect::WiconnectSocket", "classwiconnect_1_1_wiconnect_socket.html", [
+      [ "wiconnect::WiconnectUdpServer", "classwiconnect_1_1_wiconnect_udp_server.html", null ]
+    ] ]
 ];
\ No newline at end of file
--- a/doc/html/http__get_2example_8cpp_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/http__get_2example_8cpp_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -219,10 +219,10 @@
 <div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;}</div>
 <div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;</div>
 <div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div>
-<div class="ttc" id="classwiconnect_1_1_serial_config_html"><div class="ttname"><a href="classwiconnect_1_1_serial_config.html">wiconnect::SerialConfig</a></div><div class="ttdoc">Host<->Wiconnect Module serial configuration. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00129">sdk.h:129</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_serial_config_html"><div class="ttname"><a href="classwiconnect_1_1_serial_config.html">wiconnect::SerialConfig</a></div><div class="ttdoc">Host<->Wiconnect Module serial configuration. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00140">sdk.h:140</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_wiconnect_socket_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect_socket.html">wiconnect::WiconnectSocket</a></div><div class="ttdoc">Connection object to remote server. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_socket_8h_source.html#l00043">WiconnectSocket.h:43</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7">wiconnect::WICONNECT_SUCCESS</a></div><div class="ttdoc">Command successfully completed. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00165">WiconnectTypes.h:165</a></div></div>
-<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00074">WiconnectInterface.h:74</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7">wiconnect::WICONNECT_SUCCESS</a></div><div class="ttdoc">Command successfully completed. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00172">WiconnectTypes.h:172</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00078">WiconnectInterface.h:78</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/join_2example_8cpp_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/join_2example_8cpp_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -203,9 +203,9 @@
 <div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="keywordflow">while</span>(<span class="keyword">true</span>){} <span class="comment">// infinite loop</span></div>
 <div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;}</div>
 <div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div>
-<div class="ttc" id="classwiconnect_1_1_serial_config_html"><div class="ttname"><a href="classwiconnect_1_1_serial_config.html">wiconnect::SerialConfig</a></div><div class="ttdoc">Host<->Wiconnect Module serial configuration. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00129">sdk.h:129</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7">wiconnect::WICONNECT_SUCCESS</a></div><div class="ttdoc">Command successfully completed. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00165">WiconnectTypes.h:165</a></div></div>
-<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00074">WiconnectInterface.h:74</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_serial_config_html"><div class="ttname"><a href="classwiconnect_1_1_serial_config.html">wiconnect::SerialConfig</a></div><div class="ttdoc">Host<->Wiconnect Module serial configuration. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00140">sdk.h:140</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7">wiconnect::WICONNECT_SUCCESS</a></div><div class="ttdoc">Command successfully completed. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00172">WiconnectTypes.h:172</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00078">WiconnectInterface.h:78</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/modules.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/modules.html	Mon Oct 27 13:42:26 2014 -0700
@@ -103,14 +103,14 @@
 <div class="contents">
 <div class="textblock">Here is a list of all modules:</div><div class="directory">
 <div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><a class="el" href="group__api__core.html" target="_self">Core</a></td><td class="desc">This contains all core methods </td></tr>
+<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><a class="el" href="group__api__core.html" target="_self">Core</a></td><td class="desc">This contains all core related operations </td></tr>
 <tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__core__settings.html" target="_self">Settings Methods</a></td><td class="desc">API getters/setters for core library settings </td></tr>
 <tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__core__send__command.html" target="_self">Send Command Methods</a></td><td class="desc">API methods for sending commands to WiConnect WiFi module </td></tr>
 <tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__core__misc.html" target="_self">Miscellaneous Methods</a></td><td class="desc">Other core methods </td></tr>
 <tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__core__types.html" target="_self">Types</a></td><td class="desc">Core Types </td></tr>
 <tr id="row_0_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__core__macro.html" target="_self">Macros</a></td><td class="desc">Core macros </td></tr>
 <tr id="row_0_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__core__examples.html" target="_self">Examples</a></td><td class="desc">Core examples </td></tr>
-<tr id="row_1_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><a class="el" href="group__api__network.html" target="_self">Network</a></td><td class="desc">This contains all network methods </td></tr>
+<tr id="row_1_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><a class="el" href="group__api__network.html" target="_self">Network</a></td><td class="desc">This contains all network related operations </td></tr>
 <tr id="row_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__network__settings.html" target="_self">Settings Methods</a></td><td class="desc">API getters/setters for module network settings </td></tr>
 <tr id="row_1_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__network__wlan.html" target="_self">WLAN Methods</a></td><td class="desc">Methods for joining/leaving a WLAN </td></tr>
 <tr id="row_1_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__network__setup.html" target="_self">Web Setup Methods</a></td><td class="desc">Methods for enabled/disabling module web setup </td></tr>
@@ -118,7 +118,7 @@
 <tr id="row_1_4_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__network__types.html" target="_self">Types</a></td><td class="desc">Network Types </td></tr>
 <tr id="row_1_5_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__network__macros.html" target="_self">Macros</a></td><td class="desc">Network specific macros </td></tr>
 <tr id="row_1_6_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__network__examples.html" target="_self">Examples</a></td><td class="desc">Network examples </td></tr>
-<tr id="row_2_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="toggleFolder('2_')">&#9660;</span><a class="el" href="group__api__socket.html" target="_self">Socket</a></td><td class="desc">This contains all socket methods </td></tr>
+<tr id="row_2_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="toggleFolder('2_')">&#9660;</span><a class="el" href="group__api__socket.html" target="_self">Socket</a></td><td class="desc">This contains all socket related operations </td></tr>
 <tr id="row_2_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__socket__tcp.html" target="_self">TCP Methods</a></td><td class="desc">TCP methods </td></tr>
 <tr id="row_2_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__socket__udp.html" target="_self">UDP Methods</a></td><td class="desc">UDP methods </td></tr>
 <tr id="row_2_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__socket__tls.html" target="_self">TLS Methods</a></td><td class="desc">TLS methods </td></tr>
@@ -127,12 +127,19 @@
 <tr id="row_2_5_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__socket__types.html" target="_self">Types</a></td><td class="desc">Socket Types </td></tr>
 <tr id="row_2_6_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__socket__macro.html" target="_self">Macros</a></td><td class="desc">Socket specific macros </td></tr>
 <tr id="row_2_7_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__socket__examples.html" target="_self">Examples</a></td><td class="desc">Socket examples </td></tr>
-<tr id="row_3_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_3_" class="arrow" onclick="toggleFolder('3_')">&#9660;</span><a class="el" href="group__api__file.html" target="_self">File</a></td><td class="desc">This contains all file methods </td></tr>
-<tr id="row_3_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__file__methods.html" target="_self">Methods</a></td><td class="desc">File Types </td></tr>
-<tr id="row_3_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__file__types.html" target="_self">Types</a></td><td class="desc">File Types </td></tr>
+<tr id="row_3_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_3_" class="arrow" onclick="toggleFolder('3_')">&#9660;</span><a class="el" href="group__api__file.html" target="_self">File</a></td><td class="desc">This contains all file related operations </td></tr>
+<tr id="row_3_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__file__methods.html" target="_self">Methods</a></td><td class="desc">File methods </td></tr>
+<tr id="row_3_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__file__types.html" target="_self">Types</a></td><td class="desc">File types </td></tr>
 <tr id="row_3_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__file__macro.html" target="_self">Macros</a></td><td class="desc">API specific macros </td></tr>
 <tr id="row_3_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__file__examples.html" target="_self">Examples</a></td><td class="desc">File examples </td></tr>
-<tr id="row_4_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__conversion__util.html" target="_self">Conversion Utilities</a></td><td class="desc">This contains all the conversion utility static functions </td></tr>
+<tr id="row_4_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_4_" class="arrow" onclick="toggleFolder('4_')">&#9660;</span><a class="el" href="group__api__ghm.html" target="_self">goHACK.me</a></td><td class="desc">This contains all goHACK.me related operations </td></tr>
+<tr id="row_4_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__ghm__activate.html" target="_self">Activation</a></td><td class="desc">Methods for activating/deactivating the module with <a href="http://goHACK.me">http://goHACK.me</a> </td></tr>
+<tr id="row_4_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__ghm__com.html" target="_self">Read/Write</a></td><td class="desc">Methods for reading &amp; writing data from/to <a href="http://goHACK.me">http://goHACK.me</a> </td></tr>
+<tr id="row_4_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__ghm__msg.html" target="_self">Message</a></td><td class="desc">Methods for getting, posting, listing, deleting messages wtih <a href="http://goHACK.me">http://goHACK.me</a> </td></tr>
+<tr id="row_4_3_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__ghm__types.html" target="_self">Types</a></td><td class="desc">GoHACK.me Types </td></tr>
+<tr id="row_4_4_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__ghm__macro.html" target="_self">Macros</a></td><td class="desc">API specific macros </td></tr>
+<tr id="row_4_5_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__api__ghm__examples.html" target="_self">Examples</a></td><td class="desc">GoHACK.me examples </td></tr>
+<tr id="row_5_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__conversion__util.html" target="_self">Conversion Utilities</a></td><td class="desc">This contains all the conversion utility static functions </td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->
--- a/doc/html/modules.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/modules.js	Mon Oct 27 13:42:26 2014 -0700
@@ -4,5 +4,6 @@
     [ "Network", "group__api__network.html", "group__api__network" ],
     [ "Socket", "group__api__socket.html", "group__api__socket" ],
     [ "File", "group__api__file.html", "group__api__file" ],
+    [ "goHACK.me", "group__api__ghm.html", "group__api__ghm" ],
     [ "Conversion Utilities", "group__conversion__util.html", "group__conversion__util" ]
 ];
\ No newline at end of file
--- a/doc/html/namespacewiconnect.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/namespacewiconnect.html	Mon Oct 27 13:42:26 2014 -0700
@@ -123,6 +123,21 @@
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwiconnect_1_1_function_pointer.html">FunctionPointer</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generic function pointer.  <a href="classwiconnect_1_1_function_pointer.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwiconnect_1_1_ghm_element.html">GhmElement</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">goHACK.me stream or control value  <a href="structwiconnect_1_1_ghm_element.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwiconnect_1_1_ghm_element_array.html">GhmElementArray</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Array of goHACK.me stream or control values.  <a href="structwiconnect_1_1_ghm_element_array.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwiconnect_1_1_ghm_interface.html">GhmInterface</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The provides an interface for <a href="http://goHACK.me">http://goHACK.me</a>.  <a href="classwiconnect_1_1_ghm_interface.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwiconnect_1_1_ghm_message.html">GhmMessage</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Contains single entry from goHACK.me message listing.  <a href="classwiconnect_1_1_ghm_message.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwiconnect_1_1_ghm_message_list.html">GhmMessageList</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">List of goHACK.me messages.  <a href="classwiconnect_1_1_ghm_message_list.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwiconnect_1_1_http_socket_args.html">HttpSocketArgs</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Struct for hold HTTP socket configuration.  <a href="structwiconnect_1_1_http_socket_args.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -165,12 +180,19 @@
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwiconnect_1_1_wiconnect_socket.html">WiconnectSocket</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connection object to remote server.  <a href="classwiconnect_1_1_wiconnect_socket.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwiconnect_1_1_wiconnect_udp_server.html">WiconnectUdpServer</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">UDP Server Listening socket.  <a href="classwiconnect_1_1_wiconnect_udp_server.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
 Typedefs</h2></td></tr>
 <tr class="memitem:aadd4d5e6774e21f382c20b594a644470"><td class="memItemLeft" align="right" valign="top">typedef int8_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacewiconnect.html#aadd4d5e6774e21f382c20b594a644470">PinToGpioMapper</a> )(<a class="el" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> pin)</td></tr>
 <tr class="memdesc:aadd4d5e6774e21f382c20b594a644470"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function pointer for mapping from a host pin to a WiConnect Module GPIO.  <a href="#aadd4d5e6774e21f382c20b594a644470">More...</a><br /></td></tr>
 <tr class="separator:aadd4d5e6774e21f382c20b594a644470"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0c27570b2913afc6339821df7c934810"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c27570b2913afc6339821df7c934810"></a>
+typedef unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacewiconnect.html#a0c27570b2913afc6339821df7c934810">TimerTimeout</a></td></tr>
+<tr class="memdesc:a0c27570b2913afc6339821df7c934810"><td class="mdescLeft">&#160;</td><td class="mdescRight">Timeout type. <br /></td></tr>
+<tr class="separator:a0c27570b2913afc6339821df7c934810"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga04b095d2e2f32a3fd23e346a4be969d8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga04b095d2e2f32a3fd23e346a4be969d8"></a>
 typedef char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__network__types.html#ga04b095d2e2f32a3fd23e346a4be969d8">MacAddressStrBuffer</a> [18]</td></tr>
 <tr class="memdesc:ga04b095d2e2f32a3fd23e346a4be969d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Buffer to hold a MAC address string. <br /></td></tr>
@@ -300,7 +322,11 @@
 <br />
 &#160;&#160;<a class="el" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756dab1b41b1c4daf8d171414b68e9033cfbc">SOCKET_TYPE_UDP</a>, 
 <br />
-&#160;&#160;<a class="el" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751">SOCKET_TYPE_HTTP</a>
+&#160;&#160;<a class="el" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751">SOCKET_TYPE_HTTP</a>, 
+<br />
+&#160;&#160;<a class="el" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da77625728d545a400e0eae1483225ff91">SOCKET_TYPE_UDPS</a>, 
+<br />
+&#160;&#160;<a class="el" href="group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da94c82597ad724e81c0bace9ed64ebc5f">SOCKET_TYPE_GHM</a>
 <br />
  }</td></tr>
 <tr class="memdesc:ga69dc55558df4c81599c5fb3dff98756d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Socket type.  <a href="group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d">More...</a><br /></td></tr>
@@ -365,6 +391,29 @@
  }</td></tr>
 <tr class="memdesc:ga9919a4237eea2b0d1f27c16d64e62c63"><td class="mdescLeft">&#160;</td><td class="mdescRight">File type type.  <a href="group__api__file__types.html#ga9919a4237eea2b0d1f27c16d64e62c63">More...</a><br /></td></tr>
 <tr class="separator:ga9919a4237eea2b0d1f27c16d64e62c63"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4174104f02851ee92e51846877706e67"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4174104f02851ee92e51846877706e67"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__types.html#ga4174104f02851ee92e51846877706e67">GhmElementValueType</a> </td></tr>
+<tr class="memdesc:ga4174104f02851ee92e51846877706e67"><td class="mdescLeft">&#160;</td><td class="mdescRight">goHACK.me stream or control value type <br /></td></tr>
+<tr class="separator:ga4174104f02851ee92e51846877706e67"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga44ea17651dcf42ac9816f549beb577ac"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__types.html#ga44ea17651dcf42ac9816f549beb577ac">GhmSyncType</a> { <br />
+&#160;&#160;<a class="el" href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577aca8aa4d4efd897cd69e0f08feaeaa122e7">GHM_SYNC_ALL</a>, 
+<br />
+&#160;&#160;<a class="el" href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577acafcf2af6407845b24a3abac79587243e0">GHM_SYNC_PUSH_ONLY</a>, 
+<br />
+&#160;&#160;<a class="el" href="group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577acaad5fbcfa42d14a2662bc5a517c108bdd">GHM_SYNC_PULL_ONLY</a>
+<br />
+ }</td></tr>
+<tr class="memdesc:ga44ea17651dcf42ac9816f549beb577ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">goHACK.me sychronization type  <a href="group__api__ghm__types.html#ga44ea17651dcf42ac9816f549beb577ac">More...</a><br /></td></tr>
+<tr class="separator:ga44ea17651dcf42ac9816f549beb577ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf75750bfef61c73f9e4677e9de663df1"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">GhmMessageGetType</a> { <br />
+&#160;&#160;<a class="el" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127">GHM_MSG_GET_DATA_ONLY</a>, 
+<br />
+&#160;&#160;<a class="el" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a19876ca1d097b96c48a1e8b54ee562d1">GHM_MSG_GET_BODY</a>, 
+<br />
+&#160;&#160;<a class="el" href="group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1adcf75ccabf6676b9b8f3050080f4bab7">GHM_MSG_GET_ALL</a>
+<br />
+ }</td></tr>
+<tr class="memdesc:gaf75750bfef61c73f9e4677e9de663df1"><td class="mdescLeft">&#160;</td><td class="mdescRight">goHACK.me message GET type  <a href="group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1">More...</a><br /></td></tr>
+<tr class="separator:gaf75750bfef61c73f9e4677e9de663df1"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>The entire <a class="el" href="classwiconnect_1_1_wiconnect.html" title="The root WiConnect library class. This class inheriets all WiConnect functionality. ">Wiconnect</a> Library is contained within the 'wiconnect' namespace. </p>
@@ -397,7 +446,7 @@
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>The corresponding WiConnect Module GPIO (which the given pin is physically connected). Return -1 if no mapping is available. </dd></dl>
 
-<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00199">199</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
+<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00206">206</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
 
 </div>
 </div>
--- a/doc/html/namespacewiconnect.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/namespacewiconnect.js	Mon Oct 27 13:42:26 2014 -0700
@@ -4,6 +4,11 @@
     [ "FileInterface", "classwiconnect_1_1_file_interface.html", "classwiconnect_1_1_file_interface" ],
     [ "FileList", "classwiconnect_1_1_file_list.html", null ],
     [ "FunctionPointer", "classwiconnect_1_1_function_pointer.html", null ],
+    [ "GhmElement", "structwiconnect_1_1_ghm_element.html", null ],
+    [ "GhmElementArray", "structwiconnect_1_1_ghm_element_array.html", null ],
+    [ "GhmInterface", "classwiconnect_1_1_ghm_interface.html", "classwiconnect_1_1_ghm_interface" ],
+    [ "GhmMessage", "classwiconnect_1_1_ghm_message.html", null ],
+    [ "GhmMessageList", "classwiconnect_1_1_ghm_message_list.html", null ],
     [ "HttpSocketArgs", "structwiconnect_1_1_http_socket_args.html", "structwiconnect_1_1_http_socket_args" ],
     [ "LogFunc", "classwiconnect_1_1_log_func.html", null ],
     [ "MacAddress", "structwiconnect_1_1_mac_address.html", null ],
@@ -17,5 +22,6 @@
     [ "Ssid", "structwiconnect_1_1_ssid.html", "structwiconnect_1_1_ssid" ],
     [ "Wiconnect", "classwiconnect_1_1_wiconnect.html", "classwiconnect_1_1_wiconnect" ],
     [ "WiconnectFile", "classwiconnect_1_1_wiconnect_file.html", null ],
-    [ "WiconnectSocket", "classwiconnect_1_1_wiconnect_socket.html", null ]
+    [ "WiconnectSocket", "classwiconnect_1_1_wiconnect_socket.html", null ],
+    [ "WiconnectUdpServer", "classwiconnect_1_1_wiconnect_udp_server.html", null ]
 ];
\ No newline at end of file
--- a/doc/html/navtree.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/navtree.js	Mon Oct 27 13:42:26 2014 -0700
@@ -34,7 +34,7 @@
 var NAVTREEINDEX =
 [
 "annotated.html",
-"group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2911018510263b4d6db772cf6ea69385"
+"group__api__ghm__msg.html#gaa905a010f0e234d290eaef6e42975c29"
 ];
 
 var SYNCONMSG = 'click to disable panel synchronisation';
--- a/doc/html/navtreeindex0.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/navtreeindex0.js	Mon Oct 27 13:42:26 2014 -0700
@@ -7,6 +7,9 @@
 "classwiconnect_1_1_file_interface.html":[1,3,1,0],
 "classwiconnect_1_1_file_list.html":[1,3,1,1],
 "classwiconnect_1_1_function_pointer.html":[3,0,0,3],
+"classwiconnect_1_1_ghm_interface.html":[1,4,3,0],
+"classwiconnect_1_1_ghm_message.html":[1,4,3,3],
+"classwiconnect_1_1_ghm_message_list.html":[1,4,3,4],
 "classwiconnect_1_1_log_func.html":[1,0,3,2],
 "classwiconnect_1_1_network_interface.html":[1,1,4,0],
 "classwiconnect_1_1_queued_command.html":[1,0,3,3],
@@ -20,6 +23,7 @@
 "classwiconnect_1_1_wiconnect.html#afe9fa2efde4e26944cdc9b6be51a1a34":[1,0,3,0,1],
 "classwiconnect_1_1_wiconnect_file.html":[1,3,1,2],
 "classwiconnect_1_1_wiconnect_socket.html":[1,2,5,2],
+"classwiconnect_1_1_wiconnect_udp_server.html":[1,2,5,3],
 "examples.html":[2],
 "functions.html":[3,3,0],
 "functions_func.html":[3,3,1],
@@ -28,114 +32,121 @@
 "group__api__core__examples.html":[1,0,5],
 "group__api__core__macro.html":[1,0,4],
 "group__api__core__macro.html#ga0a14e4bc7a0aed9311b552c0ee8fd7ef":[1,0,4,11],
-"group__api__core__macro.html#ga12620767dcf50182fb9f72fe5d995301":[1,0,4,24],
-"group__api__core__macro.html#ga1525d7c98c2da34fc1a64de49253abdb":[1,0,4,23],
-"group__api__core__macro.html#ga2aa16118029ab13ab41514cb8eb93ba7":[1,0,4,18],
+"group__api__core__macro.html#ga12620767dcf50182fb9f72fe5d995301":[1,0,4,27],
+"group__api__core__macro.html#ga1525d7c98c2da34fc1a64de49253abdb":[1,0,4,26],
+"group__api__core__macro.html#ga2aa16118029ab13ab41514cb8eb93ba7":[1,0,4,21],
 "group__api__core__macro.html#ga2e7ffaac225bc56852bb504f531aafa0":[1,0,4,9],
 "group__api__core__macro.html#ga346c951fa5af23cdbf1d18a59b2babd1":[1,0,4,2],
 "group__api__core__macro.html#ga347d0e1228e8174563c6bcf48de18401":[1,0,4,13],
-"group__api__core__macro.html#ga45fe565132845ca570ded816f25561b0":[1,0,4,22],
-"group__api__core__macro.html#ga53fde64c3e7647a192281a015cd02f48":[1,0,4,25],
-"group__api__core__macro.html#ga580e5f45fee866c845e0d3fd1eb1744a":[1,0,4,28],
+"group__api__core__macro.html#ga436d782bd2cdce3696eadda1083416af":[1,0,4,20],
+"group__api__core__macro.html#ga45fe565132845ca570ded816f25561b0":[1,0,4,25],
+"group__api__core__macro.html#ga53fde64c3e7647a192281a015cd02f48":[1,0,4,28],
+"group__api__core__macro.html#ga580e5f45fee866c845e0d3fd1eb1744a":[1,0,4,31],
+"group__api__core__macro.html#ga593c6629b59a853057cd6a5547ed3f4f":[1,0,4,19],
 "group__api__core__macro.html#ga596d1da2fb23f4e748c83d64a47e10b3":[1,0,4,4],
-"group__api__core__macro.html#ga6d336ec791dcd22238d2fc4995fb9431":[1,0,4,17],
-"group__api__core__macro.html#ga7352d6662e438d0969593df9e657d43f":[1,0,4,21],
+"group__api__core__macro.html#ga6d336ec791dcd22238d2fc4995fb9431":[1,0,4,18],
+"group__api__core__macro.html#ga7352d6662e438d0969593df9e657d43f":[1,0,4,24],
 "group__api__core__macro.html#ga74e75242132eaabbc1c512488a135926":[1,0,4,6],
 "group__api__core__macro.html#ga7741b7a0fbbf9b7e47898b7d30e5e321":[1,0,4,14],
 "group__api__core__macro.html#ga77baa56c8d3584b953f0a2626e6844ad":[1,0,4,3],
-"group__api__core__macro.html#ga7c5dcedd35669199b46bb292b3d3b525":[1,0,4,20],
-"group__api__core__macro.html#ga8bc3b8d2e7e7c9d10b23e0a15cd4507a":[1,0,4,19],
+"group__api__core__macro.html#ga7c5dcedd35669199b46bb292b3d3b525":[1,0,4,23],
+"group__api__core__macro.html#ga80e1660ca602aff9f95ccbb4822fad9c":[1,0,4,15],
+"group__api__core__macro.html#ga8bc3b8d2e7e7c9d10b23e0a15cd4507a":[1,0,4,22],
 "group__api__core__macro.html#ga8d334bd237af6b4e1eb929ef32b33ab0":[1,0,4,0],
 "group__api__core__macro.html#ga9e7032540d999edf0dbae31e51c85962":[1,0,4,10],
 "group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270":[1,0,4,7],
 "group__api__core__macro.html#gaacc3ee1a7f283f8ef65cea31f4436a95":[1,0,4,5],
 "group__api__core__macro.html#gaaff0108d684631b2bb88e1f6c255e9ac":[1,0,4,12],
-"group__api__core__macro.html#gab27aa3ef76302b5221766abfd4f47e64":[1,0,4,16],
-"group__api__core__macro.html#gabb158b483cd6d8a8d2d4bf8d38bc9830":[1,0,4,26],
+"group__api__core__macro.html#gab27aa3ef76302b5221766abfd4f47e64":[1,0,4,17],
+"group__api__core__macro.html#gabb158b483cd6d8a8d2d4bf8d38bc9830":[1,0,4,29],
 "group__api__core__macro.html#gad466ede4f07512308e38402d777d8380":[1,0,4,8],
 "group__api__core__macro.html#gad7bc04eee187f219f2544905267568b0":[1,0,4,1],
-"group__api__core__macro.html#gae7b6cfdff3a9aef465d5c4434937417d":[1,0,4,27],
-"group__api__core__macro.html#gae9cf1249b46e784aa05250e2bcbe2e02":[1,0,4,15],
+"group__api__core__macro.html#gae7b6cfdff3a9aef465d5c4434937417d":[1,0,4,30],
+"group__api__core__macro.html#gae9cf1249b46e784aa05250e2bcbe2e02":[1,0,4,16],
 "group__api__core__misc.html":[1,0,2],
-"group__api__core__misc.html#ga27b5d6b8207e4ef0f73875606d628da8":[1,0,3,0,8],
+"group__api__core__misc.html#ga27b5d6b8207e4ef0f73875606d628da8":[1,0,3,0,9],
 "group__api__core__misc.html#ga27b5d6b8207e4ef0f73875606d628da8":[1,0,2,5],
-"group__api__core__misc.html#ga4fc195839bc6c6bd0091074cbdc94c4f":[1,0,3,0,12],
+"group__api__core__misc.html#ga4fc195839bc6c6bd0091074cbdc94c4f":[1,0,3,0,13],
 "group__api__core__misc.html#ga4fc195839bc6c6bd0091074cbdc94c4f":[1,0,2,6],
-"group__api__core__misc.html#ga600215de23210071c42996d04390071e":[1,0,3,0,7],
+"group__api__core__misc.html#ga600215de23210071c42996d04390071e":[1,0,3,0,8],
 "group__api__core__misc.html#ga600215de23210071c42996d04390071e":[1,0,2,4],
 "group__api__core__misc.html#ga8dcd3ac87afd58b225abb068e835d06e":[1,0,2,2],
+"group__api__core__misc.html#ga96ac50d85d8ab376755d7d5325de1713":[1,0,3,0,4],
 "group__api__core__misc.html#ga96ac50d85d8ab376755d7d5325de1713":[1,0,2,1],
-"group__api__core__misc.html#ga96ac50d85d8ab376755d7d5325de1713":[1,0,3,0,4],
-"group__api__core__misc.html#ga9d6c981a54c6ab964b469e4f247142d6":[1,0,2,0],
 "group__api__core__misc.html#ga9d6c981a54c6ab964b469e4f247142d6":[1,0,3,0,3],
-"group__api__core__misc.html#gab00c7110984f6d6187241d17a4a431ff":[1,0,3,0,14],
+"group__api__core__misc.html#ga9d6c981a54c6ab964b469e4f247142d6":[1,0,2,0],
+"group__api__core__misc.html#gab00c7110984f6d6187241d17a4a431ff":[1,0,3,0,15],
 "group__api__core__misc.html#gab00c7110984f6d6187241d17a4a431ff":[1,0,2,8],
-"group__api__core__misc.html#gabec1504eb7f486085dad82c4a94310e3":[1,0,3,0,15],
+"group__api__core__misc.html#gabec1504eb7f486085dad82c4a94310e3":[1,0,3,0,16],
 "group__api__core__misc.html#gabec1504eb7f486085dad82c4a94310e3":[1,0,2,9],
-"group__api__core__misc.html#gac40b2964149e60245ff3cac6adbcd565":[1,0,3,0,17],
+"group__api__core__misc.html#gac40b2964149e60245ff3cac6adbcd565":[1,0,3,0,18],
 "group__api__core__misc.html#gac40b2964149e60245ff3cac6adbcd565":[1,0,2,11],
-"group__api__core__misc.html#gad447fe3341539eb9b276d269645bb632":[1,0,3,0,38],
+"group__api__core__misc.html#gad447fe3341539eb9b276d269645bb632":[1,0,3,0,40],
 "group__api__core__misc.html#gad447fe3341539eb9b276d269645bb632":[1,0,2,12],
-"group__api__core__misc.html#gad552c8f23dd0a0e8844ee1fc4d9358e5":[1,0,3,0,39],
+"group__api__core__misc.html#gad552c8f23dd0a0e8844ee1fc4d9358e5":[1,0,3,0,41],
 "group__api__core__misc.html#gad552c8f23dd0a0e8844ee1fc4d9358e5":[1,0,2,13],
-"group__api__core__misc.html#gad8069679fabb52d44647d27703f1a09a":[1,0,3,0,6],
+"group__api__core__misc.html#gad8069679fabb52d44647d27703f1a09a":[1,0,3,0,7],
 "group__api__core__misc.html#gad8069679fabb52d44647d27703f1a09a":[1,0,2,3],
-"group__api__core__misc.html#gada79343aece515e00f9be4045d3858a0":[1,0,3,0,16],
+"group__api__core__misc.html#gada79343aece515e00f9be4045d3858a0":[1,0,3,0,17],
 "group__api__core__misc.html#gada79343aece515e00f9be4045d3858a0":[1,0,2,10],
-"group__api__core__misc.html#gae2e3add2e60543d0e3340ed7a9e034ad":[1,0,3,0,13],
+"group__api__core__misc.html#gae2e3add2e60543d0e3340ed7a9e034ad":[1,0,3,0,14],
 "group__api__core__misc.html#gae2e3add2e60543d0e3340ed7a9e034ad":[1,0,2,7],
 "group__api__core__send__command.html":[1,0,1],
-"group__api__core__send__command.html#ga0e0591e923da9ab814bb3dd3afbda197":[1,0,3,0,20],
-"group__api__core__send__command.html#ga0e0591e923da9ab814bb3dd3afbda197":[1,0,1,3],
-"group__api__core__send__command.html#ga3655750f929f8f4e966278193d0385a9":[1,0,1,6],
-"group__api__core__send__command.html#ga3655750f929f8f4e966278193d0385a9":[1,0,3,0,23],
-"group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c":[1,0,3,0,18],
-"group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c":[1,0,1,1],
 "group__api__core__send__command.html#ga4a9bd29de1d5c496fbcc28ecfa51e7c0":[1,0,1,14],
-"group__api__core__send__command.html#ga4a9bd29de1d5c496fbcc28ecfa51e7c0":[1,0,3,0,37],
+"group__api__core__send__command.html#ga4a9bd29de1d5c496fbcc28ecfa51e7c0":[1,0,3,0,39],
+"group__api__core__send__command.html#ga5666d99d72494995db0a812fcc9bbd09":[1,0,1,12],
+"group__api__core__send__command.html#ga5666d99d72494995db0a812fcc9bbd09":[1,0,3,0,30],
+"group__api__core__send__command.html#ga5f437c3518de14706c6fcff32a0b0f97":[1,0,1,6],
+"group__api__core__send__command.html#ga5f437c3518de14706c6fcff32a0b0f97":[1,0,3,0,24],
 "group__api__core__send__command.html#ga7eb983a196daa5de20a73fd234dc6f64":[1,0,1,9],
-"group__api__core__send__command.html#ga7eb983a196daa5de20a73fd234dc6f64":[1,0,3,0,26],
+"group__api__core__send__command.html#ga7eb983a196daa5de20a73fd234dc6f64":[1,0,3,0,27],
+"group__api__core__send__command.html#ga8c6d84b338847fbdd41f61c5375117e9":[1,0,1,4],
+"group__api__core__send__command.html#ga8c6d84b338847fbdd41f61c5375117e9":[1,0,3,0,22],
+"group__api__core__send__command.html#ga9a89a0dd00f8eedb5e3eb8d4a4ed58df":[1,0,1,11],
+"group__api__core__send__command.html#ga9a89a0dd00f8eedb5e3eb8d4a4ed58df":[1,0,3,0,29],
 "group__api__core__send__command.html#ga9d0ade0ec2866d7e0df5391bc69f5698":[1,0,1,13],
-"group__api__core__send__command.html#ga9d0ade0ec2866d7e0df5391bc69f5698":[1,0,3,0,30],
-"group__api__core__send__command.html#gaa6d744ec08ba6c9abf451bdc2b0beb00":[1,0,1,11],
-"group__api__core__send__command.html#gaa6d744ec08ba6c9abf451bdc2b0beb00":[1,0,3,0,28],
+"group__api__core__send__command.html#ga9d0ade0ec2866d7e0df5391bc69f5698":[1,0,3,0,31],
+"group__api__core__send__command.html#gaa36b07b28a166fe51f9dc92bcab5d3d8":[1,0,3,0,20],
+"group__api__core__send__command.html#gaa36b07b28a166fe51f9dc92bcab5d3d8":[1,0,1,2],
 "group__api__core__send__command.html#gaac75ca154bd5d5a21c714dd828a92363":[1,0,1,8],
-"group__api__core__send__command.html#gaac75ca154bd5d5a21c714dd828a92363":[1,0,3,0,25],
+"group__api__core__send__command.html#gaac75ca154bd5d5a21c714dd828a92363":[1,0,3,0,26],
+"group__api__core__send__command.html#gabe0e5c170b9c6ec7d6dc96a3639c721e":[1,0,1,3],
+"group__api__core__send__command.html#gabe0e5c170b9c6ec7d6dc96a3639c721e":[1,0,3,0,21],
 "group__api__core__send__command.html#gaca2f1b17d2cc98cbc6dac219ffcf9e84":[1,0,1,5],
-"group__api__core__send__command.html#gaca2f1b17d2cc98cbc6dac219ffcf9e84":[1,0,3,0,22],
-"group__api__core__send__command.html#gace479d34633141ff1eefa0e98c4d2351":[1,0,1,12],
-"group__api__core__send__command.html#gace479d34633141ff1eefa0e98c4d2351":[1,0,3,0,29],
-"group__api__core__send__command.html#gad23730a1f2f7714ef962f24a0f99f0f7":[1,0,3,0,19],
-"group__api__core__send__command.html#gad23730a1f2f7714ef962f24a0f99f0f7":[1,0,1,2],
+"group__api__core__send__command.html#gaca2f1b17d2cc98cbc6dac219ffcf9e84":[1,0,3,0,23],
 "group__api__core__send__command.html#gadad1c5b3df07a24ab09492edf93dd1f4":[1,0,1,10],
-"group__api__core__send__command.html#gadad1c5b3df07a24ab09492edf93dd1f4":[1,0,3,0,27],
-"group__api__core__send__command.html#gadd347dd3952ebab2fa27561c12858f65":[1,0,3,0,21],
-"group__api__core__send__command.html#gadd347dd3952ebab2fa27561c12858f65":[1,0,1,4],
+"group__api__core__send__command.html#gadad1c5b3df07a24ab09492edf93dd1f4":[1,0,3,0,28],
+"group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505":[1,0,3,0,19],
+"group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505":[1,0,1,1],
 "group__api__core__send__command.html#gaf48c1ec0b92af2619ab846baaaa471cd":[1,0,1,0],
 "group__api__core__send__command.html#gaf48c1ec0b92af2619ab846baaaa471cd":[1,0,3,0,2],
 "group__api__core__send__command.html#gaf93db1b2730bb586287f7756f3cdf092":[1,0,1,7],
-"group__api__core__send__command.html#gaf93db1b2730bb586287f7756f3cdf092":[1,0,3,0,24],
+"group__api__core__send__command.html#gaf93db1b2730bb586287f7756f3cdf092":[1,0,3,0,25],
 "group__api__core__settings.html":[1,0,0],
-"group__api__core__settings.html#ga085a17a466905069940611bdd14c1d3e":[1,0,3,0,36],
-"group__api__core__settings.html#ga085a17a466905069940611bdd14c1d3e":[1,0,0,9],
-"group__api__core__settings.html#ga16d5022d1fbd784fe0fd90a56911c5bc":[1,0,3,0,9],
-"group__api__core__settings.html#ga16d5022d1fbd784fe0fd90a56911c5bc":[1,0,0,1],
-"group__api__core__settings.html#ga180b043ec83c53b5bf6b9ef2b187d08d":[1,0,0,7],
-"group__api__core__settings.html#ga180b043ec83c53b5bf6b9ef2b187d08d":[1,0,3,0,34],
-"group__api__core__settings.html#ga273f67fede26be4a3d5d909c5cf8c7e0":[1,0,3,0,31],
-"group__api__core__settings.html#ga273f67fede26be4a3d5d909c5cf8c7e0":[1,0,0,4],
-"group__api__core__settings.html#ga670947ef630233f7866f885500548233":[1,0,0,3],
-"group__api__core__settings.html#ga670947ef630233f7866f885500548233":[1,0,3,0,11],
-"group__api__core__settings.html#ga75fb083451ee530a1c19e6a4c1be185e":[1,0,3,0,33],
-"group__api__core__settings.html#ga75fb083451ee530a1c19e6a4c1be185e":[1,0,0,6],
-"group__api__core__settings.html#ga9dfd70aac8f0770f300ccf3a126ba296":[1,0,3,0,10],
-"group__api__core__settings.html#ga9dfd70aac8f0770f300ccf3a126ba296":[1,0,0,2],
-"group__api__core__settings.html#gaaaf8be221699870053ad98911b066a32":[1,0,0,5],
-"group__api__core__settings.html#gaaaf8be221699870053ad98911b066a32":[1,0,3,0,32],
-"group__api__core__settings.html#gace51a2841415a53f54fcce336182f0ec":[1,0,3,0,35],
-"group__api__core__settings.html#gace51a2841415a53f54fcce336182f0ec":[1,0,0,8],
-"group__api__core__settings.html#gad5d31980a7b1e143f00b0117468c1a7e":[1,0,3,0,5],
-"group__api__core__settings.html#gad5d31980a7b1e143f00b0117468c1a7e":[1,0,0,0],
+"group__api__core__settings.html#ga085a17a466905069940611bdd14c1d3e":[1,0,0,11],
+"group__api__core__settings.html#ga085a17a466905069940611bdd14c1d3e":[1,0,3,0,38],
+"group__api__core__settings.html#ga16d5022d1fbd784fe0fd90a56911c5bc":[1,0,0,2],
+"group__api__core__settings.html#ga16d5022d1fbd784fe0fd90a56911c5bc":[1,0,3,0,10],
+"group__api__core__settings.html#ga180b043ec83c53b5bf6b9ef2b187d08d":[1,0,3,0,36],
+"group__api__core__settings.html#ga180b043ec83c53b5bf6b9ef2b187d08d":[1,0,0,9],
+"group__api__core__settings.html#ga273f67fede26be4a3d5d909c5cf8c7e0":[1,0,0,5],
+"group__api__core__settings.html#ga273f67fede26be4a3d5d909c5cf8c7e0":[1,0,3,0,32],
+"group__api__core__settings.html#ga670947ef630233f7866f885500548233":[1,0,3,0,12],
+"group__api__core__settings.html#ga670947ef630233f7866f885500548233":[1,0,0,4],
+"group__api__core__settings.html#ga75fb083451ee530a1c19e6a4c1be185e":[1,0,3,0,35],
+"group__api__core__settings.html#ga75fb083451ee530a1c19e6a4c1be185e":[1,0,0,8],
+"group__api__core__settings.html#ga851795595a422a14249b7ea9f0038c4c":[1,0,0,6],
+"group__api__core__settings.html#ga851795595a422a14249b7ea9f0038c4c":[1,0,3,0,33],
+"group__api__core__settings.html#ga9dfd70aac8f0770f300ccf3a126ba296":[1,0,0,3],
+"group__api__core__settings.html#ga9dfd70aac8f0770f300ccf3a126ba296":[1,0,3,0,11],
+"group__api__core__settings.html#gacae50138f9388a66496408f9c2bf6a6f":[1,0,0,7],
+"group__api__core__settings.html#gacae50138f9388a66496408f9c2bf6a6f":[1,0,3,0,34],
+"group__api__core__settings.html#gace51a2841415a53f54fcce336182f0ec":[1,0,3,0,37],
+"group__api__core__settings.html#gace51a2841415a53f54fcce336182f0ec":[1,0,0,10],
+"group__api__core__settings.html#gad8d98b8d2610f4ea564bede27e87857e":[1,0,3,0,6],
+"group__api__core__settings.html#gad8d98b8d2610f4ea564bede27e87857e":[1,0,0,1],
+"group__api__core__settings.html#gaf6115968c49c128717cacd2f06b883ad":[1,0,3,0,5],
+"group__api__core__settings.html#gaf6115968c49c128717cacd2f06b883ad":[1,0,0,0],
 "group__api__core__types.html":[1,0,3],
 "group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c":[1,0,3,6],
 "group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05":[1,0,3,7],
@@ -172,8 +183,8 @@
 "group__api__file__methods.html#ga10536639c61213c037883dade021838f":[1,3,1,0,3],
 "group__api__file__methods.html#ga16fb09105975644879eb09581ce486e5":[1,3,0,0],
 "group__api__file__methods.html#ga16fb09105975644879eb09581ce486e5":[1,3,1,0,0],
+"group__api__file__methods.html#gaa9ea2d05871ee7e7bbfa360b86fefb20":[1,3,0,2],
 "group__api__file__methods.html#gaa9ea2d05871ee7e7bbfa360b86fefb20":[1,3,1,0,2],
-"group__api__file__methods.html#gaa9ea2d05871ee7e7bbfa360b86fefb20":[1,3,0,2],
 "group__api__file__methods.html#gaaf2977c691be09aeda102267a6769583":[1,3,0,4],
 "group__api__file__methods.html#gaaf2977c691be09aeda102267a6769583":[1,3,1,0,4],
 "group__api__file__methods.html#gafcf335cef42b7b3d0fd9d5af70c6ef7d":[1,3,0,1],
@@ -202,52 +213,41 @@
 "group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eac40bade251c1d671283d3ab2515725a6":[1,3,1,3,0],
 "group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaff56da02ac3626bf5636e0aa6ffff78a":[1,3,1,3,1],
 "group__api__file__types.html#ggafbe48908f5c190c3b0f272d3016e609eaffe90e6784ad43acffbf823502a6a7bf":[1,3,1,3,5],
-"group__api__network.html":[1,1],
-"group__api__network__examples.html":[1,1,6],
-"group__api__network__macros.html":[1,1,5],
-"group__api__network__settings.html":[1,1,0],
-"group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290":[1,1,0,1],
-"group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290":[1,1,4,0,1],
-"group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b":[1,1,0,2],
-"group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b":[1,1,4,0,2],
-"group__api__network__settings.html#ga2f7ec21084d3f2835d9c1c201915a9e0":[1,1,0,5],
-"group__api__network__settings.html#ga2f7ec21084d3f2835d9c1c201915a9e0":[1,1,4,0,13],
-"group__api__network__settings.html#ga65eb99f880ed739d0f3cd393e5b56eaf":[1,1,4,0,12],
-"group__api__network__settings.html#ga65eb99f880ed739d0f3cd393e5b56eaf":[1,1,0,4],
-"group__api__network__settings.html#ga70ec796b88eb6f8e7990dbf3eb2f2eff":[1,1,0,0],
-"group__api__network__settings.html#ga70ec796b88eb6f8e7990dbf3eb2f2eff":[1,1,4,0,0],
-"group__api__network__settings.html#gaa418175dd3d06b870f3dd8e035cb4dd0":[1,1,4,0,14],
-"group__api__network__settings.html#gaa418175dd3d06b870f3dd8e035cb4dd0":[1,1,0,6],
-"group__api__network__settings.html#gaba16b9918e55c08285cf5b8b50dbabea":[1,1,0,3],
-"group__api__network__settings.html#gaba16b9918e55c08285cf5b8b50dbabea":[1,1,4,0,5],
-"group__api__network__setup.html":[1,1,2],
-"group__api__network__setup.html#gab52d3a01427d0e8bd52460d992144f65":[1,1,2,0],
-"group__api__network__setup.html#gab52d3a01427d0e8bd52460d992144f65":[1,1,4,0,6],
-"group__api__network__setup.html#gac5ca67b7bfa587935b5619e441dc8d8a":[1,1,2,2],
-"group__api__network__setup.html#gac5ca67b7bfa587935b5619e441dc8d8a":[1,1,4,0,16],
-"group__api__network__setup.html#gaea3e133f2ee8c95d8d108c15561f3847":[1,1,2,1],
-"group__api__network__setup.html#gaea3e133f2ee8c95d8d108c15561f3847":[1,1,4,0,15],
-"group__api__network__types.html":[1,1,4],
-"group__api__network__types.html#ga026bd11cd5df47b7022362243e2d553f":[1,1,4,9],
-"group__api__network__types.html#ga04b095d2e2f32a3fd23e346a4be969d8":[1,1,4,6],
-"group__api__network__types.html#ga38e0a82235258f96340b9ce2c6e1426c":[1,1,4,7],
-"group__api__network__types.html#ga5f6f5c916a5dd1676f98da7fa511451d":[1,1,4,8],
-"group__api__network__types.html#gaa68646bb07ee9f174097b60ac7327342":[1,1,4,5],
-"group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99":[1,1,4,11],
-"group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36":[1,1,4,10],
-"group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da02f32115d4a39e6028e5ebb4944f0bec":[1,1,4,8,4],
-"group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da2ac6866940725552e31532002ef649a5":[1,1,4,8,0],
-"group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da5c790fb0440c39d95ec785e1c31c3cb2":[1,1,4,8,6],
-"group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da60569216928bd30142e2e143eaf58475":[1,1,4,8,2],
-"group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da76b3ad647f00a3dc52e71e4ed670e7dc":[1,1,4,8,7],
-"group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabb8da6425a24810668eade3488113957":[1,1,4,8,5],
-"group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabfbb179ad94f8d5a57a9da86de9c65a8":[1,1,4,8,1],
-"group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daea6aa0a779a2823eadafa82dda6b7304":[1,1,4,8,3],
-"group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daed880c261bae590a5f59aebb01b6912c":[1,1,4,8,8],
-"group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a2916360f96699b2bf42cf5e122562497":[1,1,4,11,3],
-"group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6a4dd5a93528f27eb983bf856b9f5067":[1,1,4,11,0],
-"group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6d6f2fd76cab833e55bc398541c52b46":[1,1,4,11,2],
-"group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a8e40c9f169976770c3e65b9c0e44874c":[1,1,4,11,1],
-"group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a095c1eef3bdeb16e33b1f6a976e9f6c4":[1,1,4,10,5],
-"group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2728fe7e544bee45b00ef95117085eae":[1,1,4,10,3]
+"group__api__ghm.html":[1,4],
+"group__api__ghm__activate.html":[1,4,0],
+"group__api__ghm__activate.html#ga8bec70f780ca7de9dce1a15830c179ff":[1,4,0,3],
+"group__api__ghm__activate.html#ga8bec70f780ca7de9dce1a15830c179ff":[1,4,3,0,8],
+"group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff":[1,4,0,0],
+"group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff":[1,4,3,0,0],
+"group__api__ghm__activate.html#gad0e0484d1f9a6608475874544f96708b":[1,4,0,1],
+"group__api__ghm__activate.html#gad0e0484d1f9a6608475874544f96708b":[1,4,3,0,1],
+"group__api__ghm__activate.html#gaff03ecaa08146e6925820209cdab56bd":[1,4,0,2],
+"group__api__ghm__activate.html#gaff03ecaa08146e6925820209cdab56bd":[1,4,3,0,4],
+"group__api__ghm__com.html":[1,4,1],
+"group__api__ghm__com.html#ga0aa48506edb22c90be513683672b96c7":[1,4,1,3],
+"group__api__ghm__com.html#ga0aa48506edb22c90be513683672b96c7":[1,4,3,0,14],
+"group__api__ghm__com.html#ga26ef47c451e7dbe869f19f5f36695e7c":[1,4,1,5],
+"group__api__ghm__com.html#ga26ef47c451e7dbe869f19f5f36695e7c":[1,4,3,0,16],
+"group__api__ghm__com.html#ga2d4f14ef409c30b49ce2a06b72d10c7f":[1,4,1,1],
+"group__api__ghm__com.html#ga2d4f14ef409c30b49ce2a06b72d10c7f":[1,4,3,0,12],
+"group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223":[1,4,3,0,15],
+"group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223":[1,4,1,4],
+"group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2":[1,4,3,0,11],
+"group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2":[1,4,1,0],
+"group__api__ghm__com.html#ga5eb797aba87a3ab76d742afe34292ee6":[1,4,1,7],
+"group__api__ghm__com.html#ga5eb797aba87a3ab76d742afe34292ee6":[1,4,3,0,18],
+"group__api__ghm__com.html#ga965090d4b28bda9f58716b522a6bee12":[1,4,3,0,13],
+"group__api__ghm__com.html#ga965090d4b28bda9f58716b522a6bee12":[1,4,1,2],
+"group__api__ghm__com.html#gab524e64f4bbae826c27bf39d7f2d3c2e":[1,4,3,0,17],
+"group__api__ghm__com.html#gab524e64f4bbae826c27bf39d7f2d3c2e":[1,4,1,6],
+"group__api__ghm__examples.html":[1,4,5],
+"group__api__ghm__macro.html":[1,4,4],
+"group__api__ghm__msg.html":[1,4,2],
+"group__api__ghm__msg.html#ga451de9d69f7ecbf38e36056e502b94b0":[1,4,2,0],
+"group__api__ghm__msg.html#ga451de9d69f7ecbf38e36056e502b94b0":[1,4,3,0,2],
+"group__api__ghm__msg.html#ga7273f4c691aeccd241327f1be3e8d0e9":[1,4,2,1],
+"group__api__ghm__msg.html#ga7273f4c691aeccd241327f1be3e8d0e9":[1,4,3,0,3],
+"group__api__ghm__msg.html#ga9c6dffaa871f2443a32d75276160682d":[1,4,2,4],
+"group__api__ghm__msg.html#ga9c6dffaa871f2443a32d75276160682d":[1,4,3,0,7],
+"group__api__ghm__msg.html#gaa905a010f0e234d290eaef6e42975c29":[1,4,2,3]
 };
--- a/doc/html/navtreeindex1.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/navtreeindex1.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,100 +1,173 @@
 var NAVTREEINDEX1 =
 {
+"group__api__ghm__msg.html#gaa905a010f0e234d290eaef6e42975c29":[1,4,3,0,6],
+"group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234":[1,4,3,0,5],
+"group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234":[1,4,2,2],
+"group__api__ghm__msg.html#gadc281f497041b26a151c72a0b5d03543":[1,4,2,6],
+"group__api__ghm__msg.html#gadc281f497041b26a151c72a0b5d03543":[1,4,3,0,10],
+"group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502":[1,4,2,5],
+"group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502":[1,4,3,0,9],
+"group__api__ghm__types.html":[1,4,3],
+"group__api__ghm__types.html#ga4174104f02851ee92e51846877706e67":[1,4,3,5],
+"group__api__ghm__types.html#ga44ea17651dcf42ac9816f549beb577ac":[1,4,3,7],
+"group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1":[1,4,3,6],
+"group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577aca8aa4d4efd897cd69e0f08feaeaa122e7":[1,4,3,7,0],
+"group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577acaad5fbcfa42d14a2662bc5a517c108bdd":[1,4,3,7,2],
+"group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577acafcf2af6407845b24a3abac79587243e0":[1,4,3,7,1],
+"group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a19876ca1d097b96c48a1e8b54ee562d1":[1,4,3,6,1],
+"group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127":[1,4,3,6,0],
+"group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1adcf75ccabf6676b9b8f3050080f4bab7":[1,4,3,6,2],
+"group__api__network.html":[1,1],
+"group__api__network__examples.html":[1,1,6],
+"group__api__network__macros.html":[1,1,5],
+"group__api__network__settings.html":[1,1,0],
+"group__api__network__settings.html#ga258d8b80064c6ce311a433affe63a0e9":[1,1,0,5],
+"group__api__network__settings.html#ga258d8b80064c6ce311a433affe63a0e9":[1,1,4,0,16],
+"group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b":[1,1,4,0,3],
+"group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b":[1,1,0,3],
+"group__api__network__settings.html#ga2f7ec21084d3f2835d9c1c201915a9e0":[1,1,0,6],
+"group__api__network__settings.html#ga2f7ec21084d3f2835d9c1c201915a9e0":[1,1,4,0,17],
+"group__api__network__settings.html#ga585cb71d386ee61db3772f4b3218cb6e":[1,1,4,0,1],
+"group__api__network__settings.html#ga585cb71d386ee61db3772f4b3218cb6e":[1,1,0,1],
+"group__api__network__settings.html#ga65eb99f880ed739d0f3cd393e5b56eaf":[1,1,0,4],
+"group__api__network__settings.html#ga65eb99f880ed739d0f3cd393e5b56eaf":[1,1,4,0,15],
+"group__api__network__settings.html#ga70ec796b88eb6f8e7990dbf3eb2f2eff":[1,1,4,0,0],
+"group__api__network__settings.html#ga70ec796b88eb6f8e7990dbf3eb2f2eff":[1,1,0,0],
+"group__api__network__settings.html#gaa418175dd3d06b870f3dd8e035cb4dd0":[1,1,0,7],
+"group__api__network__settings.html#gaa418175dd3d06b870f3dd8e035cb4dd0":[1,1,4,0,18],
+"group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f":[1,1,0,2],
+"group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f":[1,1,4,0,2],
+"group__api__network__setup.html":[1,1,2],
+"group__api__network__setup.html#gab52d3a01427d0e8bd52460d992144f65":[1,1,2,0],
+"group__api__network__setup.html#gab52d3a01427d0e8bd52460d992144f65":[1,1,4,0,9],
+"group__api__network__setup.html#gac5ca67b7bfa587935b5619e441dc8d8a":[1,1,2,2],
+"group__api__network__setup.html#gac5ca67b7bfa587935b5619e441dc8d8a":[1,1,4,0,20],
+"group__api__network__setup.html#gaea3e133f2ee8c95d8d108c15561f3847":[1,1,2,1],
+"group__api__network__setup.html#gaea3e133f2ee8c95d8d108c15561f3847":[1,1,4,0,19],
+"group__api__network__types.html":[1,1,4],
+"group__api__network__types.html#ga026bd11cd5df47b7022362243e2d553f":[1,1,4,9],
+"group__api__network__types.html#ga04b095d2e2f32a3fd23e346a4be969d8":[1,1,4,6],
+"group__api__network__types.html#ga38e0a82235258f96340b9ce2c6e1426c":[1,1,4,7],
+"group__api__network__types.html#ga5f6f5c916a5dd1676f98da7fa511451d":[1,1,4,8],
+"group__api__network__types.html#gaa68646bb07ee9f174097b60ac7327342":[1,1,4,5],
+"group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99":[1,1,4,11],
+"group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36":[1,1,4,10],
+"group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da02f32115d4a39e6028e5ebb4944f0bec":[1,1,4,8,4],
+"group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da2ac6866940725552e31532002ef649a5":[1,1,4,8,0],
+"group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da5c790fb0440c39d95ec785e1c31c3cb2":[1,1,4,8,6],
+"group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da60569216928bd30142e2e143eaf58475":[1,1,4,8,2],
+"group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da76b3ad647f00a3dc52e71e4ed670e7dc":[1,1,4,8,7],
+"group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabb8da6425a24810668eade3488113957":[1,1,4,8,5],
+"group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabfbb179ad94f8d5a57a9da86de9c65a8":[1,1,4,8,1],
+"group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daea6aa0a779a2823eadafa82dda6b7304":[1,1,4,8,3],
+"group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daed880c261bae590a5f59aebb01b6912c":[1,1,4,8,8],
+"group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a2916360f96699b2bf42cf5e122562497":[1,1,4,11,3],
+"group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6a4dd5a93528f27eb983bf856b9f5067":[1,1,4,11,0],
+"group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6d6f2fd76cab833e55bc398541c52b46":[1,1,4,11,2],
+"group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a8e40c9f169976770c3e65b9c0e44874c":[1,1,4,11,1],
+"group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a095c1eef3bdeb16e33b1f6a976e9f6c4":[1,1,4,10,5],
+"group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2728fe7e544bee45b00ef95117085eae":[1,1,4,10,3],
 "group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2911018510263b4d6db772cf6ea69385":[1,1,4,10,0],
 "group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a5aa38a03f1ec4cdcdd1f0c41dfd19533":[1,1,4,10,2],
 "group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36ab0e9cbbf4e2c6dee74d2639caef2cffa":[1,1,4,10,4],
 "group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36ad77f98cf80b81d4c5277672402c0b713":[1,1,4,10,1],
 "group__api__network__util.html":[1,1,3],
 "group__api__network__util.html#ga1770babfc2abc6da7c085ef92709ee89":[1,1,3,0],
-"group__api__network__util.html#ga1770babfc2abc6da7c085ef92709ee89":[1,1,4,0,9],
+"group__api__network__util.html#ga1770babfc2abc6da7c085ef92709ee89":[1,1,4,0,12],
 "group__api__network__util.html#ga1da909dadb6f0e90218927ed350f72bc":[1,1,3,1],
-"group__api__network__util.html#ga1da909dadb6f0e90218927ed350f72bc":[1,1,4,0,10],
+"group__api__network__util.html#ga1da909dadb6f0e90218927ed350f72bc":[1,1,4,0,13],
 "group__api__network__util.html#gacdf014d8aca9de33dbc1563c6bb1f956":[1,1,3,2],
-"group__api__network__util.html#gacdf014d8aca9de33dbc1563c6bb1f956":[1,1,4,0,11],
+"group__api__network__util.html#gacdf014d8aca9de33dbc1563c6bb1f956":[1,1,4,0,14],
 "group__api__network__wlan.html":[1,1,1],
-"group__api__network__wlan.html#ga047ba9670f60406466391cec5bdd28e5":[1,1,1,1],
-"group__api__network__wlan.html#ga047ba9670f60406466391cec5bdd28e5":[1,1,4,0,4],
-"group__api__network__wlan.html#ga14dc0f4fa58a7ebb25b77fae22052328":[1,1,1,3],
-"group__api__network__wlan.html#ga14dc0f4fa58a7ebb25b77fae22052328":[1,1,4,0,8],
-"group__api__network__wlan.html#gac439d0af5a17da32d405e25dcba83d16":[1,1,4,0,7],
-"group__api__network__wlan.html#gac439d0af5a17da32d405e25dcba83d16":[1,1,1,2],
-"group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b":[1,1,1,0],
-"group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b":[1,1,4,0,3],
+"group__api__network__wlan.html#ga047ba9670f60406466391cec5bdd28e5":[1,1,4,0,6],
+"group__api__network__wlan.html#ga047ba9670f60406466391cec5bdd28e5":[1,1,1,2],
+"group__api__network__wlan.html#ga14dc0f4fa58a7ebb25b77fae22052328":[1,1,4,0,11],
+"group__api__network__wlan.html#ga14dc0f4fa58a7ebb25b77fae22052328":[1,1,1,6],
+"group__api__network__wlan.html#ga70991a2c5865c8f0b44b67de35f3b6b3":[1,1,4,0,4],
+"group__api__network__wlan.html#ga70991a2c5865c8f0b44b67de35f3b6b3":[1,1,1,0],
+"group__api__network__wlan.html#gaa9db3c463cf6b4f351c37671882dd3ee":[1,1,4,0,7],
+"group__api__network__wlan.html#gaa9db3c463cf6b4f351c37671882dd3ee":[1,1,1,3],
+"group__api__network__wlan.html#gaba16b9918e55c08285cf5b8b50dbabea":[1,1,1,4],
+"group__api__network__wlan.html#gaba16b9918e55c08285cf5b8b50dbabea":[1,1,4,0,8],
+"group__api__network__wlan.html#gac439d0af5a17da32d405e25dcba83d16":[1,1,1,5],
+"group__api__network__wlan.html#gac439d0af5a17da32d405e25dcba83d16":[1,1,4,0,10],
+"group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b":[1,1,4,0,5],
+"group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b":[1,1,1,1],
 "group__api__socket.html":[1,2],
 "group__api__socket__examples.html":[1,2,7],
 "group__api__socket__http.html":[1,2,3],
 "group__api__socket__http.html#ga181a03d883f60dff0c03b65e066f0eed":[1,2,3,1],
 "group__api__socket__http.html#ga181a03d883f60dff0c03b65e066f0eed":[1,2,5,0,3],
+"group__api__socket__http.html#ga1b6a3ebdbd164f0eb683fc335ef4d365":[1,2,3,5],
 "group__api__socket__http.html#ga1b6a3ebdbd164f0eb683fc335ef4d365":[1,2,5,0,7],
-"group__api__socket__http.html#ga1b6a3ebdbd164f0eb683fc335ef4d365":[1,2,3,5],
 "group__api__socket__http.html#gabcb3d69b2b1718e7ebe1ed171dec1f85":[1,2,3,4],
 "group__api__socket__http.html#gabcb3d69b2b1718e7ebe1ed171dec1f85":[1,2,5,0,6],
+"group__api__socket__http.html#gabed18edc44f464bac64ce8a6dc3617ec":[1,2,5,0,2],
 "group__api__socket__http.html#gabed18edc44f464bac64ce8a6dc3617ec":[1,2,3,0],
-"group__api__socket__http.html#gabed18edc44f464bac64ce8a6dc3617ec":[1,2,5,0,2],
+"group__api__socket__http.html#gac9b6c6a348f790cc8d43889dd72029f6":[1,2,3,2],
 "group__api__socket__http.html#gac9b6c6a348f790cc8d43889dd72029f6":[1,2,5,0,4],
-"group__api__socket__http.html#gac9b6c6a348f790cc8d43889dd72029f6":[1,2,3,2],
 "group__api__socket__http.html#gadf59ca0783b89ee32f205e33f1bd5517":[1,2,3,3],
 "group__api__socket__http.html#gadf59ca0783b89ee32f205e33f1bd5517":[1,2,5,0,5],
 "group__api__socket__macro.html":[1,2,6],
 "group__api__socket__macro.html#ga311741238658c89ea9344d32c0cec923":[1,2,6,1],
 "group__api__socket__macro.html#gae54117ebe433295ef992b9ca83c46d98":[1,2,6,0],
 "group__api__socket__misc.html":[1,2,4],
-"group__api__socket__misc.html#ga037cb2813683697342fff01239c7f6f8":[1,2,5,0,1],
-"group__api__socket__misc.html#ga037cb2813683697342fff01239c7f6f8":[1,2,4,1],
-"group__api__socket__misc.html#ga820d2fdb12d343212638e55633bd8551":[1,2,5,0,15],
-"group__api__socket__misc.html#ga820d2fdb12d343212638e55633bd8551":[1,2,4,3],
+"group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106":[1,2,5,0,0],
 "group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106":[1,2,4,0],
-"group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106":[1,2,5,0,0],
-"group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a":[1,2,5,0,8],
-"group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a":[1,2,4,2],
+"group__api__socket__misc.html#gab24204ef309b6e7a52b03b35a7046b45":[1,2,4,1],
+"group__api__socket__misc.html#gab24204ef309b6e7a52b03b35a7046b45":[1,2,5,0,1],
 "group__api__socket__tcp.html":[1,2,0],
-"group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3":[1,2,5,0,9],
-"group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3":[1,2,0,0],
-"group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0":[1,2,5,0,12],
+"group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0":[1,2,5,0,11],
 "group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0":[1,2,0,3],
-"group__api__socket__tcp.html#ga4a788d604d759b5da51f682b998b9bd2":[1,2,0,1],
-"group__api__socket__tcp.html#ga4a788d604d759b5da51f682b998b9bd2":[1,2,5,0,10],
-"group__api__socket__tcp.html#ga563831b33089437233f128483d034578":[1,2,5,0,11],
-"group__api__socket__tcp.html#ga563831b33089437233f128483d034578":[1,2,0,2],
+"group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035":[1,2,0,0],
+"group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035":[1,2,5,0,8],
+"group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa":[1,2,0,2],
+"group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa":[1,2,5,0,10],
+"group__api__socket__tcp.html#gad8e8632715a38222ce4fea5fe0aaf527":[1,2,0,1],
+"group__api__socket__tcp.html#gad8e8632715a38222ce4fea5fe0aaf527":[1,2,5,0,9],
 "group__api__socket__tls.html":[1,2,2],
-"group__api__socket__tls.html#gacf10d28ced4591d99c4113ebee6382ca":[1,2,5,0,13],
-"group__api__socket__tls.html#gacf10d28ced4591d99c4113ebee6382ca":[1,2,2,0],
+"group__api__socket__tls.html#ga4e6e89eb9aedec1ff6d25645c33f51e4":[1,2,2,0],
+"group__api__socket__tls.html#ga4e6e89eb9aedec1ff6d25645c33f51e4":[1,2,5,0,12],
 "group__api__socket__types.html":[1,2,5],
-"group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d":[1,2,5,4],
-"group__api__socket__types.html#gadc1d6e26d4138c536bd5dce7ed4569d6":[1,2,5,3],
-"group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da0c365c200e62d61bf22798c25ccb96b4":[1,2,5,4,2],
-"group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751":[1,2,5,4,4],
-"group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da6469a1b9d8fa6448c0f6f13e0028a60e":[1,2,5,4,0],
-"group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756dab1b41b1c4daf8d171414b68e9033cfbc":[1,2,5,4,3],
-"group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756daece967eb28f8913c30bc70fa1e0e5ff9":[1,2,5,4,1],
-"group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6a6d256a218aac67dffe66ae6c49a61236":[1,2,5,3,2],
-"group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6ab271a5cd1775076aeb8c25fc14da12cb":[1,2,5,3,1],
-"group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6afc257aa28936e9fa8a332995b5449685":[1,2,5,3,0],
+"group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d":[1,2,5,5],
+"group__api__socket__types.html#gadc1d6e26d4138c536bd5dce7ed4569d6":[1,2,5,4],
+"group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da0c365c200e62d61bf22798c25ccb96b4":[1,2,5,5,2],
+"group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751":[1,2,5,5,4],
+"group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da6469a1b9d8fa6448c0f6f13e0028a60e":[1,2,5,5,0],
+"group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da77625728d545a400e0eae1483225ff91":[1,2,5,5,5],
+"group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da94c82597ad724e81c0bace9ed64ebc5f":[1,2,5,5,6],
+"group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756dab1b41b1c4daf8d171414b68e9033cfbc":[1,2,5,5,3],
+"group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756daece967eb28f8913c30bc70fa1e0e5ff9":[1,2,5,5,1],
+"group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6a6d256a218aac67dffe66ae6c49a61236":[1,2,5,4,2],
+"group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6ab271a5cd1775076aeb8c25fc14da12cb":[1,2,5,4,1],
+"group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6afc257aa28936e9fa8a332995b5449685":[1,2,5,4,0],
 "group__api__socket__udp.html":[1,2,1],
-"group__api__socket__udp.html#ga80f1d19174124f3d0f246e1c1201b3ec":[1,2,5,0,14],
-"group__api__socket__udp.html#ga80f1d19174124f3d0f246e1c1201b3ec":[1,2,1,0],
-"group__conversion__util.html":[1,4],
-"group__conversion__util.html#ga13ecaf390b4bf4a68b51a6b18e669134":[1,4,6],
-"group__conversion__util.html#ga347f05073370d6872a5cdac74de39b1b":[1,4,14],
-"group__conversion__util.html#ga5a682e671900b9b7f931137deb847fa6":[1,4,7],
-"group__conversion__util.html#ga6216eed4cc05c37ce1ed13a0fbb6acd8":[1,4,10],
-"group__conversion__util.html#ga6a479a58591ead92dcf0586e11fcad17":[1,4,16],
-"group__conversion__util.html#ga7503f1876a6e1f5086d8b4bb2c1a653a":[1,4,0],
-"group__conversion__util.html#ga8d8da39cd5d2948367429ed4d8885c6b":[1,4,1],
-"group__conversion__util.html#ga93bdb8669a70adaa61dc76073ce66591":[1,4,13],
-"group__conversion__util.html#gac96e2d2fca60cba12e7429626f9186be":[1,4,4],
-"group__conversion__util.html#gacff5a4927d79e8b4c0d5a3050f5950b0":[1,4,9],
-"group__conversion__util.html#gad4661f859cfadbe193793898671043c9":[1,4,11],
-"group__conversion__util.html#gad74fbe6faf90d987b31380978f3ea341":[1,4,2],
-"group__conversion__util.html#gad7d49be19f9ca91bc129668dd50d9e57":[1,4,15],
-"group__conversion__util.html#gae02c549079cfb0350117cd6343a3d66f":[1,4,8],
-"group__conversion__util.html#gae995028f5a70c58ccf6013c9811e79aa":[1,4,3],
-"group__conversion__util.html#gafce7929a10e16cf9be7307a2f97bef3f":[1,4,12],
-"group__conversion__util.html#gaff8b0af70f4d4be792b943ad3af27303":[1,4,5],
+"group__api__socket__udp.html#ga067fb0d662d8e27e3f5b561ded29a51a":[1,2,1,1],
+"group__api__socket__udp.html#ga067fb0d662d8e27e3f5b561ded29a51a":[1,2,5,0,14],
+"group__api__socket__udp.html#ga0ca5eabcd64ce45b574205447101f8aa":[1,2,1,0],
+"group__api__socket__udp.html#ga0ca5eabcd64ce45b574205447101f8aa":[1,2,5,0,13],
+"group__conversion__util.html":[1,5],
+"group__conversion__util.html#ga01520d55f1923d90fb899ddef2f21cdf":[1,5,6],
+"group__conversion__util.html#ga02e6b01f11f2283208f051b1b49b634c":[1,5,5],
+"group__conversion__util.html#ga347f05073370d6872a5cdac74de39b1b":[1,5,14],
+"group__conversion__util.html#ga5a682e671900b9b7f931137deb847fa6":[1,5,7],
+"group__conversion__util.html#ga6216eed4cc05c37ce1ed13a0fbb6acd8":[1,5,10],
+"group__conversion__util.html#ga6a479a58591ead92dcf0586e11fcad17":[1,5,16],
+"group__conversion__util.html#ga7503f1876a6e1f5086d8b4bb2c1a653a":[1,5,0],
+"group__conversion__util.html#ga8d8da39cd5d2948367429ed4d8885c6b":[1,5,1],
+"group__conversion__util.html#ga93bdb8669a70adaa61dc76073ce66591":[1,5,13],
+"group__conversion__util.html#gac96e2d2fca60cba12e7429626f9186be":[1,5,4],
+"group__conversion__util.html#gacff5a4927d79e8b4c0d5a3050f5950b0":[1,5,9],
+"group__conversion__util.html#gad4661f859cfadbe193793898671043c9":[1,5,11],
+"group__conversion__util.html#gad74fbe6faf90d987b31380978f3ea341":[1,5,2],
+"group__conversion__util.html#gad7d49be19f9ca91bc129668dd50d9e57":[1,5,15],
+"group__conversion__util.html#gae02c549079cfb0350117cd6343a3d66f":[1,5,8],
+"group__conversion__util.html#gae8b534c249d503aa764017bb088f3890":[1,5,12],
+"group__conversion__util.html#gae995028f5a70c58ccf6013c9811e79aa":[1,5,3],
 "hierarchy.html":[3,2],
 "http_get_2example_8cpp-example.html":[2,0],
+"index.html":[0],
 "index.html":[],
-"index.html":[0],
 "index.html#Overview":[0,0],
 "index.html#features":[0,2],
 "index.html#notes":[0,1],
@@ -109,6 +182,8 @@
 "namespacewiconnect.html":[3,0,0],
 "ota_2example_8cpp-example.html":[2,2],
 "pages.html":[],
+"structwiconnect_1_1_ghm_element.html":[1,4,3,1],
+"structwiconnect_1_1_ghm_element_array.html":[1,4,3,2],
 "structwiconnect_1_1_http_socket_args.html":[1,2,5,1],
 "structwiconnect_1_1_http_socket_args.html#a401fd2b9a75ec8c76d59bd798d36e25b":[1,2,5,1,1],
 "structwiconnect_1_1_http_socket_args.html#a57564bc3fed87b9ab2d3f4fff3d2dc24":[1,2,5,1,2],
--- a/doc/html/ota_2example_8cpp-example.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/ota_2example_8cpp-example.html	Mon Oct 27 13:42:26 2014 -0700
@@ -118,13 +118,13 @@
 <div class="line"><span class="comment">// Look for this name in your WiFi settings</span></div>
 <div class="line"><span class="comment">// (e.g. your phone&#39;s list of WiFi networks in the WiFi settings menu)</span></div>
 <div class="line"><span class="comment">// tip: add double-quotes around SSID to add spaces to name</span></div>
-<div class="line"><span class="comment">//#define NETWORK_SSID &quot;\&quot;&lt;YOUR NETWORK NAME HERE&gt;\&quot;&quot;</span></div>
-<div class="line"><span class="preprocessor">#define NETWORK_SSID &quot;ASUS&quot;</span></div>
+<div class="line"><span class="preprocessor">#define NETWORK_SSID &quot;\&quot;&lt;YOUR NETWORK NAME HERE&gt;\&quot;&quot;</span></div>
+<div class="line"></div>
 <div class="line"></div>
 <div class="line"><span class="comment">// This is the password of your WiFi network</span></div>
 <div class="line"><span class="comment">// Leave as empty string (e.g &quot;&quot;) to connect to OPEN network</span></div>
-<div class="line"><span class="comment">//#define NETWORK_PASSWORD &quot;\&quot;&lt;YOUR NETWORK PASSWORD HERE&gt;\&quot;&quot;</span></div>
-<div class="line"><span class="preprocessor">#define NETWORK_PASSWORD &quot;Y@nkee123&quot;</span></div>
+<div class="line"><span class="preprocessor">#define NETWORK_PASSWORD &quot;\&quot;&lt;YOUR NETWORK PASSWORD HERE&gt;\&quot;&quot;</span></div>
+<div class="line"></div>
 <div class="line"></div>
 <div class="line"></div>
 <div class="line"></div>
--- a/doc/html/ota_2example_8cpp_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/ota_2example_8cpp_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -110,13 +110,13 @@
 <div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment">// Look for this name in your WiFi settings</span></div>
 <div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment">// (e.g. your phone&#39;s list of WiFi networks in the WiFi settings menu)</span></div>
 <div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment">// tip: add double-quotes around SSID to add spaces to name</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment">//#define NETWORK_SSID &quot;\&quot;&lt;YOUR NETWORK NAME HERE&gt;\&quot;&quot;</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#define NETWORK_SSID &quot;ASUS&quot;</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#define NETWORK_SSID &quot;\&quot;&lt;YOUR NETWORK NAME HERE&gt;\&quot;&quot;</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div>
 <div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div>
 <div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">// This is the password of your WiFi network</span></div>
 <div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">// Leave as empty string (e.g &quot;&quot;) to connect to OPEN network</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">//#define NETWORK_PASSWORD &quot;\&quot;&lt;YOUR NETWORK PASSWORD HERE&gt;\&quot;&quot;</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#define NETWORK_PASSWORD &quot;Y@nkee123&quot;</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#define NETWORK_PASSWORD &quot;\&quot;&lt;YOUR NETWORK PASSWORD HERE&gt;\&quot;&quot;</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div>
 <div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div>
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div>
 <div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div>
@@ -216,9 +216,9 @@
 <div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    <span class="keywordflow">while</span>(<span class="keyword">true</span>){} <span class="comment">// infinite loop</span></div>
 <div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;}</div>
 <div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div>
-<div class="ttc" id="classwiconnect_1_1_serial_config_html"><div class="ttname"><a href="classwiconnect_1_1_serial_config.html">wiconnect::SerialConfig</a></div><div class="ttdoc">Host<->Wiconnect Module serial configuration. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00129">sdk.h:129</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7">wiconnect::WICONNECT_SUCCESS</a></div><div class="ttdoc">Command successfully completed. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00165">WiconnectTypes.h:165</a></div></div>
-<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00074">WiconnectInterface.h:74</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_serial_config_html"><div class="ttname"><a href="classwiconnect_1_1_serial_config.html">wiconnect::SerialConfig</a></div><div class="ttdoc">Host<->Wiconnect Module serial configuration. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00140">sdk.h:140</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7">wiconnect::WICONNECT_SUCCESS</a></div><div class="ttdoc">Command successfully completed. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00172">WiconnectTypes.h:172</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00078">WiconnectInterface.h:78</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/sdk_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/sdk_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -123,93 +123,96 @@
 <div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div>
 <div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#gae7b6cfdff3a9aef465d5c4434937417d">   61</a></span>&#160;<span class="preprocessor">#define WICONNECT_USE_DEFAULT_STRING_BUFFERS</span></div>
 <div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;</div>
-<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#gaaff0108d684631b2bb88e1f6c255e9ac">   67</a></span>&#160;<span class="preprocessor">#define WICONNECT_DEFAULT_MALLOC malloc</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga593c6629b59a853057cd6a5547ed3f4f">   67</a></span>&#160;<span class="preprocessor">#define WICONNECT_GPIO_IRQ_ENABLED</span></div>
 <div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div>
-<div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga0a14e4bc7a0aed9311b552c0ee8fd7ef">   72</a></span>&#160;<span class="preprocessor">#define WICONNECT_DEFAULT_FREE free</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div>
-<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga2e7ffaac225bc56852bb504f531aafa0">   78</a></span>&#160;<span class="preprocessor">#define WICONNECT_DEFAULT_BAUD 115200</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#gaaff0108d684631b2bb88e1f6c255e9ac">   73</a></span>&#160;<span class="preprocessor">#define WICONNECT_DEFAULT_MALLOC malloc</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga0a14e4bc7a0aed9311b552c0ee8fd7ef">   78</a></span>&#160;<span class="preprocessor">#define WICONNECT_DEFAULT_FREE free</span></div>
 <div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div>
-<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga7741b7a0fbbf9b7e47898b7d30e5e321">   83</a></span>&#160;<span class="preprocessor">#define WICONNECT_DEFAULT_TIMEOUT 3000 // ms</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div>
-<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga7352d6662e438d0969593df9e657d43f">   88</a></span>&#160;<span class="preprocessor">#define WICONNECT_MAX_QUEUED_COMMANDS 8</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div>
-<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga9e7032540d999edf0dbae31e51c85962">   93</a></span>&#160;<span class="preprocessor">#define WICONNECT_DEFAULT_COMMAND_PROCESSING_PERIOD 50 // ms</span></div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div>
-<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga347d0e1228e8174563c6bcf48de18401">   99</a></span>&#160;<span class="preprocessor">#define WICONNECT_DEFAULT_NONBLOCKING false</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga2e7ffaac225bc56852bb504f531aafa0">   84</a></span>&#160;<span class="preprocessor">#define WICONNECT_DEFAULT_BAUD 115200</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga7741b7a0fbbf9b7e47898b7d30e5e321">   89</a></span>&#160;<span class="preprocessor">#define WICONNECT_DEFAULT_TIMEOUT 3000 // ms</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div>
+<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga7352d6662e438d0969593df9e657d43f">   94</a></span>&#160;<span class="preprocessor">#define WICONNECT_MAX_QUEUED_COMMANDS 8</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga9e7032540d999edf0dbae31e51c85962">   99</a></span>&#160;<span class="preprocessor">#define WICONNECT_DEFAULT_COMMAND_PROCESSING_PERIOD 50 // ms</span></div>
 <div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="comment">// ----------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<span class="preprocessor">#define WICONNECT_GPIO_BASE_CLASS : DigitalOut</span></div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;<span class="preprocessor">#define WICONNECT_SERIAL_BASE_CLASS : RawSerial</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;<span class="preprocessor">#define WICONNECT_PERIODIC_TIMER_BASE_CLASS : Ticker</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="preprocessor">#define WICONNECT_EXTERNAL_INTERRUPT_GPIO_BASE_CLASS : InterruptIn</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="preprocessor">#define WICONNECT_MAX_PIN_IRQ_HANDLERS 3</span></div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div>
+<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga347d0e1228e8174563c6bcf48de18401">  105</a></span>&#160;<span class="preprocessor">#define WICONNECT_DEFAULT_NONBLOCKING false</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;</div>
+<div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga80e1660ca602aff9f95ccbb4822fad9c">  111</a></span>&#160;<span class="preprocessor">#define WICONNECT_ENABLE_DEBUGGING</span></div>
 <div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div>
-<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">  117</a></span>&#160;<span class="preprocessor">#define PIN_NC NC</span></div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;</div>
-<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">  123</a></span>&#160;<span class="keyword">typedef</span> PinName <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a>;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div>
-<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classwiconnect_1_1_serial_config.html">  129</a></span>&#160;<span class="keyword">class </span><a class="code" href="classwiconnect_1_1_serial_config.html">SerialConfig</a></div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;{</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> rx;</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> tx;</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> cts;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> rts;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <span class="keywordtype">int</span> baud;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    <span class="keywordtype">void</span> *serialRxBuffer;</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    <span class="keywordtype">int</span> serialRxBufferSize;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    <a class="code" href="classwiconnect_1_1_serial_config.html">SerialConfig</a>(<a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> rx, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> tx, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> cts, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> rts, <span class="keywordtype">int</span> baud, <span class="keywordtype">int</span> serialRxBufferSize, <span class="keywordtype">void</span> *serialRxBuffer = NULL)</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    {</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;        this-&gt;rx =rx;</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;        this-&gt;tx =tx;</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;        this-&gt;cts =cts;</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;        this-&gt;rts =rts;</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;        this-&gt;baud = baud;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;        this-&gt;serialRxBuffer =serialRxBuffer;</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;        this-&gt;serialRxBufferSize =serialRxBufferSize;</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    }</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;<span class="comment">// ----------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;<span class="preprocessor">#define WICONNECT_GPIO_BASE_CLASS : DigitalOut</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;<span class="preprocessor">#define WICONNECT_SERIAL_BASE_CLASS : RawSerial</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;<span class="preprocessor">#define WICONNECT_PERIODIC_TIMER_BASE_CLASS : Ticker</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="preprocessor">#define WICONNECT_EXTERNAL_INTERRUPT_GPIO_BASE_CLASS : InterruptIn</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;<span class="preprocessor">#define WICONNECT_MAX_PIN_IRQ_HANDLERS 3</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div>
+<div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">  128</a></span>&#160;<span class="preprocessor">#define PIN_NC NC</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div>
+<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">  134</a></span>&#160;<span class="keyword">typedef</span> PinName <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a>;</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div>
+<div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classwiconnect_1_1_serial_config.html">  140</a></span>&#160;<span class="keyword">class </span><a class="code" href="classwiconnect_1_1_serial_config.html">SerialConfig</a></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;{</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> rx;</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> tx;</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> cts;</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> rts;</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    <span class="keywordtype">int</span> baud;</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    <span class="keywordtype">void</span> *serialRxBuffer;</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    <span class="keywordtype">int</span> serialRxBufferSize;</div>
 <div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    <a class="code" href="classwiconnect_1_1_serial_config.html">SerialConfig</a>(<a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> rx, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> tx, <span class="keywordtype">int</span> serialRxBufferSize, <span class="keywordtype">void</span> *serialRxBuffer = NULL)</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    <a class="code" href="classwiconnect_1_1_serial_config.html">SerialConfig</a>(<a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> rx, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> tx, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> cts, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> rts, <span class="keywordtype">int</span> baud, <span class="keywordtype">int</span> serialRxBufferSize, <span class="keywordtype">void</span> *serialRxBuffer = NULL)</div>
 <div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    {</div>
 <div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;        this-&gt;rx =rx;</div>
 <div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;        this-&gt;tx =tx;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;        this-&gt;cts = <a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>;</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;        this-&gt;rts = <a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>;</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;        this-&gt;baud = <a class="code" href="group__api__core__macro.html#ga2e7ffaac225bc56852bb504f531aafa0">WICONNECT_DEFAULT_BAUD</a>;</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;        this-&gt;cts =cts;</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;        this-&gt;rts =rts;</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;        this-&gt;baud = baud;</div>
 <div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;        this-&gt;serialRxBuffer =serialRxBuffer;</div>
 <div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;        this-&gt;serialRxBufferSize =serialRxBufferSize;</div>
 <div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    }</div>
 <div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    <a class="code" href="classwiconnect_1_1_serial_config.html">SerialConfig</a>(<a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> rx, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> tx)</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    <a class="code" href="classwiconnect_1_1_serial_config.html">SerialConfig</a>(<a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> rx, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> tx, <span class="keywordtype">int</span> serialRxBufferSize, <span class="keywordtype">void</span> *serialRxBuffer = NULL)</div>
 <div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    {</div>
 <div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;        this-&gt;rx =rx;</div>
 <div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;        this-&gt;tx =tx;</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;        this-&gt;cts =<a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>;</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;        this-&gt;rts =<a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>;</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;        this-&gt;cts = <a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>;</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;        this-&gt;rts = <a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>;</div>
 <div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;        this-&gt;baud = <a class="code" href="group__api__core__macro.html#ga2e7ffaac225bc56852bb504f531aafa0">WICONNECT_DEFAULT_BAUD</a>;</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;        this-&gt;serialRxBuffer =NULL;</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;        this-&gt;serialRxBufferSize =0;</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;        this-&gt;serialRxBuffer =serialRxBuffer;</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;        this-&gt;serialRxBufferSize =serialRxBufferSize;</div>
 <div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    }</div>
 <div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;};</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;</div>
-<div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga596d1da2fb23f4e748c83d64a47e10b3">  180</a></span>&#160;<span class="preprocessor">#define delayMs(ms) wait_ms(ms)</span></div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    <a class="code" href="classwiconnect_1_1_serial_config.html">SerialConfig</a>(<a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> rx, <a class="code" href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">Pin</a> tx)</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    {</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;        this-&gt;rx =rx;</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;        this-&gt;tx =tx;</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;        this-&gt;cts =<a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>;</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;        this-&gt;rts =<a class="code" href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a>;</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;        this-&gt;baud = <a class="code" href="group__api__core__macro.html#ga2e7ffaac225bc56852bb504f531aafa0">WICONNECT_DEFAULT_BAUD</a>;</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;        this-&gt;serialRxBuffer =NULL;</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;        this-&gt;serialRxBufferSize =0;</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    }</div>
 <div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;}</div>
-<div class="ttc" id="classwiconnect_1_1_serial_config_html"><div class="ttname"><a href="classwiconnect_1_1_serial_config.html">wiconnect::SerialConfig</a></div><div class="ttdoc">Host<->Wiconnect Module serial configuration. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00129">sdk.h:129</a></div></div>
-<div class="ttc" id="group__api__core__types_html_ga1cf4dfa71da0b0dc3dc707dacf56cc9c"><div class="ttname"><a href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">wiconnect::Pin</a></div><div class="ttdeci">PinName Pin</div><div class="ttdoc">Pin name on HOST. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00123">sdk.h:123</a></div></div>
-<div class="ttc" id="group__api__core__macro_html_ga2e7ffaac225bc56852bb504f531aafa0"><div class="ttname"><a href="group__api__core__macro.html#ga2e7ffaac225bc56852bb504f531aafa0">WICONNECT_DEFAULT_BAUD</a></div><div class="ttdeci">#define WICONNECT_DEFAULT_BAUD</div><div class="ttdoc">The default Host<->Wiconnect Module serial BAUD rate. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00078">sdk.h:78</a></div></div>
-<div class="ttc" id="group__api__core__macro_html_gaa1dbeca66111f3a22d0ee6b122d69270"><div class="ttname"><a href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a></div><div class="ttdeci">#define PIN_NC</div><div class="ttdoc">Default value for a pin, Not connected. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00117">sdk.h:117</a></div></div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;};</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div>
+<div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="group__api__core__macro.html#ga596d1da2fb23f4e748c83d64a47e10b3">  191</a></span>&#160;<span class="preprocessor">#define delayMs(ms) wait_ms(ms)</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;}</div>
+<div class="ttc" id="classwiconnect_1_1_serial_config_html"><div class="ttname"><a href="classwiconnect_1_1_serial_config.html">wiconnect::SerialConfig</a></div><div class="ttdoc">Host<->Wiconnect Module serial configuration. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00140">sdk.h:140</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga1cf4dfa71da0b0dc3dc707dacf56cc9c"><div class="ttname"><a href="group__api__core__types.html#ga1cf4dfa71da0b0dc3dc707dacf56cc9c">wiconnect::Pin</a></div><div class="ttdeci">PinName Pin</div><div class="ttdoc">Pin name on HOST. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00134">sdk.h:134</a></div></div>
+<div class="ttc" id="group__api__core__macro_html_ga2e7ffaac225bc56852bb504f531aafa0"><div class="ttname"><a href="group__api__core__macro.html#ga2e7ffaac225bc56852bb504f531aafa0">WICONNECT_DEFAULT_BAUD</a></div><div class="ttdeci">#define WICONNECT_DEFAULT_BAUD</div><div class="ttdoc">The default Host<->Wiconnect Module serial BAUD rate. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00084">sdk.h:84</a></div></div>
+<div class="ttc" id="group__api__core__macro_html_gaa1dbeca66111f3a22d0ee6b122d69270"><div class="ttname"><a href="group__api__core__macro.html#gaa1dbeca66111f3a22d0ee6b122d69270">PIN_NC</a></div><div class="ttdeci">#define PIN_NC</div><div class="ttdoc">Default value for a pin, Not connected. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00128">sdk.h:128</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/sdk_types_8h_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/sdk_types_8h_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -102,7 +102,7 @@
 </div><!--header-->
 <div class="contents">
 <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &quot;types/Socket/mBedSocketApi.h&quot;</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &quot;api/types/Socket/mBedSocketApi.h&quot;</span></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- a/doc/html/search/all_0.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/all_0.js	Mon Oct 27 13:42:26 2014 -0700
@@ -3,5 +3,6 @@
   ['align_5f4',['ALIGN_4',['../group__api__core__macro.html#ga8d334bd237af6b4e1eb929ef32b33ab0',1,'WiconnectTypes.h']]],
   ['align_5f8',['ALIGN_8',['../group__api__core__macro.html#gad7bc04eee187f219f2544905267568b0',1,'WiconnectTypes.h']]],
   ['align_5fn',['ALIGN_n',['../group__api__core__macro.html#ga346c951fa5af23cdbf1d18a59b2babd1',1,'WiconnectTypes.h']]],
+  ['activation',['Activation',['../group__api__ghm__activate.html',1,'']]],
   ['array_5fcount',['ARRAY_COUNT',['../group__api__core__macro.html#ga77baa56c8d3584b953f0a2626e6844ad',1,'WiconnectTypes.h']]]
 ];
--- a/doc/html/search/all_1.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/all_1.js	Mon Oct 27 13:42:26 2014 -0700
@@ -5,7 +5,7 @@
   ['certname',['certName',['../structwiconnect_1_1_http_socket_args.html#a6dda2d739bd2c43d1b63d7a526ecf95c',1,'wiconnect::HttpSocketArgs']]],
   ['checkcurrentcommand',['checkCurrentCommand',['../group__api__core__send__command.html#gaf48c1ec0b92af2619ab846baaaa471cd',1,'wiconnect::Wiconnect']]],
   ['closeallsockets',['closeAllSockets',['../group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106',1,'wiconnect::SocketInterface']]],
-  ['connect',['connect',['../group__api__socket__misc.html#ga037cb2813683697342fff01239c7f6f8',1,'wiconnect::SocketInterface']]],
+  ['connect',['connect',['../group__api__socket__misc.html#gab24204ef309b6e7a52b03b35a7046b45',1,'wiconnect::SocketInterface']]],
   ['contexttype',['contextType',['../structwiconnect_1_1_http_socket_args.html#a401fd2b9a75ec8c76d59bd798d36e25b',1,'wiconnect::HttpSocketArgs']]],
   ['conversion_20utilities',['Conversion Utilities',['../group__conversion__util.html',1,'']]],
   ['createfile',['createFile',['../group__api__file__methods.html#ga16fb09105975644879eb09581ce486e5',1,'wiconnect::FileInterface']]]
--- a/doc/html/search/all_10.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/all_10.js	Mon Oct 27 13:42:26 2014 -0700
@@ -7,12 +7,14 @@
   ['scan',['scan',['../group__api__network__util.html#gacdf014d8aca9de33dbc1563c6bb1f956',1,'wiconnect::NetworkInterface']]],
   ['scanresult',['ScanResult',['../classwiconnect_1_1_scan_result.html',1,'wiconnect']]],
   ['scanresultlist',['ScanResultList',['../classwiconnect_1_1_scan_result_list.html',1,'wiconnect']]],
-  ['sendcommand',['sendCommand',['../group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c',1,'wiconnect::Wiconnect::sendCommand(const Callback &amp;completeCallback, char *responseBuffer, int responseBufferLen, int timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd, va_list vaList)'],['../group__api__core__send__command.html#gad23730a1f2f7714ef962f24a0f99f0f7',1,'wiconnect::Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen, int timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd, va_list vaList)'],['../group__api__core__send__command.html#ga0e0591e923da9ab814bb3dd3afbda197',1,'wiconnect::Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen, int timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd,...)'],['../group__api__core__send__command.html#gadd347dd3952ebab2fa27561c12858f65',1,'wiconnect::Wiconnect::sendCommand(int timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd,...)'],['../group__api__core__send__command.html#gaca2f1b17d2cc98cbc6dac219ffcf9e84',1,'wiconnect::Wiconnect::sendCommand(const ReaderFunc &amp;reader, void *user, const char *cmd,...)'],['../group__api__core__send__command.html#ga3655750f929f8f4e966278193d0385a9',1,'wiconnect::Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen, int timeoutMs, const char *cmd,...)'],['../group__api__core__send__command.html#gaf93db1b2730bb586287f7756f3cdf092',1,'wiconnect::Wiconnect::sendCommand(const Callback &amp;completeCallback, char *responseBuffer, int responseBufferLen, const char *cmd,...)'],['../group__api__core__send__command.html#gaac75ca154bd5d5a21c714dd828a92363',1,'wiconnect::Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen, const char *cmd,...)'],['../group__api__core__send__command.html#ga7eb983a196daa5de20a73fd234dc6f64',1,'wiconnect::Wiconnect::sendCommand(const Callback &amp;completeCallback, const char *cmd,...)'],['../group__api__core__send__command.html#gadad1c5b3df07a24ab09492edf93dd1f4',1,'wiconnect::Wiconnect::sendCommand(const char *cmd,...)'],['../group__api__core__send__command.html#gaa6d744ec08ba6c9abf451bdc2b0beb00',1,'wiconnect::Wiconnect::sendCommand(const Callback &amp;completeCallback, int timeoutMs, const char *cmd,...)'],['../group__api__core__send__command.html#gace479d34633141ff1eefa0e98c4d2351',1,'wiconnect::Wiconnect::sendCommand(int timeoutMs, const char *cmd,...)'],['../group__api__core__send__command.html#ga9d0ade0ec2866d7e0df5391bc69f5698',1,'wiconnect::Wiconnect::sendCommand(const char *cmd, va_list vaList)']]],
+  ['sendcommand',['sendCommand',['../group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505',1,'wiconnect::Wiconnect::sendCommand(const Callback &amp;completeCallback, char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd, va_list vaList)'],['../group__api__core__send__command.html#gaa36b07b28a166fe51f9dc92bcab5d3d8',1,'wiconnect::Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd, va_list vaList)'],['../group__api__core__send__command.html#gabe0e5c170b9c6ec7d6dc96a3639c721e',1,'wiconnect::Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd,...)'],['../group__api__core__send__command.html#ga8c6d84b338847fbdd41f61c5375117e9',1,'wiconnect::Wiconnect::sendCommand(TimerTimeout timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd,...)'],['../group__api__core__send__command.html#gaca2f1b17d2cc98cbc6dac219ffcf9e84',1,'wiconnect::Wiconnect::sendCommand(const ReaderFunc &amp;reader, void *user, const char *cmd,...)'],['../group__api__core__send__command.html#ga5f437c3518de14706c6fcff32a0b0f97',1,'wiconnect::Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const char *cmd,...)'],['../group__api__core__send__command.html#gaf93db1b2730bb586287f7756f3cdf092',1,'wiconnect::Wiconnect::sendCommand(const Callback &amp;completeCallback, char *responseBuffer, int responseBufferLen, const char *cmd,...)'],['../group__api__core__send__command.html#gaac75ca154bd5d5a21c714dd828a92363',1,'wiconnect::Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen, const char *cmd,...)'],['../group__api__core__send__command.html#ga7eb983a196daa5de20a73fd234dc6f64',1,'wiconnect::Wiconnect::sendCommand(const Callback &amp;completeCallback, const char *cmd,...)'],['../group__api__core__send__command.html#gadad1c5b3df07a24ab09492edf93dd1f4',1,'wiconnect::Wiconnect::sendCommand(const char *cmd,...)'],['../group__api__core__send__command.html#ga9a89a0dd00f8eedb5e3eb8d4a4ed58df',1,'wiconnect::Wiconnect::sendCommand(const Callback &amp;completeCallback, TimerTimeout timeoutMs, const char *cmd,...)'],['../group__api__core__send__command.html#ga5666d99d72494995db0a812fcc9bbd09',1,'wiconnect::Wiconnect::sendCommand(TimerTimeout timeoutMs, const char *cmd,...)'],['../group__api__core__send__command.html#ga9d0ade0ec2866d7e0df5391bc69f5698',1,'wiconnect::Wiconnect::sendCommand(const char *cmd, va_list vaList)']]],
   ['serialconfig',['SerialConfig',['../classwiconnect_1_1_serial_config.html',1,'wiconnect']]],
   ['setassertlogger',['setAssertLogger',['../group__api__core__settings.html#ga273f67fede26be4a3d5d909c5cf8c7e0',1,'wiconnect::Wiconnect']]],
-  ['setcommanddefaulttimeout',['setCommandDefaultTimeout',['../group__api__core__settings.html#gaaaf8be221699870053ad98911b066a32',1,'wiconnect::Wiconnect']]],
+  ['setblockingenabled',['setBlockingEnabled',['../group__api__core__settings.html#ga851795595a422a14249b7ea9f0038c4c',1,'wiconnect::Wiconnect']]],
+  ['setcommanddefaulttimeout',['setCommandDefaultTimeout',['../group__api__core__settings.html#gacae50138f9388a66496408f9c2bf6a6f',1,'wiconnect::Wiconnect']]],
   ['setdebuglogger',['setDebugLogger',['../group__api__core__settings.html#ga75fb083451ee530a1c19e6a4c1be185e',1,'wiconnect::Wiconnect']]],
   ['setdhcpenabled',['setDhcpEnabled',['../group__api__network__settings.html#ga65eb99f880ed739d0f3cd393e5b56eaf',1,'wiconnect::NetworkInterface']]],
+  ['setdnsaddress',['setDnsAddress',['../group__api__network__settings.html#ga258d8b80064c6ce311a433affe63a0e9',1,'wiconnect::NetworkInterface']]],
   ['setipsettings',['setIpSettings',['../group__api__network__settings.html#ga2f7ec21084d3f2835d9c1c201915a9e0',1,'wiconnect::NetworkInterface::setIpSettings(uint32_t ip, uint32_t netmask, uint32_t gateway)'],['../group__api__network__settings.html#gaa418175dd3d06b870f3dd8e035cb4dd0',1,'wiconnect::NetworkInterface::setIpSettings(const char *ip, const char *netmask, const char *gateway)']]],
   ['setpintogpiomapper',['setPinToGpioMapper',['../group__api__core__settings.html#ga180b043ec83c53b5bf6b9ef2b187d08d',1,'wiconnect::Wiconnect']]],
   ['setsetting',['setSetting',['../group__api__core__settings.html#gace51a2841415a53f54fcce336182f0ec',1,'wiconnect::Wiconnect::setSetting(const char *settingStr, uint32_t value)'],['../group__api__core__settings.html#ga085a17a466905069940611bdd14c1d3e',1,'wiconnect::Wiconnect::setSetting(const char *settingStr, const char *value)']]],
@@ -22,16 +24,18 @@
   ['socket_5fhttp_5fhead',['SOCKET_HTTP_HEAD',['../group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6a6d256a218aac67dffe66ae6c49a61236',1,'wiconnect']]],
   ['socket_5fhttp_5fpost',['SOCKET_HTTP_POST',['../group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6ab271a5cd1775076aeb8c25fc14da12cb',1,'wiconnect']]],
   ['socket_5finvalid_5fhandle',['SOCKET_INVALID_HANDLE',['../group__api__socket__macro.html#ga311741238658c89ea9344d32c0cec923',1,'WiconnectTypes.h']]],
+  ['socket_5ftype_5fghm',['SOCKET_TYPE_GHM',['../group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da94c82597ad724e81c0bace9ed64ebc5f',1,'wiconnect']]],
   ['socket_5ftype_5fhttp',['SOCKET_TYPE_HTTP',['../group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751',1,'wiconnect']]],
   ['socket_5ftype_5ftcp',['SOCKET_TYPE_TCP',['../group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756daece967eb28f8913c30bc70fa1e0e5ff9',1,'wiconnect']]],
   ['socket_5ftype_5ftls',['SOCKET_TYPE_TLS',['../group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da0c365c200e62d61bf22798c25ccb96b4',1,'wiconnect']]],
   ['socket_5ftype_5fudp',['SOCKET_TYPE_UDP',['../group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756dab1b41b1c4daf8d171414b68e9033cfbc',1,'wiconnect']]],
+  ['socket_5ftype_5fudps',['SOCKET_TYPE_UDPS',['../group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da77625728d545a400e0eae1483225ff91',1,'wiconnect']]],
   ['socket_5ftype_5funknown',['SOCKET_TYPE_UNKNOWN',['../group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da6469a1b9d8fa6448c0f6f13e0028a60e',1,'wiconnect']]],
   ['socketinterface',['SocketInterface',['../classwiconnect_1_1_socket_interface.html',1,'wiconnect']]],
   ['sockettype',['SocketType',['../group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d',1,'wiconnect']]],
   ['ssid',['Ssid',['../structwiconnect_1_1_ssid.html',1,'wiconnect']]],
   ['ssidstrbuffer',['SsidStrBuffer',['../group__api__network__types.html#ga38e0a82235258f96340b9ce2c6e1426c',1,'wiconnect']]],
-  ['ssidtostr',['ssidToStr',['../group__conversion__util.html#gafce7929a10e16cf9be7307a2f97bef3f',1,'wiconnect::NetworkInterface']]],
+  ['ssidtostr',['ssidToStr',['../group__conversion__util.html#gae8b534c249d503aa764017bb088f3890',1,'wiconnect::NetworkInterface']]],
   ['startwebsetup',['startWebSetup',['../group__api__network__setup.html#gaea3e133f2ee8c95d8d108c15561f3847',1,'wiconnect::NetworkInterface']]],
   ['stopcurrentcommand',['stopCurrentCommand',['../group__api__core__send__command.html#ga4a9bd29de1d5c496fbcc28ecfa51e7c0',1,'wiconnect::Wiconnect']]],
   ['stopwebsetup',['stopWebSetup',['../group__api__network__setup.html#gac5ca67b7bfa587935b5619e441dc8d8a',1,'wiconnect::NetworkInterface']]],
--- a/doc/html/search/all_11.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/all_11.js	Mon Oct 27 13:42:26 2014 -0700
@@ -2,14 +2,16 @@
 [
   ['types',['Types',['../group__api__core__types.html',1,'']]],
   ['types',['Types',['../group__api__file__types.html',1,'']]],
+  ['types',['Types',['../group__api__ghm__types.html',1,'']]],
   ['types',['Types',['../group__api__network__types.html',1,'']]],
   ['tcp_20methods',['TCP Methods',['../group__api__socket__tcp.html',1,'']]],
   ['tls_20methods',['TLS Methods',['../group__api__socket__tls.html',1,'']]],
   ['types',['Types',['../group__api__socket__types.html',1,'']]],
-  ['tcpaccept',['tcpAccept',['../group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3',1,'wiconnect::SocketInterface']]],
-  ['tcpconnect',['tcpConnect',['../group__api__socket__tcp.html#ga4a788d604d759b5da51f682b998b9bd2',1,'wiconnect::SocketInterface']]],
-  ['tcplisten',['tcpListen',['../group__api__socket__tcp.html#ga563831b33089437233f128483d034578',1,'wiconnect::SocketInterface']]],
+  ['tcpaccept',['tcpAccept',['../group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035',1,'wiconnect::SocketInterface']]],
+  ['tcpconnect',['tcpConnect',['../group__api__socket__tcp.html#gad8e8632715a38222ce4fea5fe0aaf527',1,'wiconnect::SocketInterface']]],
+  ['tcplisten',['tcpListen',['../group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa',1,'wiconnect::SocketInterface']]],
   ['tcpserverstop',['tcpServerStop',['../group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0',1,'wiconnect::SocketInterface']]],
-  ['tlsconnect',['tlsConnect',['../group__api__socket__tls.html#gacf10d28ced4591d99c4113ebee6382ca',1,'wiconnect::SocketInterface']]],
+  ['timertimeout',['TimerTimeout',['../namespacewiconnect.html#a0c27570b2913afc6339821df7c934810',1,'wiconnect']]],
+  ['tlsconnect',['tlsConnect',['../group__api__socket__tls.html#ga4e6e89eb9aedec1ff6d25645c33f51e4',1,'wiconnect::SocketInterface']]],
   ['type',['type',['../structwiconnect_1_1_http_socket_args.html#adffa0b3f63392a28c19aef272c918772',1,'wiconnect::HttpSocketArgs']]]
 ];
--- a/doc/html/search/all_12.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/all_12.js	Mon Oct 27 13:42:26 2014 -0700
@@ -2,7 +2,7 @@
 [
   ['utility_20methods',['Utility Methods',['../group__api__network__util.html',1,'']]],
   ['udp_20methods',['UDP Methods',['../group__api__socket__udp.html',1,'']]],
-  ['udpconnect',['udpConnect',['../group__api__socket__udp.html#ga80f1d19174124f3d0f246e1c1201b3ec',1,'wiconnect::SocketInterface']]],
-  ['unregistersocketirqhandler',['unregisterSocketIrqHandler',['../group__api__socket__misc.html#ga820d2fdb12d343212638e55633bd8551',1,'wiconnect::SocketInterface']]],
+  ['udpconnect',['udpConnect',['../group__api__socket__udp.html#ga0ca5eabcd64ce45b574205447101f8aa',1,'wiconnect::SocketInterface']]],
+  ['udplisten',['udpListen',['../group__api__socket__udp.html#ga067fb0d662d8e27e3f5b561ded29a51a',1,'wiconnect::SocketInterface']]],
   ['updatefirmware',['updateFirmware',['../group__api__core__misc.html#gad447fe3341539eb9b276d269645bb632',1,'wiconnect::Wiconnect']]]
 ];
--- a/doc/html/search/all_14.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/all_14.js	Mon Oct 27 13:42:26 2014 -0700
@@ -3,8 +3,8 @@
   ['web_20setup_20methods',['Web Setup Methods',['../group__api__network__setup.html',1,'']]],
   ['wlan_20methods',['WLAN Methods',['../group__api__network__wlan.html',1,'']]],
   ['wakeup',['wakeup',['../group__api__core__misc.html#gad552c8f23dd0a0e8844ee1fc4d9358e5',1,'wiconnect::Wiconnect']]],
+  ['wiconnect',['wiconnect',['../namespacewiconnect.html',1,'wiconnect'],['../classwiconnect_1_1_wiconnect.html#a285510a2cba5341db387101ac75a4389',1,'wiconnect::Wiconnect::Wiconnect(const SerialConfig &amp;serialConfig, Pin reset=PIN_NC, Pin wake=PIN_NC, bool nonBlocking=WICONNECT_DEFAULT_NONBLOCKING WICONNECT_MALLOC_ARGS)'],['../classwiconnect_1_1_wiconnect.html#afe9fa2efde4e26944cdc9b6be51a1a34',1,'wiconnect::Wiconnect::Wiconnect(const SerialConfig &amp;serialConfig, int internalBufferSize, void *internalBuffer=NULL, Pin reset=PIN_NC, Pin wake=PIN_NC, bool nonBlocking=WICONNECT_DEFAULT_NONBLOCKING WICONNECT_MALLOC_ARGS)']]],
   ['wiconnect',['Wiconnect',['../classwiconnect_1_1_wiconnect.html',1,'wiconnect']]],
-  ['wiconnect',['wiconnect',['../namespacewiconnect.html',1,'wiconnect'],['../classwiconnect_1_1_wiconnect.html#a285510a2cba5341db387101ac75a4389',1,'wiconnect::Wiconnect::Wiconnect(const SerialConfig &amp;serialConfig, Pin reset=PIN_NC, Pin wake=PIN_NC, bool nonBlocking=WICONNECT_DEFAULT_NONBLOCKING WICONNECT_MALLOC_ARGS)'],['../classwiconnect_1_1_wiconnect.html#afe9fa2efde4e26944cdc9b6be51a1a34',1,'wiconnect::Wiconnect::Wiconnect(const SerialConfig &amp;serialConfig, int internalBufferSize, void *internalBuffer=NULL, Pin reset=PIN_NC, Pin wake=PIN_NC, bool nonBlocking=WICONNECT_DEFAULT_NONBLOCKING WICONNECT_MALLOC_ARGS)']]],
   ['wiconnect_5faborted',['WICONNECT_ABORTED',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ad345e256266694df078c99eaee04f789',1,'wiconnect']]],
   ['wiconnect_5fanother_5fcmd_5fexecuting',['WICONNECT_ANOTHER_CMD_EXECUTING',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a376da897f3a629fd71abd9db9f4cea83',1,'wiconnect']]],
   ['wiconnect_5fasync_5ftimer_5fenabled',['WICONNECT_ASYNC_TIMER_ENABLED',['../group__api__core__macro.html#gad466ede4f07512308e38402d777d8380',1,'sdk.h']]],
@@ -17,11 +17,14 @@
   ['wiconnect_5fdefault_5fnonblocking',['WICONNECT_DEFAULT_NONBLOCKING',['../group__api__core__macro.html#ga347d0e1228e8174563c6bcf48de18401',1,'sdk.h']]],
   ['wiconnect_5fdefault_5ftimeout',['WICONNECT_DEFAULT_TIMEOUT',['../group__api__core__macro.html#ga7741b7a0fbbf9b7e47898b7d30e5e321',1,'sdk.h']]],
   ['wiconnect_5fduplicate',['WICONNECT_DUPLICATE',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5d9162280a5269a34245bf53c87401a4',1,'wiconnect']]],
+  ['wiconnect_5fenable_5fdebugging',['WICONNECT_ENABLE_DEBUGGING',['../group__api__core__macro.html#ga80e1660ca602aff9f95ccbb4822fad9c',1,'sdk.h']]],
   ['wiconnect_5fenable_5fmalloc',['WICONNECT_ENABLE_MALLOC',['../group__api__core__macro.html#gae9cf1249b46e784aa05250e2bcbe2e02',1,'sdk.h']]],
   ['wiconnect_5ferror',['WICONNECT_ERROR',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05acfd6d3c1efd03fae8cd443bc01bca8d6',1,'wiconnect']]],
   ['wiconnect_5ffailed',['WICONNECT_FAILED',['../group__api__core__macro.html#gab27aa3ef76302b5221766abfd4f47e64',1,'WiconnectTypes.h']]],
   ['wiconnect_5ffirmware_5fupdate_5ftimeout',['WICONNECT_FIRMWARE_UPDATE_TIMEOUT',['../group__api__core__macro.html#ga6d336ec791dcd22238d2fc4995fb9431',1,'WiconnectTypes.h']]],
+  ['wiconnect_5fgpio_5firq_5fenabled',['WICONNECT_GPIO_IRQ_ENABLED',['../group__api__core__macro.html#ga593c6629b59a853057cd6a5547ed3f4f',1,'sdk.h']]],
   ['wiconnect_5fidle',['WICONNECT_IDLE',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5bff05280d726da505c6e6ec2f085bd1',1,'wiconnect']]],
+  ['wiconnect_5fis_5fprocessing',['WICONNECT_IS_PROCESSING',['../group__api__core__macro.html#ga436d782bd2cdce3696eadda1083416af',1,'WiconnectTypes.h']]],
   ['wiconnect_5fmax_5fcmd_5fsize',['WICONNECT_MAX_CMD_SIZE',['../group__api__core__macro.html#ga2aa16118029ab13ab41514cb8eb93ba7',1,'WiconnectTypes.h']]],
   ['wiconnect_5fmax_5ffilename_5fsize',['WICONNECT_MAX_FILENAME_SIZE',['../group__api__core__macro.html#ga8bc3b8d2e7e7c9d10b23e0a15cd4507a',1,'WiconnectTypes.h']]],
   ['wiconnect_5fmax_5fhost_5fsize',['WICONNECT_MAX_HOST_SIZE',['../group__api__core__macro.html#ga7c5dcedd35669199b46bb292b3d3b525',1,'WiconnectTypes.h']]],
@@ -50,5 +53,6 @@
   ['wiconnect_5fwait_5fforever',['WICONNECT_WAIT_FOREVER',['../group__api__core__macro.html#ga580e5f45fee866c845e0d3fd1eb1744a',1,'WiconnectTypes.h']]],
   ['wiconnectfile',['WiconnectFile',['../classwiconnect_1_1_wiconnect_file.html',1,'wiconnect']]],
   ['wiconnectresult',['WiconnectResult',['../group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05',1,'wiconnect']]],
-  ['wiconnectsocket',['WiconnectSocket',['../classwiconnect_1_1_wiconnect_socket.html',1,'wiconnect']]]
+  ['wiconnectsocket',['WiconnectSocket',['../classwiconnect_1_1_wiconnect_socket.html',1,'wiconnect']]],
+  ['wiconnectudpserver',['WiconnectUdpServer',['../classwiconnect_1_1_wiconnect_udp_server.html',1,'wiconnect']]]
 ];
--- a/doc/html/search/all_3.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/all_3.js	Mon Oct 27 13:42:26 2014 -0700
@@ -2,6 +2,7 @@
 [
   ['examples',['Examples',['../group__api__core__examples.html',1,'']]],
   ['examples',['Examples',['../group__api__file__examples.html',1,'']]],
+  ['examples',['Examples',['../group__api__ghm__examples.html',1,'']]],
   ['examples',['Examples',['../group__api__network__examples.html',1,'']]],
   ['examples',['Examples',['../group__api__socket__examples.html',1,'']]]
 ];
--- a/doc/html/search/all_5.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/all_5.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,17 +1,47 @@
 var searchData=
 [
-  ['getcommanddefaulttimeout',['getCommandDefaultTimeout',['../group__api__core__settings.html#gad5d31980a7b1e143f00b0117468c1a7e',1,'wiconnect::Wiconnect']]],
+  ['gohack_2eme',['goHACK.me',['../group__api__ghm.html',1,'']]],
+  ['getblockingenabled',['getBlockingEnabled',['../group__api__core__settings.html#gaf6115968c49c128717cacd2f06b883ad',1,'wiconnect::Wiconnect']]],
+  ['getcommanddefaulttimeout',['getCommandDefaultTimeout',['../group__api__core__settings.html#gad8d98b8d2610f4ea564bede27e87857e',1,'wiconnect::Wiconnect']]],
   ['getdhcpenabled',['getDhcpEnabled',['../group__api__network__settings.html#ga70ec796b88eb6f8e7990dbf3eb2f2eff',1,'wiconnect::NetworkInterface']]],
+  ['getdnsaddress',['getDnsAddress',['../group__api__network__settings.html#ga585cb71d386ee61db3772f4b3218cb6e',1,'wiconnect::NetworkInterface']]],
   ['getinstance',['getInstance',['../group__api__core__misc.html#ga8dcd3ac87afd58b225abb068e835d06e',1,'wiconnect::Wiconnect']]],
-  ['getipaddress',['getIpAddress',['../group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290',1,'wiconnect::NetworkInterface']]],
+  ['getipaddress',['getIpAddress',['../group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f',1,'wiconnect::NetworkInterface']]],
   ['getipsettings',['getIpSettings',['../group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b',1,'wiconnect::NetworkInterface']]],
   ['getlastcommandresponsecodestr',['getLastCommandResponseCodeStr',['../group__api__core__misc.html#gad8069679fabb52d44647d27703f1a09a',1,'wiconnect::Wiconnect']]],
   ['getlastcommandresponselength',['getLastCommandResponseLength',['../group__api__core__misc.html#ga600215de23210071c42996d04390071e',1,'wiconnect::Wiconnect']]],
+  ['getmacaddress',['getMacAddress',['../group__api__network__wlan.html#ga70991a2c5865c8f0b44b67de35f3b6b3',1,'wiconnect::NetworkInterface']]],
   ['getnetworkjoinresult',['getNetworkJoinResult',['../group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b',1,'wiconnect::NetworkInterface']]],
   ['getnetworkstatus',['getNetworkStatus',['../group__api__network__wlan.html#ga047ba9670f60406466391cec5bdd28e5',1,'wiconnect::NetworkInterface']]],
   ['getresponsebuffer',['getResponseBuffer',['../group__api__core__misc.html#ga27b5d6b8207e4ef0f73875606d628da8',1,'wiconnect::Wiconnect']]],
+  ['getrssi',['getRssi',['../group__api__network__wlan.html#gaa9db3c463cf6b4f351c37671882dd3ee',1,'wiconnect::NetworkInterface']]],
   ['getsetting',['getSetting',['../group__api__core__settings.html#ga16d5022d1fbd784fe0fd90a56911c5bc',1,'wiconnect::Wiconnect::getSetting(const char *settingStr, uint32_t *valuePtr)'],['../group__api__core__settings.html#ga9dfd70aac8f0770f300ccf3a126ba296',1,'wiconnect::Wiconnect::getSetting(const char *settingStr, char **valuePtr)'],['../group__api__core__settings.html#ga670947ef630233f7866f885500548233',1,'wiconnect::Wiconnect::getSetting(const char *settingStr, char *valueBuffer, uint16_t valueBufferLen)']]],
-  ['getsignalstrength',['getSignalStrength',['../group__api__network__settings.html#gaba16b9918e55c08285cf5b8b50dbabea',1,'wiconnect::NetworkInterface']]],
+  ['getsignalstrength',['getSignalStrength',['../group__api__network__wlan.html#gaba16b9918e55c08285cf5b8b50dbabea',1,'wiconnect::NetworkInterface']]],
   ['getversion',['getVersion',['../group__api__core__misc.html#ga4fc195839bc6c6bd0091074cbdc94c4f',1,'wiconnect::Wiconnect']]],
-  ['getwiconnectresultstr',['getWiconnectResultStr',['../group__conversion__util.html#gac96e2d2fca60cba12e7429626f9186be',1,'wiconnect::Wiconnect']]]
+  ['getwiconnectresultstr',['getWiconnectResultStr',['../group__conversion__util.html#gac96e2d2fca60cba12e7429626f9186be',1,'wiconnect::Wiconnect']]],
+  ['ghm_5fmsg_5fget_5fall',['GHM_MSG_GET_ALL',['../group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1adcf75ccabf6676b9b8f3050080f4bab7',1,'wiconnect']]],
+  ['ghm_5fmsg_5fget_5fbody',['GHM_MSG_GET_BODY',['../group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a19876ca1d097b96c48a1e8b54ee562d1',1,'wiconnect']]],
+  ['ghm_5fmsg_5fget_5fdata_5fonly',['GHM_MSG_GET_DATA_ONLY',['../group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127',1,'wiconnect']]],
+  ['ghm_5fsync_5fall',['GHM_SYNC_ALL',['../group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577aca8aa4d4efd897cd69e0f08feaeaa122e7',1,'wiconnect']]],
+  ['ghm_5fsync_5fpull_5fonly',['GHM_SYNC_PULL_ONLY',['../group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577acaad5fbcfa42d14a2662bc5a517c108bdd',1,'wiconnect']]],
+  ['ghm_5fsync_5fpush_5fonly',['GHM_SYNC_PUSH_ONLY',['../group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577acafcf2af6407845b24a3abac79587243e0',1,'wiconnect']]],
+  ['ghmactivate',['ghmActivate',['../group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff',1,'wiconnect::GhmInterface']]],
+  ['ghmdeactivate',['ghmDeactivate',['../group__api__ghm__activate.html#gad0e0484d1f9a6608475874544f96708b',1,'wiconnect::GhmInterface']]],
+  ['ghmdeletemessage',['ghmDeleteMessage',['../group__api__ghm__msg.html#ga451de9d69f7ecbf38e36056e502b94b0',1,'wiconnect::GhmInterface::ghmDeleteMessage(uint8_t listIndex)'],['../group__api__ghm__msg.html#ga7273f4c691aeccd241327f1be3e8d0e9',1,'wiconnect::GhmInterface::ghmDeleteMessage(const char *msgId)']]],
+  ['ghmdownloadcapabilities',['ghmDownloadCapabilities',['../group__api__ghm__activate.html#gaff03ecaa08146e6925820209cdab56bd',1,'wiconnect::GhmInterface']]],
+  ['ghmelement',['GhmElement',['../structwiconnect_1_1_ghm_element.html',1,'wiconnect']]],
+  ['ghmelementarray',['GhmElementArray',['../structwiconnect_1_1_ghm_element_array.html',1,'wiconnect']]],
+  ['ghmelementvaluetype',['GhmElementValueType',['../group__api__ghm__types.html#ga4174104f02851ee92e51846877706e67',1,'wiconnect']]],
+  ['ghmgetmessage',['ghmGetMessage',['../group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234',1,'wiconnect::GhmInterface::ghmGetMessage(WiconnectSocket &amp;socket, GhmMessageGetType getType=GHM_MSG_GET_DATA_ONLY)'],['../group__api__ghm__msg.html#gaa905a010f0e234d290eaef6e42975c29',1,'wiconnect::GhmInterface::ghmGetMessage(WiconnectSocket &amp;socket, uint8_t listIndex, GhmMessageGetType getType=GHM_MSG_GET_DATA_ONLY)'],['../group__api__ghm__msg.html#ga9c6dffaa871f2443a32d75276160682d',1,'wiconnect::GhmInterface::ghmGetMessage(WiconnectSocket &amp;socket, const char *msgId, GhmMessageGetType getType=GHM_MSG_GET_DATA_ONLY)']]],
+  ['ghminterface',['GhmInterface',['../classwiconnect_1_1_ghm_interface.html',1,'wiconnect']]],
+  ['ghmisactivated',['ghmIsActivated',['../group__api__ghm__activate.html#ga8bec70f780ca7de9dce1a15830c179ff',1,'wiconnect::GhmInterface']]],
+  ['ghmlistmessages',['ghmListMessages',['../group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502',1,'wiconnect::GhmInterface']]],
+  ['ghmmessage',['GhmMessage',['../classwiconnect_1_1_ghm_message.html',1,'wiconnect']]],
+  ['ghmmessagegettype',['GhmMessageGetType',['../group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1',1,'wiconnect']]],
+  ['ghmmessagelist',['GhmMessageList',['../classwiconnect_1_1_ghm_message_list.html',1,'wiconnect']]],
+  ['ghmpostmessage',['ghmPostMessage',['../group__api__ghm__msg.html#gadc281f497041b26a151c72a0b5d03543',1,'wiconnect::GhmInterface']]],
+  ['ghmread',['ghmRead',['../group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2',1,'wiconnect::GhmInterface::ghmRead(const char *controlName, const char **valueStrPtr)'],['../group__api__ghm__com.html#ga2d4f14ef409c30b49ce2a06b72d10c7f',1,'wiconnect::GhmInterface::ghmRead(const char *controlName, uint32_t *valueIntPtr)'],['../group__api__ghm__com.html#ga965090d4b28bda9f58716b522a6bee12',1,'wiconnect::GhmInterface::ghmRead(const char *controlName, char *valueBuffer, uint16_t valueBufferLen)']]],
+  ['ghmsynchronize',['ghmSynchronize',['../group__api__ghm__com.html#ga0aa48506edb22c90be513683672b96c7',1,'wiconnect::GhmInterface']]],
+  ['ghmsynctype',['GhmSyncType',['../group__api__ghm__types.html#ga44ea17651dcf42ac9816f549beb577ac',1,'wiconnect']]],
+  ['ghmwrite',['ghmWrite',['../group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223',1,'wiconnect::GhmInterface::ghmWrite(const char *elementName, const char *strValue)'],['../group__api__ghm__com.html#ga26ef47c451e7dbe869f19f5f36695e7c',1,'wiconnect::GhmInterface::ghmWrite(const char *elementName, uint32_t uintValue)'],['../group__api__ghm__com.html#gab524e64f4bbae826c27bf39d7f2d3c2e',1,'wiconnect::GhmInterface::ghmWrite(const char *elementName, int32_t intValue)'],['../group__api__ghm__com.html#ga5eb797aba87a3ab76d742afe34292ee6',1,'wiconnect::GhmInterface::ghmWrite(const GhmElementArray *elementArray)']]]
 ];
--- a/doc/html/search/all_7.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/all_7.js	Mon Oct 27 13:42:26 2014 -0700
@@ -2,7 +2,7 @@
 [
   ['init',['init',['../group__api__core__misc.html#gae2e3add2e60543d0e3340ed7a9e034ad',1,'wiconnect::Wiconnect']]],
   ['ipstrbuffer',['IpStrBuffer',['../group__api__network__types.html#gaa68646bb07ee9f174097b60ac7327342',1,'wiconnect']]],
-  ['iptostr',['ipToStr',['../group__conversion__util.html#gaff8b0af70f4d4be792b943ad3af27303',1,'wiconnect::NetworkInterface']]],
+  ['iptostr',['ipToStr',['../group__conversion__util.html#ga02e6b01f11f2283208f051b1b49b634c',1,'wiconnect::NetworkInterface']]],
   ['isinitialized',['isInitialized',['../group__api__core__misc.html#gab00c7110984f6d6187241d17a4a431ff',1,'wiconnect::Wiconnect']]],
   ['iswebsetuprunning',['isWebSetupRunning',['../group__api__network__setup.html#gab52d3a01427d0e8bd52460d992144f65',1,'wiconnect::NetworkInterface']]]
 ];
--- a/doc/html/search/all_a.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/all_a.js	Mon Oct 27 13:42:26 2014 -0700
@@ -4,12 +4,14 @@
   ['miscellaneous_20methods',['Miscellaneous Methods',['../group__api__core__misc.html',1,'']]],
   ['macros',['Macros',['../group__api__file__macro.html',1,'']]],
   ['methods',['Methods',['../group__api__file__methods.html',1,'']]],
+  ['macros',['Macros',['../group__api__ghm__macro.html',1,'']]],
+  ['message',['Message',['../group__api__ghm__msg.html',1,'']]],
   ['macros',['Macros',['../group__api__network__macros.html',1,'']]],
   ['macros',['Macros',['../group__api__socket__macro.html',1,'']]],
   ['miscellaneous_20methods',['Miscellaneous Methods',['../group__api__socket__misc.html',1,'']]],
   ['macaddress',['MacAddress',['../structwiconnect_1_1_mac_address.html',1,'wiconnect']]],
   ['macaddressstrbuffer',['MacAddressStrBuffer',['../group__api__network__types.html#ga04b095d2e2f32a3fd23e346a4be969d8',1,'wiconnect']]],
-  ['macaddresstostr',['macAddressToStr',['../group__conversion__util.html#ga13ecaf390b4bf4a68b51a6b18e669134',1,'wiconnect::NetworkInterface']]],
+  ['macaddresstostr',['macAddressToStr',['../group__conversion__util.html#ga01520d55f1923d90fb899ddef2f21cdf',1,'wiconnect::NetworkInterface']]],
   ['max',['MAX',['../group__api__core__macro.html#gaacc3ee1a7f283f8ef65cea31f4436a95',1,'WiconnectTypes.h']]],
   ['min',['MIN',['../group__api__core__macro.html#ga74e75242132eaabbc1c512488a135926',1,'WiconnectTypes.h']]]
 ];
--- a/doc/html/search/all_f.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/all_f.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,7 +1,7 @@
 var searchData=
 [
+  ['read_2fwrite',['Read/Write',['../group__api__ghm__com.html',1,'']]],
   ['readerfunc',['ReaderFunc',['../classwiconnect_1_1_reader_func.html',1,'wiconnect']]],
-  ['registersocketirqhandler',['registerSocketIrqHandler',['../group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a',1,'wiconnect::SocketInterface']]],
   ['reset',['reset',['../group__api__core__misc.html#gabec1504eb7f486085dad82c4a94310e3',1,'wiconnect::Wiconnect']]],
   ['responsetoint32',['responseToInt32',['../group__api__core__misc.html#gada79343aece515e00f9be4045d3858a0',1,'wiconnect::Wiconnect']]],
   ['responsetouint32',['responseToUint32',['../group__api__core__misc.html#gac40b2964149e60245ff3cac6adbcd565',1,'wiconnect::Wiconnect']]],
--- a/doc/html/search/classes_2.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/classes_2.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,4 +1,8 @@
 var searchData=
 [
-  ['httpsocketargs',['HttpSocketArgs',['../structwiconnect_1_1_http_socket_args.html',1,'wiconnect']]]
+  ['ghmelement',['GhmElement',['../structwiconnect_1_1_ghm_element.html',1,'wiconnect']]],
+  ['ghmelementarray',['GhmElementArray',['../structwiconnect_1_1_ghm_element_array.html',1,'wiconnect']]],
+  ['ghminterface',['GhmInterface',['../classwiconnect_1_1_ghm_interface.html',1,'wiconnect']]],
+  ['ghmmessage',['GhmMessage',['../classwiconnect_1_1_ghm_message.html',1,'wiconnect']]],
+  ['ghmmessagelist',['GhmMessageList',['../classwiconnect_1_1_ghm_message_list.html',1,'wiconnect']]]
 ];
--- a/doc/html/search/classes_3.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/classes_3.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['logfunc',['LogFunc',['../classwiconnect_1_1_log_func.html',1,'wiconnect']]]
+  ['httpsocketargs',['HttpSocketArgs',['../structwiconnect_1_1_http_socket_args.html',1,'wiconnect']]]
 ];
--- a/doc/html/search/classes_4.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/classes_4.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['macaddress',['MacAddress',['../structwiconnect_1_1_mac_address.html',1,'wiconnect']]]
+  ['logfunc',['LogFunc',['../classwiconnect_1_1_log_func.html',1,'wiconnect']]]
 ];
--- a/doc/html/search/classes_5.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/classes_5.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['networkinterface',['NetworkInterface',['../classwiconnect_1_1_network_interface.html',1,'wiconnect']]]
+  ['macaddress',['MacAddress',['../structwiconnect_1_1_mac_address.html',1,'wiconnect']]]
 ];
--- a/doc/html/search/classes_6.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/classes_6.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['queuedcommand',['QueuedCommand',['../classwiconnect_1_1_queued_command.html',1,'wiconnect']]]
+  ['networkinterface',['NetworkInterface',['../classwiconnect_1_1_network_interface.html',1,'wiconnect']]]
 ];
--- a/doc/html/search/classes_7.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/classes_7.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['readerfunc',['ReaderFunc',['../classwiconnect_1_1_reader_func.html',1,'wiconnect']]]
+  ['queuedcommand',['QueuedCommand',['../classwiconnect_1_1_queued_command.html',1,'wiconnect']]]
 ];
--- a/doc/html/search/classes_8.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/classes_8.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,9 +1,4 @@
 var searchData=
 [
-  ['scanresult',['ScanResult',['../classwiconnect_1_1_scan_result.html',1,'wiconnect']]],
-  ['scanresultlist',['ScanResultList',['../classwiconnect_1_1_scan_result_list.html',1,'wiconnect']]],
-  ['serialconfig',['SerialConfig',['../classwiconnect_1_1_serial_config.html',1,'wiconnect']]],
-  ['socketinterface',['SocketInterface',['../classwiconnect_1_1_socket_interface.html',1,'wiconnect']]],
-  ['ssid',['Ssid',['../structwiconnect_1_1_ssid.html',1,'wiconnect']]],
-  ['stringutil',['StringUtil',['../class_string_util.html',1,'']]]
+  ['readerfunc',['ReaderFunc',['../classwiconnect_1_1_reader_func.html',1,'wiconnect']]]
 ];
--- a/doc/html/search/classes_9.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/classes_9.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,6 +1,9 @@
 var searchData=
 [
-  ['wiconnect',['Wiconnect',['../classwiconnect_1_1_wiconnect.html',1,'wiconnect']]],
-  ['wiconnectfile',['WiconnectFile',['../classwiconnect_1_1_wiconnect_file.html',1,'wiconnect']]],
-  ['wiconnectsocket',['WiconnectSocket',['../classwiconnect_1_1_wiconnect_socket.html',1,'wiconnect']]]
+  ['scanresult',['ScanResult',['../classwiconnect_1_1_scan_result.html',1,'wiconnect']]],
+  ['scanresultlist',['ScanResultList',['../classwiconnect_1_1_scan_result_list.html',1,'wiconnect']]],
+  ['serialconfig',['SerialConfig',['../classwiconnect_1_1_serial_config.html',1,'wiconnect']]],
+  ['socketinterface',['SocketInterface',['../classwiconnect_1_1_socket_interface.html',1,'wiconnect']]],
+  ['ssid',['Ssid',['../structwiconnect_1_1_ssid.html',1,'wiconnect']]],
+  ['stringutil',['StringUtil',['../class_string_util.html',1,'']]]
 ];
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/search/classes_a.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_a.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/search/classes_a.js	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,7 @@
+var searchData=
+[
+  ['wiconnect',['Wiconnect',['../classwiconnect_1_1_wiconnect.html',1,'wiconnect']]],
+  ['wiconnectfile',['WiconnectFile',['../classwiconnect_1_1_wiconnect_file.html',1,'wiconnect']]],
+  ['wiconnectsocket',['WiconnectSocket',['../classwiconnect_1_1_wiconnect_socket.html',1,'wiconnect']]],
+  ['wiconnectudpserver',['WiconnectUdpServer',['../classwiconnect_1_1_wiconnect_udp_server.html',1,'wiconnect']]]
+];
--- a/doc/html/search/enums_1.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/enums_1.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,4 +1,6 @@
 var searchData=
 [
-  ['httpsockettype',['HttpSocketType',['../group__api__socket__types.html#gadc1d6e26d4138c536bd5dce7ed4569d6',1,'wiconnect']]]
+  ['ghmelementvaluetype',['GhmElementValueType',['../group__api__ghm__types.html#ga4174104f02851ee92e51846877706e67',1,'wiconnect']]],
+  ['ghmmessagegettype',['GhmMessageGetType',['../group__api__ghm__types.html#gaf75750bfef61c73f9e4677e9de663df1',1,'wiconnect']]],
+  ['ghmsynctype',['GhmSyncType',['../group__api__ghm__types.html#ga44ea17651dcf42ac9816f549beb577ac',1,'wiconnect']]]
 ];
--- a/doc/html/search/enums_2.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/enums_2.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,7 +1,4 @@
 var searchData=
 [
-  ['networkjoinresult',['NetworkJoinResult',['../group__api__network__types.html#ga5f6f5c916a5dd1676f98da7fa511451d',1,'wiconnect']]],
-  ['networksecurity',['NetworkSecurity',['../group__api__network__types.html#ga026bd11cd5df47b7022362243e2d553f',1,'wiconnect']]],
-  ['networksignalstrength',['NetworkSignalStrength',['../group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36',1,'wiconnect']]],
-  ['networkstatus',['NetworkStatus',['../group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99',1,'wiconnect']]]
+  ['httpsockettype',['HttpSocketType',['../group__api__socket__types.html#gadc1d6e26d4138c536bd5dce7ed4569d6',1,'wiconnect']]]
 ];
--- a/doc/html/search/enums_3.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/enums_3.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,4 +1,7 @@
 var searchData=
 [
-  ['sockettype',['SocketType',['../group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d',1,'wiconnect']]]
+  ['networkjoinresult',['NetworkJoinResult',['../group__api__network__types.html#ga5f6f5c916a5dd1676f98da7fa511451d',1,'wiconnect']]],
+  ['networksecurity',['NetworkSecurity',['../group__api__network__types.html#ga026bd11cd5df47b7022362243e2d553f',1,'wiconnect']]],
+  ['networksignalstrength',['NetworkSignalStrength',['../group__api__network__types.html#gac5aead2b4cca0122a60168e75ea41d36',1,'wiconnect']]],
+  ['networkstatus',['NetworkStatus',['../group__api__network__types.html#gab448e57fc1a5e21cbba0283fd1a35d99',1,'wiconnect']]]
 ];
--- a/doc/html/search/enums_4.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/enums_4.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['wiconnectresult',['WiconnectResult',['../group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05',1,'wiconnect']]]
+  ['sockettype',['SocketType',['../group__api__socket__types.html#ga69dc55558df4c81599c5fb3dff98756d',1,'wiconnect']]]
 ];
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/search/enums_5.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enums_5.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/search/enums_5.js	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['wiconnectresult',['WiconnectResult',['../group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05',1,'wiconnect']]]
+];
--- a/doc/html/search/enumvalues_1.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/enumvalues_1.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,22 +1,9 @@
 var searchData=
 [
-  ['network_5fjoin_5fresult_5faborted',['NETWORK_JOIN_RESULT_ABORTED',['../group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daed880c261bae590a5f59aebb01b6912c',1,'wiconnect']]],
-  ['network_5fjoin_5fresult_5fbad_5fsecurity',['NETWORK_JOIN_RESULT_BAD_SECURITY',['../group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabb8da6425a24810668eade3488113957',1,'wiconnect']]],
-  ['network_5fjoin_5fresult_5ffailed',['NETWORK_JOIN_RESULT_FAILED',['../group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da76b3ad647f00a3dc52e71e4ed670e7dc',1,'wiconnect']]],
-  ['network_5fjoin_5fresult_5fjoining',['NETWORK_JOIN_RESULT_JOINING',['../group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da60569216928bd30142e2e143eaf58475',1,'wiconnect']]],
-  ['network_5fjoin_5fresult_5fno_5fpassword',['NETWORK_JOIN_RESULT_NO_PASSWORD',['../group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da02f32115d4a39e6028e5ebb4944f0bec',1,'wiconnect']]],
-  ['network_5fjoin_5fresult_5fno_5fssid',['NETWORK_JOIN_RESULT_NO_SSID',['../group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daea6aa0a779a2823eadafa82dda6b7304',1,'wiconnect']]],
-  ['network_5fjoin_5fresult_5fnone',['NETWORK_JOIN_RESULT_NONE',['../group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da2ac6866940725552e31532002ef649a5',1,'wiconnect']]],
-  ['network_5fjoin_5fresult_5fnot_5ffound',['NETWORK_JOIN_RESULT_NOT_FOUND',['../group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da5c790fb0440c39d95ec785e1c31c3cb2',1,'wiconnect']]],
-  ['network_5fjoin_5fresult_5fsuccess',['NETWORK_JOIN_RESULT_SUCCESS',['../group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabfbb179ad94f8d5a57a9da86de9c65a8',1,'wiconnect']]],
-  ['network_5frssi_5fexcellent',['NETWORK_RSSI_EXCELLENT',['../group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2911018510263b4d6db772cf6ea69385',1,'wiconnect']]],
-  ['network_5frssi_5fgood',['NETWORK_RSSI_GOOD',['../group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a5aa38a03f1ec4cdcdd1f0c41dfd19533',1,'wiconnect']]],
-  ['network_5frssi_5fpoor',['NETWORK_RSSI_POOR',['../group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2728fe7e544bee45b00ef95117085eae',1,'wiconnect']]],
-  ['network_5frssi_5funknown',['NETWORK_RSSI_UNKNOWN',['../group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a095c1eef3bdeb16e33b1f6a976e9f6c4',1,'wiconnect']]],
-  ['network_5frssi_5fvery_5fgood',['NETWORK_RSSI_VERY_GOOD',['../group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36ad77f98cf80b81d4c5277672402c0b713',1,'wiconnect']]],
-  ['network_5frssi_5fvery_5fpoor',['NETWORK_RSSI_VERY_POOR',['../group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36ab0e9cbbf4e2c6dee74d2639caef2cffa',1,'wiconnect']]],
-  ['network_5fstatus_5fdown',['NETWORK_STATUS_DOWN',['../group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6a4dd5a93528f27eb983bf856b9f5067',1,'wiconnect']]],
-  ['network_5fstatus_5fjoining',['NETWORK_STATUS_JOINING',['../group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a2916360f96699b2bf42cf5e122562497',1,'wiconnect']]],
-  ['network_5fstatus_5fup',['NETWORK_STATUS_UP',['../group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6d6f2fd76cab833e55bc398541c52b46',1,'wiconnect']]],
-  ['network_5fstatus_5fwifi_5fonly',['NETWORK_STATUS_WIFI_ONLY',['../group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a8e40c9f169976770c3e65b9c0e44874c',1,'wiconnect']]]
+  ['ghm_5fmsg_5fget_5fall',['GHM_MSG_GET_ALL',['../group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1adcf75ccabf6676b9b8f3050080f4bab7',1,'wiconnect']]],
+  ['ghm_5fmsg_5fget_5fbody',['GHM_MSG_GET_BODY',['../group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a19876ca1d097b96c48a1e8b54ee562d1',1,'wiconnect']]],
+  ['ghm_5fmsg_5fget_5fdata_5fonly',['GHM_MSG_GET_DATA_ONLY',['../group__api__ghm__types.html#ggaf75750bfef61c73f9e4677e9de663df1a7b67ad45967438f44f6942968fb72127',1,'wiconnect']]],
+  ['ghm_5fsync_5fall',['GHM_SYNC_ALL',['../group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577aca8aa4d4efd897cd69e0f08feaeaa122e7',1,'wiconnect']]],
+  ['ghm_5fsync_5fpull_5fonly',['GHM_SYNC_PULL_ONLY',['../group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577acaad5fbcfa42d14a2662bc5a517c108bdd',1,'wiconnect']]],
+  ['ghm_5fsync_5fpush_5fonly',['GHM_SYNC_PUSH_ONLY',['../group__api__ghm__types.html#gga44ea17651dcf42ac9816f549beb577acafcf2af6407845b24a3abac79587243e0',1,'wiconnect']]]
 ];
--- a/doc/html/search/enumvalues_2.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/enumvalues_2.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,11 +1,22 @@
 var searchData=
 [
-  ['socket_5fhttp_5fget',['SOCKET_HTTP_GET',['../group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6afc257aa28936e9fa8a332995b5449685',1,'wiconnect']]],
-  ['socket_5fhttp_5fhead',['SOCKET_HTTP_HEAD',['../group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6a6d256a218aac67dffe66ae6c49a61236',1,'wiconnect']]],
-  ['socket_5fhttp_5fpost',['SOCKET_HTTP_POST',['../group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6ab271a5cd1775076aeb8c25fc14da12cb',1,'wiconnect']]],
-  ['socket_5ftype_5fhttp',['SOCKET_TYPE_HTTP',['../group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751',1,'wiconnect']]],
-  ['socket_5ftype_5ftcp',['SOCKET_TYPE_TCP',['../group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756daece967eb28f8913c30bc70fa1e0e5ff9',1,'wiconnect']]],
-  ['socket_5ftype_5ftls',['SOCKET_TYPE_TLS',['../group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da0c365c200e62d61bf22798c25ccb96b4',1,'wiconnect']]],
-  ['socket_5ftype_5fudp',['SOCKET_TYPE_UDP',['../group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756dab1b41b1c4daf8d171414b68e9033cfbc',1,'wiconnect']]],
-  ['socket_5ftype_5funknown',['SOCKET_TYPE_UNKNOWN',['../group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da6469a1b9d8fa6448c0f6f13e0028a60e',1,'wiconnect']]]
+  ['network_5fjoin_5fresult_5faborted',['NETWORK_JOIN_RESULT_ABORTED',['../group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daed880c261bae590a5f59aebb01b6912c',1,'wiconnect']]],
+  ['network_5fjoin_5fresult_5fbad_5fsecurity',['NETWORK_JOIN_RESULT_BAD_SECURITY',['../group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabb8da6425a24810668eade3488113957',1,'wiconnect']]],
+  ['network_5fjoin_5fresult_5ffailed',['NETWORK_JOIN_RESULT_FAILED',['../group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da76b3ad647f00a3dc52e71e4ed670e7dc',1,'wiconnect']]],
+  ['network_5fjoin_5fresult_5fjoining',['NETWORK_JOIN_RESULT_JOINING',['../group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da60569216928bd30142e2e143eaf58475',1,'wiconnect']]],
+  ['network_5fjoin_5fresult_5fno_5fpassword',['NETWORK_JOIN_RESULT_NO_PASSWORD',['../group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da02f32115d4a39e6028e5ebb4944f0bec',1,'wiconnect']]],
+  ['network_5fjoin_5fresult_5fno_5fssid',['NETWORK_JOIN_RESULT_NO_SSID',['../group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451daea6aa0a779a2823eadafa82dda6b7304',1,'wiconnect']]],
+  ['network_5fjoin_5fresult_5fnone',['NETWORK_JOIN_RESULT_NONE',['../group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da2ac6866940725552e31532002ef649a5',1,'wiconnect']]],
+  ['network_5fjoin_5fresult_5fnot_5ffound',['NETWORK_JOIN_RESULT_NOT_FOUND',['../group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451da5c790fb0440c39d95ec785e1c31c3cb2',1,'wiconnect']]],
+  ['network_5fjoin_5fresult_5fsuccess',['NETWORK_JOIN_RESULT_SUCCESS',['../group__api__network__types.html#gga5f6f5c916a5dd1676f98da7fa511451dabfbb179ad94f8d5a57a9da86de9c65a8',1,'wiconnect']]],
+  ['network_5frssi_5fexcellent',['NETWORK_RSSI_EXCELLENT',['../group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2911018510263b4d6db772cf6ea69385',1,'wiconnect']]],
+  ['network_5frssi_5fgood',['NETWORK_RSSI_GOOD',['../group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a5aa38a03f1ec4cdcdd1f0c41dfd19533',1,'wiconnect']]],
+  ['network_5frssi_5fpoor',['NETWORK_RSSI_POOR',['../group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a2728fe7e544bee45b00ef95117085eae',1,'wiconnect']]],
+  ['network_5frssi_5funknown',['NETWORK_RSSI_UNKNOWN',['../group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36a095c1eef3bdeb16e33b1f6a976e9f6c4',1,'wiconnect']]],
+  ['network_5frssi_5fvery_5fgood',['NETWORK_RSSI_VERY_GOOD',['../group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36ad77f98cf80b81d4c5277672402c0b713',1,'wiconnect']]],
+  ['network_5frssi_5fvery_5fpoor',['NETWORK_RSSI_VERY_POOR',['../group__api__network__types.html#ggac5aead2b4cca0122a60168e75ea41d36ab0e9cbbf4e2c6dee74d2639caef2cffa',1,'wiconnect']]],
+  ['network_5fstatus_5fdown',['NETWORK_STATUS_DOWN',['../group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6a4dd5a93528f27eb983bf856b9f5067',1,'wiconnect']]],
+  ['network_5fstatus_5fjoining',['NETWORK_STATUS_JOINING',['../group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a2916360f96699b2bf42cf5e122562497',1,'wiconnect']]],
+  ['network_5fstatus_5fup',['NETWORK_STATUS_UP',['../group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a6d6f2fd76cab833e55bc398541c52b46',1,'wiconnect']]],
+  ['network_5fstatus_5fwifi_5fonly',['NETWORK_STATUS_WIFI_ONLY',['../group__api__network__types.html#ggab448e57fc1a5e21cbba0283fd1a35d99a8e40c9f169976770c3e65b9c0e44874c',1,'wiconnect']]]
 ];
--- a/doc/html/search/enumvalues_3.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/enumvalues_3.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,25 +1,13 @@
 var searchData=
 [
-  ['wiconnect_5faborted',['WICONNECT_ABORTED',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ad345e256266694df078c99eaee04f789',1,'wiconnect']]],
-  ['wiconnect_5fanother_5fcmd_5fexecuting',['WICONNECT_ANOTHER_CMD_EXECUTING',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a376da897f3a629fd71abd9db9f4cea83',1,'wiconnect']]],
-  ['wiconnect_5fbad_5farg',['WICONNECT_BAD_ARG',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ae96c2edcdade2809cdb60a8a5b0983fa',1,'wiconnect']]],
-  ['wiconnect_5fcmd_5fresponse_5ferror',['WICONNECT_CMD_RESPONSE_ERROR',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a511a4e6fa8470f52110fc64f04cfe5ff',1,'wiconnect']]],
-  ['wiconnect_5fduplicate',['WICONNECT_DUPLICATE',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5d9162280a5269a34245bf53c87401a4',1,'wiconnect']]],
-  ['wiconnect_5ferror',['WICONNECT_ERROR',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05acfd6d3c1efd03fae8cd443bc01bca8d6',1,'wiconnect']]],
-  ['wiconnect_5fidle',['WICONNECT_IDLE',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5bff05280d726da505c6e6ec2f085bd1',1,'wiconnect']]],
-  ['wiconnect_5fmonitor_5fnot_5favailable',['WICONNECT_MONITOR_NOT_AVAILABLE',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a28240905349a60a6b52bddbbd152ea5e',1,'wiconnect']]],
-  ['wiconnect_5fnot_5fconnected',['WICONNECT_NOT_CONNECTED',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05aecb3384d1dc5a61345346a8cd63527b2',1,'wiconnect']]],
-  ['wiconnect_5fnot_5ffound',['WICONNECT_NOT_FOUND',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab9123e9628c3156f34c44913a72b4195',1,'wiconnect']]],
-  ['wiconnect_5fnot_5finitialized',['WICONNECT_NOT_INITIALIZED',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05afea61b8f5d17f6be2aee2ce5b6bb7c43',1,'wiconnect']]],
-  ['wiconnect_5fnot_5fopened_5ffor_5freading',['WICONNECT_NOT_OPENED_FOR_READING',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab3f9c2611514967ca4f155e35f522cc2',1,'wiconnect']]],
-  ['wiconnect_5fnull_5fbuffer',['WICONNECT_NULL_BUFFER',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a25c48e037bc3615840b81461db6385b5',1,'wiconnect']]],
-  ['wiconnect_5foverflow',['WICONNECT_OVERFLOW',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a2b2577cc3efe2cb37fda7dead222878f',1,'wiconnect']]],
-  ['wiconnect_5fpinname_5fto_5fgpio_5fmapper_5fnull',['WICONNECT_PINNAME_TO_GPIO_MAPPER_NULL',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab16dea725fe7b09d91a7651f18174cff',1,'wiconnect']]],
-  ['wiconnect_5fpinname_5fto_5fgpio_5fno_5fmapping',['WICONNECT_PINNAME_TO_GPIO_NO_MAPPING',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a8d6d7c580a7aa3c4d64d41cac6e0307a',1,'wiconnect']]],
-  ['wiconnect_5fprocessing',['WICONNECT_PROCESSING',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a289d83a8cf2d1e1f272134d8268925c0',1,'wiconnect']]],
-  ['wiconnect_5fresponse_5fparse_5ferror',['WICONNECT_RESPONSE_PARSE_ERROR',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab17f003b5f90e88328bbc76435f9f2e5',1,'wiconnect']]],
-  ['wiconnect_5fsuccess',['WICONNECT_SUCCESS',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7',1,'wiconnect']]],
-  ['wiconnect_5ftimeout',['WICONNECT_TIMEOUT',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ae6a9fb0c6333a0431e5775da996087ac',1,'wiconnect']]],
-  ['wiconnect_5funderflow',['WICONNECT_UNDERFLOW',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a7d4f9bd8b2b8ccc2ad902271e5241b02',1,'wiconnect']]],
-  ['wiconnect_5funsupported',['WICONNECT_UNSUPPORTED',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab18f839c77a6a1f964c096980ef24adc',1,'wiconnect']]]
+  ['socket_5fhttp_5fget',['SOCKET_HTTP_GET',['../group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6afc257aa28936e9fa8a332995b5449685',1,'wiconnect']]],
+  ['socket_5fhttp_5fhead',['SOCKET_HTTP_HEAD',['../group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6a6d256a218aac67dffe66ae6c49a61236',1,'wiconnect']]],
+  ['socket_5fhttp_5fpost',['SOCKET_HTTP_POST',['../group__api__socket__types.html#ggadc1d6e26d4138c536bd5dce7ed4569d6ab271a5cd1775076aeb8c25fc14da12cb',1,'wiconnect']]],
+  ['socket_5ftype_5fghm',['SOCKET_TYPE_GHM',['../group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da94c82597ad724e81c0bace9ed64ebc5f',1,'wiconnect']]],
+  ['socket_5ftype_5fhttp',['SOCKET_TYPE_HTTP',['../group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da3d433f1b569dc48077861cde0e464751',1,'wiconnect']]],
+  ['socket_5ftype_5ftcp',['SOCKET_TYPE_TCP',['../group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756daece967eb28f8913c30bc70fa1e0e5ff9',1,'wiconnect']]],
+  ['socket_5ftype_5ftls',['SOCKET_TYPE_TLS',['../group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da0c365c200e62d61bf22798c25ccb96b4',1,'wiconnect']]],
+  ['socket_5ftype_5fudp',['SOCKET_TYPE_UDP',['../group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756dab1b41b1c4daf8d171414b68e9033cfbc',1,'wiconnect']]],
+  ['socket_5ftype_5fudps',['SOCKET_TYPE_UDPS',['../group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da77625728d545a400e0eae1483225ff91',1,'wiconnect']]],
+  ['socket_5ftype_5funknown',['SOCKET_TYPE_UNKNOWN',['../group__api__socket__types.html#gga69dc55558df4c81599c5fb3dff98756da6469a1b9d8fa6448c0f6f13e0028a60e',1,'wiconnect']]]
 ];
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/search/enumvalues_4.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enumvalues_4.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/search/enumvalues_4.js	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,25 @@
+var searchData=
+[
+  ['wiconnect_5faborted',['WICONNECT_ABORTED',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ad345e256266694df078c99eaee04f789',1,'wiconnect']]],
+  ['wiconnect_5fanother_5fcmd_5fexecuting',['WICONNECT_ANOTHER_CMD_EXECUTING',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a376da897f3a629fd71abd9db9f4cea83',1,'wiconnect']]],
+  ['wiconnect_5fbad_5farg',['WICONNECT_BAD_ARG',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ae96c2edcdade2809cdb60a8a5b0983fa',1,'wiconnect']]],
+  ['wiconnect_5fcmd_5fresponse_5ferror',['WICONNECT_CMD_RESPONSE_ERROR',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a511a4e6fa8470f52110fc64f04cfe5ff',1,'wiconnect']]],
+  ['wiconnect_5fduplicate',['WICONNECT_DUPLICATE',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5d9162280a5269a34245bf53c87401a4',1,'wiconnect']]],
+  ['wiconnect_5ferror',['WICONNECT_ERROR',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05acfd6d3c1efd03fae8cd443bc01bca8d6',1,'wiconnect']]],
+  ['wiconnect_5fidle',['WICONNECT_IDLE',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a5bff05280d726da505c6e6ec2f085bd1',1,'wiconnect']]],
+  ['wiconnect_5fmonitor_5fnot_5favailable',['WICONNECT_MONITOR_NOT_AVAILABLE',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a28240905349a60a6b52bddbbd152ea5e',1,'wiconnect']]],
+  ['wiconnect_5fnot_5fconnected',['WICONNECT_NOT_CONNECTED',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05aecb3384d1dc5a61345346a8cd63527b2',1,'wiconnect']]],
+  ['wiconnect_5fnot_5ffound',['WICONNECT_NOT_FOUND',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab9123e9628c3156f34c44913a72b4195',1,'wiconnect']]],
+  ['wiconnect_5fnot_5finitialized',['WICONNECT_NOT_INITIALIZED',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05afea61b8f5d17f6be2aee2ce5b6bb7c43',1,'wiconnect']]],
+  ['wiconnect_5fnot_5fopened_5ffor_5freading',['WICONNECT_NOT_OPENED_FOR_READING',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab3f9c2611514967ca4f155e35f522cc2',1,'wiconnect']]],
+  ['wiconnect_5fnull_5fbuffer',['WICONNECT_NULL_BUFFER',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a25c48e037bc3615840b81461db6385b5',1,'wiconnect']]],
+  ['wiconnect_5foverflow',['WICONNECT_OVERFLOW',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a2b2577cc3efe2cb37fda7dead222878f',1,'wiconnect']]],
+  ['wiconnect_5fpinname_5fto_5fgpio_5fmapper_5fnull',['WICONNECT_PINNAME_TO_GPIO_MAPPER_NULL',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab16dea725fe7b09d91a7651f18174cff',1,'wiconnect']]],
+  ['wiconnect_5fpinname_5fto_5fgpio_5fno_5fmapping',['WICONNECT_PINNAME_TO_GPIO_NO_MAPPING',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a8d6d7c580a7aa3c4d64d41cac6e0307a',1,'wiconnect']]],
+  ['wiconnect_5fprocessing',['WICONNECT_PROCESSING',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a289d83a8cf2d1e1f272134d8268925c0',1,'wiconnect']]],
+  ['wiconnect_5fresponse_5fparse_5ferror',['WICONNECT_RESPONSE_PARSE_ERROR',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab17f003b5f90e88328bbc76435f9f2e5',1,'wiconnect']]],
+  ['wiconnect_5fsuccess',['WICONNECT_SUCCESS',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7',1,'wiconnect']]],
+  ['wiconnect_5ftimeout',['WICONNECT_TIMEOUT',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ae6a9fb0c6333a0431e5775da996087ac',1,'wiconnect']]],
+  ['wiconnect_5funderflow',['WICONNECT_UNDERFLOW',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05a7d4f9bd8b2b8ccc2ad902271e5241b02',1,'wiconnect']]],
+  ['wiconnect_5funsupported',['WICONNECT_UNSUPPORTED',['../group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05ab18f839c77a6a1f964c096980ef24adc',1,'wiconnect']]]
+];
--- a/doc/html/search/functions_0.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/functions_0.js	Mon Oct 27 13:42:26 2014 -0700
@@ -2,6 +2,6 @@
 [
   ['checkcurrentcommand',['checkCurrentCommand',['../group__api__core__send__command.html#gaf48c1ec0b92af2619ab846baaaa471cd',1,'wiconnect::Wiconnect']]],
   ['closeallsockets',['closeAllSockets',['../group__api__socket__misc.html#ga8a80d96efac7cc514fe7fc61d1878106',1,'wiconnect::SocketInterface']]],
-  ['connect',['connect',['../group__api__socket__misc.html#ga037cb2813683697342fff01239c7f6f8',1,'wiconnect::SocketInterface']]],
+  ['connect',['connect',['../group__api__socket__misc.html#gab24204ef309b6e7a52b03b35a7046b45',1,'wiconnect::SocketInterface']]],
   ['createfile',['createFile',['../group__api__file__methods.html#ga16fb09105975644879eb09581ce486e5',1,'wiconnect::FileInterface']]]
 ];
--- a/doc/html/search/functions_3.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/functions_3.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,17 +1,32 @@
 var searchData=
 [
-  ['getcommanddefaulttimeout',['getCommandDefaultTimeout',['../group__api__core__settings.html#gad5d31980a7b1e143f00b0117468c1a7e',1,'wiconnect::Wiconnect']]],
+  ['getblockingenabled',['getBlockingEnabled',['../group__api__core__settings.html#gaf6115968c49c128717cacd2f06b883ad',1,'wiconnect::Wiconnect']]],
+  ['getcommanddefaulttimeout',['getCommandDefaultTimeout',['../group__api__core__settings.html#gad8d98b8d2610f4ea564bede27e87857e',1,'wiconnect::Wiconnect']]],
   ['getdhcpenabled',['getDhcpEnabled',['../group__api__network__settings.html#ga70ec796b88eb6f8e7990dbf3eb2f2eff',1,'wiconnect::NetworkInterface']]],
+  ['getdnsaddress',['getDnsAddress',['../group__api__network__settings.html#ga585cb71d386ee61db3772f4b3218cb6e',1,'wiconnect::NetworkInterface']]],
   ['getinstance',['getInstance',['../group__api__core__misc.html#ga8dcd3ac87afd58b225abb068e835d06e',1,'wiconnect::Wiconnect']]],
-  ['getipaddress',['getIpAddress',['../group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290',1,'wiconnect::NetworkInterface']]],
+  ['getipaddress',['getIpAddress',['../group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f',1,'wiconnect::NetworkInterface']]],
   ['getipsettings',['getIpSettings',['../group__api__network__settings.html#ga291aef702f1c10bf2970394e3458022b',1,'wiconnect::NetworkInterface']]],
   ['getlastcommandresponsecodestr',['getLastCommandResponseCodeStr',['../group__api__core__misc.html#gad8069679fabb52d44647d27703f1a09a',1,'wiconnect::Wiconnect']]],
   ['getlastcommandresponselength',['getLastCommandResponseLength',['../group__api__core__misc.html#ga600215de23210071c42996d04390071e',1,'wiconnect::Wiconnect']]],
+  ['getmacaddress',['getMacAddress',['../group__api__network__wlan.html#ga70991a2c5865c8f0b44b67de35f3b6b3',1,'wiconnect::NetworkInterface']]],
   ['getnetworkjoinresult',['getNetworkJoinResult',['../group__api__network__wlan.html#gafefe6e679d7b48a7127d3ed6371fe58b',1,'wiconnect::NetworkInterface']]],
   ['getnetworkstatus',['getNetworkStatus',['../group__api__network__wlan.html#ga047ba9670f60406466391cec5bdd28e5',1,'wiconnect::NetworkInterface']]],
   ['getresponsebuffer',['getResponseBuffer',['../group__api__core__misc.html#ga27b5d6b8207e4ef0f73875606d628da8',1,'wiconnect::Wiconnect']]],
+  ['getrssi',['getRssi',['../group__api__network__wlan.html#gaa9db3c463cf6b4f351c37671882dd3ee',1,'wiconnect::NetworkInterface']]],
   ['getsetting',['getSetting',['../group__api__core__settings.html#ga16d5022d1fbd784fe0fd90a56911c5bc',1,'wiconnect::Wiconnect::getSetting(const char *settingStr, uint32_t *valuePtr)'],['../group__api__core__settings.html#ga9dfd70aac8f0770f300ccf3a126ba296',1,'wiconnect::Wiconnect::getSetting(const char *settingStr, char **valuePtr)'],['../group__api__core__settings.html#ga670947ef630233f7866f885500548233',1,'wiconnect::Wiconnect::getSetting(const char *settingStr, char *valueBuffer, uint16_t valueBufferLen)']]],
-  ['getsignalstrength',['getSignalStrength',['../group__api__network__settings.html#gaba16b9918e55c08285cf5b8b50dbabea',1,'wiconnect::NetworkInterface']]],
+  ['getsignalstrength',['getSignalStrength',['../group__api__network__wlan.html#gaba16b9918e55c08285cf5b8b50dbabea',1,'wiconnect::NetworkInterface']]],
   ['getversion',['getVersion',['../group__api__core__misc.html#ga4fc195839bc6c6bd0091074cbdc94c4f',1,'wiconnect::Wiconnect']]],
-  ['getwiconnectresultstr',['getWiconnectResultStr',['../group__conversion__util.html#gac96e2d2fca60cba12e7429626f9186be',1,'wiconnect::Wiconnect']]]
+  ['getwiconnectresultstr',['getWiconnectResultStr',['../group__conversion__util.html#gac96e2d2fca60cba12e7429626f9186be',1,'wiconnect::Wiconnect']]],
+  ['ghmactivate',['ghmActivate',['../group__api__ghm__activate.html#gaa0213731eebd4a14e9099d01ff76beff',1,'wiconnect::GhmInterface']]],
+  ['ghmdeactivate',['ghmDeactivate',['../group__api__ghm__activate.html#gad0e0484d1f9a6608475874544f96708b',1,'wiconnect::GhmInterface']]],
+  ['ghmdeletemessage',['ghmDeleteMessage',['../group__api__ghm__msg.html#ga451de9d69f7ecbf38e36056e502b94b0',1,'wiconnect::GhmInterface::ghmDeleteMessage(uint8_t listIndex)'],['../group__api__ghm__msg.html#ga7273f4c691aeccd241327f1be3e8d0e9',1,'wiconnect::GhmInterface::ghmDeleteMessage(const char *msgId)']]],
+  ['ghmdownloadcapabilities',['ghmDownloadCapabilities',['../group__api__ghm__activate.html#gaff03ecaa08146e6925820209cdab56bd',1,'wiconnect::GhmInterface']]],
+  ['ghmgetmessage',['ghmGetMessage',['../group__api__ghm__msg.html#gaaa05391432b2ca38bb416c671f57b234',1,'wiconnect::GhmInterface::ghmGetMessage(WiconnectSocket &amp;socket, GhmMessageGetType getType=GHM_MSG_GET_DATA_ONLY)'],['../group__api__ghm__msg.html#gaa905a010f0e234d290eaef6e42975c29',1,'wiconnect::GhmInterface::ghmGetMessage(WiconnectSocket &amp;socket, uint8_t listIndex, GhmMessageGetType getType=GHM_MSG_GET_DATA_ONLY)'],['../group__api__ghm__msg.html#ga9c6dffaa871f2443a32d75276160682d',1,'wiconnect::GhmInterface::ghmGetMessage(WiconnectSocket &amp;socket, const char *msgId, GhmMessageGetType getType=GHM_MSG_GET_DATA_ONLY)']]],
+  ['ghmisactivated',['ghmIsActivated',['../group__api__ghm__activate.html#ga8bec70f780ca7de9dce1a15830c179ff',1,'wiconnect::GhmInterface']]],
+  ['ghmlistmessages',['ghmListMessages',['../group__api__ghm__msg.html#gae69971594793e1a10f11a51277909502',1,'wiconnect::GhmInterface']]],
+  ['ghmpostmessage',['ghmPostMessage',['../group__api__ghm__msg.html#gadc281f497041b26a151c72a0b5d03543',1,'wiconnect::GhmInterface']]],
+  ['ghmread',['ghmRead',['../group__api__ghm__com.html#ga3fde7b34da992719b41fc52178b73bc2',1,'wiconnect::GhmInterface::ghmRead(const char *controlName, const char **valueStrPtr)'],['../group__api__ghm__com.html#ga2d4f14ef409c30b49ce2a06b72d10c7f',1,'wiconnect::GhmInterface::ghmRead(const char *controlName, uint32_t *valueIntPtr)'],['../group__api__ghm__com.html#ga965090d4b28bda9f58716b522a6bee12',1,'wiconnect::GhmInterface::ghmRead(const char *controlName, char *valueBuffer, uint16_t valueBufferLen)']]],
+  ['ghmsynchronize',['ghmSynchronize',['../group__api__ghm__com.html#ga0aa48506edb22c90be513683672b96c7',1,'wiconnect::GhmInterface']]],
+  ['ghmwrite',['ghmWrite',['../group__api__ghm__com.html#ga2f57fc33ad0e71d608b1350d4e3ab223',1,'wiconnect::GhmInterface::ghmWrite(const char *elementName, const char *strValue)'],['../group__api__ghm__com.html#ga26ef47c451e7dbe869f19f5f36695e7c',1,'wiconnect::GhmInterface::ghmWrite(const char *elementName, uint32_t uintValue)'],['../group__api__ghm__com.html#gab524e64f4bbae826c27bf39d7f2d3c2e',1,'wiconnect::GhmInterface::ghmWrite(const char *elementName, int32_t intValue)'],['../group__api__ghm__com.html#ga5eb797aba87a3ab76d742afe34292ee6',1,'wiconnect::GhmInterface::ghmWrite(const GhmElementArray *elementArray)']]]
 ];
--- a/doc/html/search/functions_5.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/functions_5.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,7 +1,7 @@
 var searchData=
 [
   ['init',['init',['../group__api__core__misc.html#gae2e3add2e60543d0e3340ed7a9e034ad',1,'wiconnect::Wiconnect']]],
-  ['iptostr',['ipToStr',['../group__conversion__util.html#gaff8b0af70f4d4be792b943ad3af27303',1,'wiconnect::NetworkInterface']]],
+  ['iptostr',['ipToStr',['../group__conversion__util.html#ga02e6b01f11f2283208f051b1b49b634c',1,'wiconnect::NetworkInterface']]],
   ['isinitialized',['isInitialized',['../group__api__core__misc.html#gab00c7110984f6d6187241d17a4a431ff',1,'wiconnect::Wiconnect']]],
   ['iswebsetuprunning',['isWebSetupRunning',['../group__api__network__setup.html#gab52d3a01427d0e8bd52460d992144f65',1,'wiconnect::NetworkInterface']]]
 ];
--- a/doc/html/search/functions_8.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/functions_8.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['macaddresstostr',['macAddressToStr',['../group__conversion__util.html#ga13ecaf390b4bf4a68b51a6b18e669134',1,'wiconnect::NetworkInterface']]]
+  ['macaddresstostr',['macAddressToStr',['../group__conversion__util.html#ga01520d55f1923d90fb899ddef2f21cdf',1,'wiconnect::NetworkInterface']]]
 ];
--- a/doc/html/search/functions_c.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/functions_c.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,6 +1,5 @@
 var searchData=
 [
-  ['registersocketirqhandler',['registerSocketIrqHandler',['../group__api__socket__misc.html#ga94d1eb5407cb8b60ad366ecbe0e1b52a',1,'wiconnect::SocketInterface']]],
   ['reset',['reset',['../group__api__core__misc.html#gabec1504eb7f486085dad82c4a94310e3',1,'wiconnect::Wiconnect']]],
   ['responsetoint32',['responseToInt32',['../group__api__core__misc.html#gada79343aece515e00f9be4045d3858a0',1,'wiconnect::Wiconnect']]],
   ['responsetouint32',['responseToUint32',['../group__api__core__misc.html#gac40b2964149e60245ff3cac6adbcd565',1,'wiconnect::Wiconnect']]],
--- a/doc/html/search/functions_d.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/functions_d.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,16 +1,18 @@
 var searchData=
 [
   ['scan',['scan',['../group__api__network__util.html#gacdf014d8aca9de33dbc1563c6bb1f956',1,'wiconnect::NetworkInterface']]],
-  ['sendcommand',['sendCommand',['../group__api__core__send__command.html#ga3a2637e5ce300a03c448edf1eff13c2c',1,'wiconnect::Wiconnect::sendCommand(const Callback &amp;completeCallback, char *responseBuffer, int responseBufferLen, int timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd, va_list vaList)'],['../group__api__core__send__command.html#gad23730a1f2f7714ef962f24a0f99f0f7',1,'wiconnect::Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen, int timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd, va_list vaList)'],['../group__api__core__send__command.html#ga0e0591e923da9ab814bb3dd3afbda197',1,'wiconnect::Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen, int timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd,...)'],['../group__api__core__send__command.html#gadd347dd3952ebab2fa27561c12858f65',1,'wiconnect::Wiconnect::sendCommand(int timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd,...)'],['../group__api__core__send__command.html#gaca2f1b17d2cc98cbc6dac219ffcf9e84',1,'wiconnect::Wiconnect::sendCommand(const ReaderFunc &amp;reader, void *user, const char *cmd,...)'],['../group__api__core__send__command.html#ga3655750f929f8f4e966278193d0385a9',1,'wiconnect::Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen, int timeoutMs, const char *cmd,...)'],['../group__api__core__send__command.html#gaf93db1b2730bb586287f7756f3cdf092',1,'wiconnect::Wiconnect::sendCommand(const Callback &amp;completeCallback, char *responseBuffer, int responseBufferLen, const char *cmd,...)'],['../group__api__core__send__command.html#gaac75ca154bd5d5a21c714dd828a92363',1,'wiconnect::Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen, const char *cmd,...)'],['../group__api__core__send__command.html#ga7eb983a196daa5de20a73fd234dc6f64',1,'wiconnect::Wiconnect::sendCommand(const Callback &amp;completeCallback, const char *cmd,...)'],['../group__api__core__send__command.html#gadad1c5b3df07a24ab09492edf93dd1f4',1,'wiconnect::Wiconnect::sendCommand(const char *cmd,...)'],['../group__api__core__send__command.html#gaa6d744ec08ba6c9abf451bdc2b0beb00',1,'wiconnect::Wiconnect::sendCommand(const Callback &amp;completeCallback, int timeoutMs, const char *cmd,...)'],['../group__api__core__send__command.html#gace479d34633141ff1eefa0e98c4d2351',1,'wiconnect::Wiconnect::sendCommand(int timeoutMs, const char *cmd,...)'],['../group__api__core__send__command.html#ga9d0ade0ec2866d7e0df5391bc69f5698',1,'wiconnect::Wiconnect::sendCommand(const char *cmd, va_list vaList)']]],
+  ['sendcommand',['sendCommand',['../group__api__core__send__command.html#gadd23f2f86fcc0a438dad798ab3353505',1,'wiconnect::Wiconnect::sendCommand(const Callback &amp;completeCallback, char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd, va_list vaList)'],['../group__api__core__send__command.html#gaa36b07b28a166fe51f9dc92bcab5d3d8',1,'wiconnect::Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd, va_list vaList)'],['../group__api__core__send__command.html#gabe0e5c170b9c6ec7d6dc96a3639c721e',1,'wiconnect::Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd,...)'],['../group__api__core__send__command.html#ga8c6d84b338847fbdd41f61c5375117e9',1,'wiconnect::Wiconnect::sendCommand(TimerTimeout timeoutMs, const ReaderFunc &amp;reader, void *user, const char *cmd,...)'],['../group__api__core__send__command.html#gaca2f1b17d2cc98cbc6dac219ffcf9e84',1,'wiconnect::Wiconnect::sendCommand(const ReaderFunc &amp;reader, void *user, const char *cmd,...)'],['../group__api__core__send__command.html#ga5f437c3518de14706c6fcff32a0b0f97',1,'wiconnect::Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen, TimerTimeout timeoutMs, const char *cmd,...)'],['../group__api__core__send__command.html#gaf93db1b2730bb586287f7756f3cdf092',1,'wiconnect::Wiconnect::sendCommand(const Callback &amp;completeCallback, char *responseBuffer, int responseBufferLen, const char *cmd,...)'],['../group__api__core__send__command.html#gaac75ca154bd5d5a21c714dd828a92363',1,'wiconnect::Wiconnect::sendCommand(char *responseBuffer, int responseBufferLen, const char *cmd,...)'],['../group__api__core__send__command.html#ga7eb983a196daa5de20a73fd234dc6f64',1,'wiconnect::Wiconnect::sendCommand(const Callback &amp;completeCallback, const char *cmd,...)'],['../group__api__core__send__command.html#gadad1c5b3df07a24ab09492edf93dd1f4',1,'wiconnect::Wiconnect::sendCommand(const char *cmd,...)'],['../group__api__core__send__command.html#ga9a89a0dd00f8eedb5e3eb8d4a4ed58df',1,'wiconnect::Wiconnect::sendCommand(const Callback &amp;completeCallback, TimerTimeout timeoutMs, const char *cmd,...)'],['../group__api__core__send__command.html#ga5666d99d72494995db0a812fcc9bbd09',1,'wiconnect::Wiconnect::sendCommand(TimerTimeout timeoutMs, const char *cmd,...)'],['../group__api__core__send__command.html#ga9d0ade0ec2866d7e0df5391bc69f5698',1,'wiconnect::Wiconnect::sendCommand(const char *cmd, va_list vaList)']]],
   ['setassertlogger',['setAssertLogger',['../group__api__core__settings.html#ga273f67fede26be4a3d5d909c5cf8c7e0',1,'wiconnect::Wiconnect']]],
-  ['setcommanddefaulttimeout',['setCommandDefaultTimeout',['../group__api__core__settings.html#gaaaf8be221699870053ad98911b066a32',1,'wiconnect::Wiconnect']]],
+  ['setblockingenabled',['setBlockingEnabled',['../group__api__core__settings.html#ga851795595a422a14249b7ea9f0038c4c',1,'wiconnect::Wiconnect']]],
+  ['setcommanddefaulttimeout',['setCommandDefaultTimeout',['../group__api__core__settings.html#gacae50138f9388a66496408f9c2bf6a6f',1,'wiconnect::Wiconnect']]],
   ['setdebuglogger',['setDebugLogger',['../group__api__core__settings.html#ga75fb083451ee530a1c19e6a4c1be185e',1,'wiconnect::Wiconnect']]],
   ['setdhcpenabled',['setDhcpEnabled',['../group__api__network__settings.html#ga65eb99f880ed739d0f3cd393e5b56eaf',1,'wiconnect::NetworkInterface']]],
+  ['setdnsaddress',['setDnsAddress',['../group__api__network__settings.html#ga258d8b80064c6ce311a433affe63a0e9',1,'wiconnect::NetworkInterface']]],
   ['setipsettings',['setIpSettings',['../group__api__network__settings.html#ga2f7ec21084d3f2835d9c1c201915a9e0',1,'wiconnect::NetworkInterface::setIpSettings(uint32_t ip, uint32_t netmask, uint32_t gateway)'],['../group__api__network__settings.html#gaa418175dd3d06b870f3dd8e035cb4dd0',1,'wiconnect::NetworkInterface::setIpSettings(const char *ip, const char *netmask, const char *gateway)']]],
   ['setpintogpiomapper',['setPinToGpioMapper',['../group__api__core__settings.html#ga180b043ec83c53b5bf6b9ef2b187d08d',1,'wiconnect::Wiconnect']]],
   ['setsetting',['setSetting',['../group__api__core__settings.html#gace51a2841415a53f54fcce336182f0ec',1,'wiconnect::Wiconnect::setSetting(const char *settingStr, uint32_t value)'],['../group__api__core__settings.html#ga085a17a466905069940611bdd14c1d3e',1,'wiconnect::Wiconnect::setSetting(const char *settingStr, const char *value)']]],
   ['signalstrengthtostr',['signalStrengthToStr',['../group__conversion__util.html#gad4661f859cfadbe193793898671043c9',1,'wiconnect::NetworkInterface']]],
-  ['ssidtostr',['ssidToStr',['../group__conversion__util.html#gafce7929a10e16cf9be7307a2f97bef3f',1,'wiconnect::NetworkInterface']]],
+  ['ssidtostr',['ssidToStr',['../group__conversion__util.html#gae8b534c249d503aa764017bb088f3890',1,'wiconnect::NetworkInterface']]],
   ['startwebsetup',['startWebSetup',['../group__api__network__setup.html#gaea3e133f2ee8c95d8d108c15561f3847',1,'wiconnect::NetworkInterface']]],
   ['stopcurrentcommand',['stopCurrentCommand',['../group__api__core__send__command.html#ga4a9bd29de1d5c496fbcc28ecfa51e7c0',1,'wiconnect::Wiconnect']]],
   ['stopwebsetup',['stopWebSetup',['../group__api__network__setup.html#gac5ca67b7bfa587935b5619e441dc8d8a',1,'wiconnect::NetworkInterface']]],
--- a/doc/html/search/functions_e.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/functions_e.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,8 +1,8 @@
 var searchData=
 [
-  ['tcpaccept',['tcpAccept',['../group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3',1,'wiconnect::SocketInterface']]],
-  ['tcpconnect',['tcpConnect',['../group__api__socket__tcp.html#ga4a788d604d759b5da51f682b998b9bd2',1,'wiconnect::SocketInterface']]],
-  ['tcplisten',['tcpListen',['../group__api__socket__tcp.html#ga563831b33089437233f128483d034578',1,'wiconnect::SocketInterface']]],
+  ['tcpaccept',['tcpAccept',['../group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035',1,'wiconnect::SocketInterface']]],
+  ['tcpconnect',['tcpConnect',['../group__api__socket__tcp.html#gad8e8632715a38222ce4fea5fe0aaf527',1,'wiconnect::SocketInterface']]],
+  ['tcplisten',['tcpListen',['../group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa',1,'wiconnect::SocketInterface']]],
   ['tcpserverstop',['tcpServerStop',['../group__api__socket__tcp.html#ga3d0137ebe308674e75f81457c38679d0',1,'wiconnect::SocketInterface']]],
-  ['tlsconnect',['tlsConnect',['../group__api__socket__tls.html#gacf10d28ced4591d99c4113ebee6382ca',1,'wiconnect::SocketInterface']]]
+  ['tlsconnect',['tlsConnect',['../group__api__socket__tls.html#ga4e6e89eb9aedec1ff6d25645c33f51e4',1,'wiconnect::SocketInterface']]]
 ];
--- a/doc/html/search/functions_f.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/functions_f.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,6 +1,6 @@
 var searchData=
 [
-  ['udpconnect',['udpConnect',['../group__api__socket__udp.html#ga80f1d19174124f3d0f246e1c1201b3ec',1,'wiconnect::SocketInterface']]],
-  ['unregistersocketirqhandler',['unregisterSocketIrqHandler',['../group__api__socket__misc.html#ga820d2fdb12d343212638e55633bd8551',1,'wiconnect::SocketInterface']]],
+  ['udpconnect',['udpConnect',['../group__api__socket__udp.html#ga0ca5eabcd64ce45b574205447101f8aa',1,'wiconnect::SocketInterface']]],
+  ['udplisten',['udpListen',['../group__api__socket__udp.html#ga067fb0d662d8e27e3f5b561ded29a51a',1,'wiconnect::SocketInterface']]],
   ['updatefirmware',['updateFirmware',['../group__api__core__misc.html#gad447fe3341539eb9b276d269645bb632',1,'wiconnect::Wiconnect']]]
 ];
--- a/doc/html/search/groups_0.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/groups_0.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,5 +1,4 @@
 var searchData=
 [
-  ['core',['Core',['../group__api__core.html',1,'']]],
-  ['conversion_20utilities',['Conversion Utilities',['../group__conversion__util.html',1,'']]]
+  ['activation',['Activation',['../group__api__ghm__activate.html',1,'']]]
 ];
--- a/doc/html/search/groups_1.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/groups_1.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,7 +1,5 @@
 var searchData=
 [
-  ['examples',['Examples',['../group__api__core__examples.html',1,'']]],
-  ['examples',['Examples',['../group__api__file__examples.html',1,'']]],
-  ['examples',['Examples',['../group__api__network__examples.html',1,'']]],
-  ['examples',['Examples',['../group__api__socket__examples.html',1,'']]]
+  ['core',['Core',['../group__api__core.html',1,'']]],
+  ['conversion_20utilities',['Conversion Utilities',['../group__conversion__util.html',1,'']]]
 ];
--- a/doc/html/search/groups_2.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/groups_2.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,4 +1,8 @@
 var searchData=
 [
-  ['file',['File',['../group__api__file.html',1,'']]]
+  ['examples',['Examples',['../group__api__core__examples.html',1,'']]],
+  ['examples',['Examples',['../group__api__file__examples.html',1,'']]],
+  ['examples',['Examples',['../group__api__ghm__examples.html',1,'']]],
+  ['examples',['Examples',['../group__api__network__examples.html',1,'']]],
+  ['examples',['Examples',['../group__api__socket__examples.html',1,'']]]
 ];
--- a/doc/html/search/groups_3.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/groups_3.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['http_20methods',['HTTP Methods',['../group__api__socket__http.html',1,'']]]
+  ['file',['File',['../group__api__file.html',1,'']]]
 ];
--- a/doc/html/search/groups_4.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/groups_4.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,10 +1,4 @@
 var searchData=
 [
-  ['macros',['Macros',['../group__api__core__macro.html',1,'']]],
-  ['miscellaneous_20methods',['Miscellaneous Methods',['../group__api__core__misc.html',1,'']]],
-  ['macros',['Macros',['../group__api__file__macro.html',1,'']]],
-  ['methods',['Methods',['../group__api__file__methods.html',1,'']]],
-  ['macros',['Macros',['../group__api__network__macros.html',1,'']]],
-  ['macros',['Macros',['../group__api__socket__macro.html',1,'']]],
-  ['miscellaneous_20methods',['Miscellaneous Methods',['../group__api__socket__misc.html',1,'']]]
+  ['gohack_2eme',['goHACK.me',['../group__api__ghm.html',1,'']]]
 ];
--- a/doc/html/search/groups_5.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/groups_5.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['network',['Network',['../group__api__network.html',1,'']]]
+  ['http_20methods',['HTTP Methods',['../group__api__socket__http.html',1,'']]]
 ];
--- a/doc/html/search/groups_6.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/groups_6.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,7 +1,12 @@
 var searchData=
 [
-  ['send_20command_20methods',['Send Command Methods',['../group__api__core__send__command.html',1,'']]],
-  ['settings_20methods',['Settings Methods',['../group__api__core__settings.html',1,'']]],
-  ['settings_20methods',['Settings Methods',['../group__api__network__settings.html',1,'']]],
-  ['socket',['Socket',['../group__api__socket.html',1,'']]]
+  ['macros',['Macros',['../group__api__core__macro.html',1,'']]],
+  ['miscellaneous_20methods',['Miscellaneous Methods',['../group__api__core__misc.html',1,'']]],
+  ['macros',['Macros',['../group__api__file__macro.html',1,'']]],
+  ['methods',['Methods',['../group__api__file__methods.html',1,'']]],
+  ['macros',['Macros',['../group__api__ghm__macro.html',1,'']]],
+  ['message',['Message',['../group__api__ghm__msg.html',1,'']]],
+  ['macros',['Macros',['../group__api__network__macros.html',1,'']]],
+  ['macros',['Macros',['../group__api__socket__macro.html',1,'']]],
+  ['miscellaneous_20methods',['Miscellaneous Methods',['../group__api__socket__misc.html',1,'']]]
 ];
--- a/doc/html/search/groups_7.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/groups_7.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,9 +1,4 @@
 var searchData=
 [
-  ['types',['Types',['../group__api__core__types.html',1,'']]],
-  ['types',['Types',['../group__api__file__types.html',1,'']]],
-  ['types',['Types',['../group__api__network__types.html',1,'']]],
-  ['tcp_20methods',['TCP Methods',['../group__api__socket__tcp.html',1,'']]],
-  ['tls_20methods',['TLS Methods',['../group__api__socket__tls.html',1,'']]],
-  ['types',['Types',['../group__api__socket__types.html',1,'']]]
+  ['network',['Network',['../group__api__network.html',1,'']]]
 ];
--- a/doc/html/search/groups_8.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/groups_8.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,5 +1,4 @@
 var searchData=
 [
-  ['utility_20methods',['Utility Methods',['../group__api__network__util.html',1,'']]],
-  ['udp_20methods',['UDP Methods',['../group__api__socket__udp.html',1,'']]]
+  ['read_2fwrite',['Read/Write',['../group__api__ghm__com.html',1,'']]]
 ];
--- a/doc/html/search/groups_9.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/groups_9.js	Mon Oct 27 13:42:26 2014 -0700
@@ -1,5 +1,7 @@
 var searchData=
 [
-  ['web_20setup_20methods',['Web Setup Methods',['../group__api__network__setup.html',1,'']]],
-  ['wlan_20methods',['WLAN Methods',['../group__api__network__wlan.html',1,'']]]
+  ['send_20command_20methods',['Send Command Methods',['../group__api__core__send__command.html',1,'']]],
+  ['settings_20methods',['Settings Methods',['../group__api__core__settings.html',1,'']]],
+  ['settings_20methods',['Settings Methods',['../group__api__network__settings.html',1,'']]],
+  ['socket',['Socket',['../group__api__socket.html',1,'']]]
 ];
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/search/groups_a.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_a.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/search/groups_a.js	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,10 @@
+var searchData=
+[
+  ['types',['Types',['../group__api__core__types.html',1,'']]],
+  ['types',['Types',['../group__api__file__types.html',1,'']]],
+  ['types',['Types',['../group__api__ghm__types.html',1,'']]],
+  ['types',['Types',['../group__api__network__types.html',1,'']]],
+  ['tcp_20methods',['TCP Methods',['../group__api__socket__tcp.html',1,'']]],
+  ['tls_20methods',['TLS Methods',['../group__api__socket__tls.html',1,'']]],
+  ['types',['Types',['../group__api__socket__types.html',1,'']]]
+];
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/search/groups_b.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_b.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/search/groups_b.js	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['utility_20methods',['Utility Methods',['../group__api__network__util.html',1,'']]],
+  ['udp_20methods',['UDP Methods',['../group__api__socket__udp.html',1,'']]]
+];
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/search/groups_c.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_c.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/search/groups_c.js	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['web_20setup_20methods',['Web Setup Methods',['../group__api__network__setup.html',1,'']]],
+  ['wlan_20methods',['WLAN Methods',['../group__api__network__wlan.html',1,'']]]
+];
--- a/doc/html/search/search.js	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/search/search.js	Mon Oct 27 13:42:26 2014 -0700
@@ -8,14 +8,14 @@
 var indexSectionsWithContent =
 {
   0: "acdefghijlmnopqrstuvw",
-  1: "cfhlmnqrsw",
+  1: "cfghlmnqrsw",
   2: "w",
   3: "cdfghijlmnoprstuw",
   4: "clotv",
-  5: "imps",
-  6: "fhnsw",
-  7: "fnsw",
-  8: "cefhmnstuw",
+  5: "impst",
+  6: "fghnsw",
+  7: "fgnsw",
+  8: "acefghmnrstuw",
   9: "l"
 };
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/search/typedefs_4.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="typedefs_4.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/search/typedefs_4.js	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['timertimeout',['TimerTimeout',['../namespacewiconnect.html#a0c27570b2913afc6339821df7c934810',1,'wiconnect']]]
+];
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/structwiconnect_1_1_ghm_element-members.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('structwiconnect_1_1_ghm_element.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">wiconnect::GhmElement Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="structwiconnect_1_1_ghm_element.html">wiconnect::GhmElement</a>, including all inherited members.</p>
+<table class="directory">
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/structwiconnect_1_1_ghm_element.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,134 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('structwiconnect_1_1_ghm_element.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="structwiconnect_1_1_ghm_element-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">wiconnect::GhmElement Struct Reference<div class="ingroups"><a class="el" href="group__api__ghm__types.html">Types</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>goHACK.me stream or control value  
+ <a href="structwiconnect_1_1_ghm_element.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>&gt;</code></p>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>goHACK.me stream or control value </p>
+
+<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00436">436</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/<a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/structwiconnect_1_1_ghm_element_array-members.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('structwiconnect_1_1_ghm_element_array.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">wiconnect::GhmElementArray Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="structwiconnect_1_1_ghm_element_array.html">wiconnect::GhmElementArray</a>, including all inherited members.</p>
+<table class="directory">
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/html/structwiconnect_1_1_ghm_element_array.html	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,134 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>ACKme WiConnect Host Library</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="font-family:verdana;">
+    <table border='0' cellpadding='0' cellspacing='0' width="98%">
+      <tr style="height:20px"><td>&nbsp;</td></tr>
+      <tr style="border-collapse: collapse; padding: 0;">
+        <td style="width:20px"></td>
+        <td style="padding-right:40px"><img src="ackmelogo.png" alt="ACKme Logo" /></td>
+        <td style="vertical-align:middle; text-align:left; font: bold 25px/100% Verdana, Arial, Helvetica, sans-serif;">
+        WiConnect Host Library- API Reference Guide</td>
+        <td style="width:20px"></td>
+      </tr>
+      <tr><td>&nbsp;</td></tr>
+    </table>
+</div><!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Library&#160;Overview</span></a></li>
+      <li><a href="modules.html"><span>Library&#160;API</span></a></li>
+      <li><a href="examples.html"><span>API&#160;Examples</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="http://wiconnect.ack.me/2.0/general_overview"><span>WiConnect&#160;Reference&#160;Manual</span></a></li>
+      <li><a href="http://www.ack.me/WiConnect"><span>ACKme&#160;Website</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('structwiconnect_1_1_ghm_element_array.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="structwiconnect_1_1_ghm_element_array-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">wiconnect::GhmElementArray Struct Reference<div class="ingroups"><a class="el" href="group__api__ghm__types.html">Types</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Array of goHACK.me stream or control values.  
+ <a href="structwiconnect_1_1_ghm_element_array.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>&gt;</code></p>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Array of goHACK.me stream or control values. </p>
+
+<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00451">451</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/<a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">&copy; ACKme Networks 2014</li>
+  </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
--- a/doc/html/structwiconnect_1_1_http_socket_args.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/structwiconnect_1_1_http_socket_args.html	Mon Oct 27 13:42:26 2014 -0700
@@ -140,9 +140,9 @@
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Struct for hold HTTP socket configuration. </p>
 
-<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00348">348</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
+<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00364">364</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/<a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a></li>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/<a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
--- a/doc/html/structwiconnect_1_1_mac_address.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/structwiconnect_1_1_mac_address.html	Mon Oct 27 13:42:26 2014 -0700
@@ -119,9 +119,9 @@
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Network MAC Address type. </p>
 
-<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00293">293</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
+<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00307">307</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/<a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a></li>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/<a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
--- a/doc/html/structwiconnect_1_1_ssid.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/structwiconnect_1_1_ssid.html	Mon Oct 27 13:42:26 2014 -0700
@@ -132,9 +132,9 @@
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Network SSID type. </p>
 
-<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00283">283</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
+<p>Definition at line <a class="el" href="_wiconnect_types_8h_source.html#l00297">297</a> of file <a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a>.</p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/<a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a></li>
+<li>C:/Users/reed/workspace/host-wiconnect/src/wiconnect/Wiconnect/api/<a class="el" href="_wiconnect_types_8h_source.html">WiconnectTypes.h</a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
--- a/doc/html/tcp__server_2example_8cpp_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/tcp__server_2example_8cpp_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -218,9 +218,9 @@
 <div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    <span class="comment">// STEP 4: Start the TCP server</span></div>
 <div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    <span class="comment">//-------------------------------------------------------------------------</span></div>
 <div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    printf(<span class="stringliteral">&quot;Starting TCP server, listening on: %s:%d\r\n&quot;</span>, wiconnectIfc.<a class="code" href="group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290">getIpAddress</a>(), TCP_SERVER_PORT);</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    printf(<span class="stringliteral">&quot;Starting TCP server, listening on: %s:%d\r\n&quot;</span>, wiconnectIfc.<a class="code" href="group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f">getIpAddress</a>(), TCP_SERVER_PORT);</div>
 <div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    <span class="keywordflow">if</span>(<a class="code" href="group__api__core__macro.html#gab27aa3ef76302b5221766abfd4f47e64">WICONNECT_FAILED</a>(result, wiconnectIfc.<a class="code" href="group__api__socket__tcp.html#ga563831b33089437233f128483d034578">tcpListen</a>(TCP_SERVER_PORT, TCP_SERVER_MAX_CLIENTS)))</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    <span class="keywordflow">if</span>(<a class="code" href="group__api__core__macro.html#gab27aa3ef76302b5221766abfd4f47e64">WICONNECT_FAILED</a>(result, wiconnectIfc.<a class="code" href="group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa">tcpListen</a>(TCP_SERVER_PORT, TCP_SERVER_MAX_CLIENTS)))</div>
 <div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    {</div>
 <div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;        printf(<span class="stringliteral">&quot;Failed to start TCP server: %s\r\n&quot;</span>, Wiconnect::getWiconnectResultStr(result));</div>
 <div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;        <span class="keywordflow">for</span>(;;); <span class="comment">// infinite loop</span></div>
@@ -235,7 +235,7 @@
 <div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div>
 <div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;        printf(<span class="stringliteral">&quot;Waiting for a client to connect...\r\n&quot;</span>);</div>
 <div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;        <span class="keywordflow">if</span>(<a class="code" href="group__api__core__macro.html#gab27aa3ef76302b5221766abfd4f47e64">WICONNECT_FAILED</a>(result, wiconnectIfc.<a class="code" href="group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3">tcpAccept</a>(clientSocket)))</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;        <span class="keywordflow">if</span>(<a class="code" href="group__api__core__macro.html#gab27aa3ef76302b5221766abfd4f47e64">WICONNECT_FAILED</a>(result, wiconnectIfc.<a class="code" href="group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035">tcpAccept</a>(clientSocket)))</div>
 <div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;        {</div>
 <div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;            printf(<span class="stringliteral">&quot;Failed to accept client: %s\r\n&quot;</span>, Wiconnect::getWiconnectResultStr(result));</div>
 <div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;            <span class="keywordflow">continue</span>;</div>
@@ -278,15 +278,15 @@
 <div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;</div>
 <div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;}</div>
 <div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;</div>
-<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00159">WiconnectTypes.h:159</a></div></div>
-<div class="ttc" id="classwiconnect_1_1_serial_config_html"><div class="ttname"><a href="classwiconnect_1_1_serial_config.html">wiconnect::SerialConfig</a></div><div class="ttdoc">Host<->Wiconnect Module serial configuration. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00129">sdk.h:129</a></div></div>
-<div class="ttc" id="group__api__network__settings_html_ga0b8fc3d5be0bae9ffcdc1b4b9aee6290"><div class="ttname"><a href="group__api__network__settings.html#ga0b8fc3d5be0bae9ffcdc1b4b9aee6290">wiconnect::NetworkInterface::getIpAddress</a></div><div class="ttdeci">const char * getIpAddress(char *buffer=NULL)</div><div class="ttdoc">Return the current IP address of the module if possible, else return 0.0.0.0. </div></div>
+<div class="ttc" id="group__api__network__settings_html_gabd8eb629fd40defaa9ab22c189652a3f"><div class="ttname"><a href="group__api__network__settings.html#gabd8eb629fd40defaa9ab22c189652a3f">wiconnect::NetworkInterface::getIpAddress</a></div><div class="ttdeci">const char * getIpAddress(char *buffer ALLOW_NULL_STRING_BUFFER)</div><div class="ttdoc">Return the current IP address of the module if possible, else return 0.0.0.0. </div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
+<div class="ttc" id="group__api__socket__tcp_html_ga9f4f3e53ea7f4e84d43529da8580aaaa"><div class="ttname"><a href="group__api__socket__tcp.html#ga9f4f3e53ea7f4e84d43529da8580aaaa">wiconnect::SocketInterface::tcpListen</a></div><div class="ttdeci">WiconnectResult tcpListen(uint16_t listeningPort, int maxClients=0 GPIO_IRQ_ARG_NC)</div><div class="ttdoc">Start internal TCP server and listen on specified port. </div></div>
+<div class="ttc" id="classwiconnect_1_1_serial_config_html"><div class="ttname"><a href="classwiconnect_1_1_serial_config.html">wiconnect::SerialConfig</a></div><div class="ttdoc">Host<->Wiconnect Module serial configuration. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00140">sdk.h:140</a></div></div>
 <div class="ttc" id="group__api__core__misc_html_gae2e3add2e60543d0e3340ed7a9e034ad"><div class="ttname"><a href="group__api__core__misc.html#gae2e3add2e60543d0e3340ed7a9e034ad">wiconnect::Wiconnect::init</a></div><div class="ttdeci">WiconnectResult init(bool bringNetworkUp=false)</div><div class="ttdoc">Initialize library and communication link with WiConnect WiFi module. </div></div>
-<div class="ttc" id="group__api__socket__tcp_html_ga0ea4efc810c7c5a9fbd96fcc627633b3"><div class="ttname"><a href="group__api__socket__tcp.html#ga0ea4efc810c7c5a9fbd96fcc627633b3">wiconnect::SocketInterface::tcpAccept</a></div><div class="ttdeci">WiconnectResult tcpAccept(WiconnectSocket &amp;socket, int timeoutMs=WICONNECT_WAIT_FOREVER)</div><div class="ttdoc">Wait for next client to connect to TCP server. </div></div>
+<div class="ttc" id="group__api__socket__tcp_html_ga9e12bc568b7e8d72152e53a90de13035"><div class="ttname"><a href="group__api__socket__tcp.html#ga9e12bc568b7e8d72152e53a90de13035">wiconnect::SocketInterface::tcpAccept</a></div><div class="ttdeci">WiconnectResult tcpAccept(WiconnectSocket &amp;socket, uint32_t timeoutMs=WICONNECT_WAIT_FOREVER)</div><div class="ttdoc">Wait for next client to connect to TCP server. </div></div>
 <div class="ttc" id="classwiconnect_1_1_wiconnect_socket_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect_socket.html">wiconnect::WiconnectSocket</a></div><div class="ttdoc">Connection object to remote server. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_socket_8h_source.html#l00043">WiconnectSocket.h:43</a></div></div>
-<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00074">WiconnectInterface.h:74</a></div></div>
-<div class="ttc" id="group__api__socket__tcp_html_ga563831b33089437233f128483d034578"><div class="ttname"><a href="group__api__socket__tcp.html#ga563831b33089437233f128483d034578">wiconnect::SocketInterface::tcpListen</a></div><div class="ttdeci">WiconnectResult tcpListen(uint16_t listeningPort, int maxClients=0, Pin irqPin=PIN_NC)</div><div class="ttdoc">Start internal TCP server and listen on specified port. </div></div>
-<div class="ttc" id="group__api__core__macro_html_gab27aa3ef76302b5221766abfd4f47e64"><div class="ttname"><a href="group__api__core__macro.html#gab27aa3ef76302b5221766abfd4f47e64">WICONNECT_FAILED</a></div><div class="ttdeci">#define WICONNECT_FAILED(result, func)</div><div class="ttdoc">Populates result with return value from func, returns TRUE if return value contains error...</div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00092">WiconnectTypes.h:92</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00078">WiconnectInterface.h:78</a></div></div>
+<div class="ttc" id="group__api__core__macro_html_gab27aa3ef76302b5221766abfd4f47e64"><div class="ttname"><a href="group__api__core__macro.html#gab27aa3ef76302b5221766abfd4f47e64">WICONNECT_FAILED</a></div><div class="ttdeci">#define WICONNECT_FAILED(result, func)</div><div class="ttdoc">Populates result with return value from func, returns TRUE if return value contains error...</div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00093">WiconnectTypes.h:93</a></div></div>
 <div class="ttc" id="group__api__network__wlan_html_gac439d0af5a17da32d405e25dcba83d16"><div class="ttname"><a href="group__api__network__wlan.html#gac439d0af5a17da32d405e25dcba83d16">wiconnect::NetworkInterface::join</a></div><div class="ttdeci">WiconnectResult join(const char *ssid=NULL, const char *password=NULL, const Callback &amp;completeHandler=Callback())</div><div class="ttdoc">Join a WiFi network. </div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
--- a/doc/html/web__setup_2example_8cpp_source.html	Mon Oct 27 13:32:40 2014 -0700
+++ b/doc/html/web__setup_2example_8cpp_source.html	Mon Oct 27 13:42:26 2014 -0700
@@ -238,11 +238,11 @@
 <div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;{</div>
 <div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    webSetupCompleteFlag = <span class="keyword">true</span>;</div>
 <div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;}</div>
-<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00159">WiconnectTypes.h:159</a></div></div>
+<div class="ttc" id="group__api__core__types_html_ga325637ed501728bd6c8c7a7982b9ce05"><div class="ttname"><a href="group__api__core__types.html#ga325637ed501728bd6c8c7a7982b9ce05">wiconnect::WiconnectResult</a></div><div class="ttdeci">WiconnectResult</div><div class="ttdoc">API Result code. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00166">WiconnectTypes.h:166</a></div></div>
 <div class="ttc" id="classwiconnect_1_1_callback_html"><div class="ttname"><a href="classwiconnect_1_1_callback.html">wiconnect::Callback</a></div><div class="ttdoc">Generic callback function. </div><div class="ttdef"><b>Definition:</b> <a href="_callback_8h_source.html#l00049">Callback.h:49</a></div></div>
-<div class="ttc" id="classwiconnect_1_1_serial_config_html"><div class="ttname"><a href="classwiconnect_1_1_serial_config.html">wiconnect::SerialConfig</a></div><div class="ttdoc">Host<->Wiconnect Module serial configuration. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00129">sdk.h:129</a></div></div>
-<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7">wiconnect::WICONNECT_SUCCESS</a></div><div class="ttdoc">Command successfully completed. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00165">WiconnectTypes.h:165</a></div></div>
-<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00074">WiconnectInterface.h:74</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_serial_config_html"><div class="ttname"><a href="classwiconnect_1_1_serial_config.html">wiconnect::SerialConfig</a></div><div class="ttdoc">Host<->Wiconnect Module serial configuration. </div><div class="ttdef"><b>Definition:</b> <a href="sdk_8h_source.html#l00140">sdk.h:140</a></div></div>
+<div class="ttc" id="group__api__core__types_html_gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7"><div class="ttname"><a href="group__api__core__types.html#gga325637ed501728bd6c8c7a7982b9ce05af0a2ad8af174aee6b52813d8528328e7">wiconnect::WICONNECT_SUCCESS</a></div><div class="ttdoc">Command successfully completed. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_types_8h_source.html#l00172">WiconnectTypes.h:172</a></div></div>
+<div class="ttc" id="classwiconnect_1_1_wiconnect_html"><div class="ttname"><a href="classwiconnect_1_1_wiconnect.html">wiconnect::Wiconnect</a></div><div class="ttdoc">The root WiConnect library class. This class inheriets all WiConnect functionality. </div><div class="ttdef"><b>Definition:</b> <a href="_wiconnect_interface_8h_source.html#l00078">WiconnectInterface.h:78</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/wiconnect_library.doxyfile	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,2329 @@
+# Doxyfile 1.8.7
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project.
+#
+# All text after a double hash (##) is considered a comment and is placed in
+# front of the TAG it is preceding.
+#
+# All text after a single hash (#) is considered a comment and will be ignored.
+# The format is:
+# TAG = value [value, ...]
+# For lists, items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (\" \").
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all text
+# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
+# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
+# for the list of possible encodings.
+# The default value is: UTF-8.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
+# double-quotes, unless you are using Doxywizard) that should identify the
+# project for which the documentation is generated. This name is used in the
+# title of most generated pages and in a few other places.
+# The default value is: My Project.
+
+PROJECT_NAME = "WiConnect Host Library"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
+# could be handy for archiving the generated documentation or if some version
+# control system is used.
+
+PROJECT_NUMBER = 
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer a
+# quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF = 
+
+# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
+# the documentation. The maximum height of the logo should not exceed 55 pixels
+# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
+# to the output directory.
+
+PROJECT_LOGO = 
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
+# into which the generated documentation will be written. If a relative path is
+# entered, it will be relative to the location where doxygen was started. If
+# left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = .
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
+# directories (in 2 levels) under the output directory of each output format and
+# will distribute the generated files over these directories. Enabling this
+# option can be useful when feeding doxygen a huge amount of source files, where
+# putting all generated files in the same directory would otherwise causes
+# performance problems for the file system.
+# The default value is: NO.
+
+CREATE_SUBDIRS = NO
+
+# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
+# characters to appear in the names of generated files. If set to NO, non-ASCII
+# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
+# U+3044.
+# The default value is: NO.
+
+ALLOW_UNICODE_NAMES = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
+# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
+# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
+# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
+# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
+# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
+# Ukrainian and Vietnamese.
+# The default value is: English.
+
+OUTPUT_LANGUAGE = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
+# descriptions after the members that are listed in the file and class
+# documentation (similar to Javadoc). Set to NO to disable this.
+# The default value is: YES.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
+# description of a member or function before the detailed description
+#
+# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+# The default value is: YES.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator that is
+# used to form the text in various listings. Each string in this list, if found
+# as the leading text of the brief description, will be stripped from the text
+# and the result, after processing the whole list, is used as the annotated
+# text. Otherwise, the brief description is used as-is. If left blank, the
+# following values are used ($name is automatically replaced with the name of
+# the entity):The $name class, The $name widget, The $name file, is, provides,
+# specifies, contains, represents, a, an and the.
+
+ABBREVIATE_BRIEF = 
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# doxygen will generate a detailed section even if there is only a brief
+# description.
+# The default value is: NO.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+# The default value is: NO.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
+# before files name in the file list and in the header files. If set to NO the
+# shortest path that makes the file name unique will be used
+# The default value is: YES.
+
+FULL_PATH_NAMES = YES
+
+# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
+# Stripping is only done if one of the specified strings matches the left-hand
+# part of the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the path to
+# strip.
+#
+# Note that you can specify absolute paths here, but also relative paths, which
+# will be relative from the directory where doxygen is started.
+# This tag requires that the tag FULL_PATH_NAMES is set to YES.
+
+STRIP_FROM_PATH = 
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
+# path mentioned in the documentation of a class, which tells the reader which
+# header file to include in order to use a class. If left blank only the name of
+# the header file containing the class definition is used. Otherwise one should
+# specify the list of include paths that are normally passed to the compiler
+# using the -I flag.
+
+STRIP_FROM_INC_PATH = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
+# less readable) file names. This can be useful is your file systems doesn't
+# support long names like on DOS, Mac, or CD-ROM.
+# The default value is: NO.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
+# first line (until the first dot) of a Javadoc-style comment as the brief
+# description. If set to NO, the Javadoc-style will behave just like regular Qt-
+# style comments (thus requiring an explicit @brief command for a brief
+# description.)
+# The default value is: NO.
+
+JAVADOC_AUTOBRIEF = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
+# line (until the first dot) of a Qt-style comment as the brief description. If
+# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
+# requiring an explicit \brief command for a brief description.)
+# The default value is: NO.
+
+QT_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
+# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
+# a brief description. This used to be the default behavior. The new default is
+# to treat a multi-line C++ comment block as a detailed description. Set this
+# tag to YES if you prefer the old behavior instead.
+#
+# Note that setting this tag to YES also means that rational rose comments are
+# not recognized any more.
+# The default value is: NO.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
+# documentation from any documented member that it re-implements.
+# The default value is: YES.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
+# new page for each member. If set to NO, the documentation of a member will be
+# part of the file/class/namespace that contains it.
+# The default value is: NO.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
+# uses this value to replace tabs by spaces in code fragments.
+# Minimum value: 1, maximum value: 16, default value: 4.
+
+TAB_SIZE = 4
+
+# This tag can be used to specify a number of aliases that act as commands in
+# the documentation. An alias has the form:
+# name=value
+# For example adding
+# "sideeffect=@par Side Effects:\n"
+# will allow you to put the command \sideeffect (or @sideeffect) in the
+# documentation, which will result in a user-defined paragraph with heading
+# "Side Effects:". You can put \n's in the value part of an alias to insert
+# newlines.
+
+ALIASES = 
+
+# This tag can be used to specify a number of word-keyword mappings (TCL only).
+# A mapping has the form "name=value". For example adding "class=itcl::class"
+# will allow you to use the command class in the itcl::class meaning.
+
+TCL_SUBST = 
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+# only. Doxygen will then generate output that is more tailored for C. For
+# instance, some of the names that are used will be different. The list of all
+# members will be omitted, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_FOR_C = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
+# Python sources only. Doxygen will then generate output that is more tailored
+# for that language. For instance, namespaces will be presented as packages,
+# qualified scopes will look different, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources. Doxygen will then generate output that is tailored for Fortran.
+# The default value is: NO.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for VHDL.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given
+# extension. Doxygen has a built-in mapping, but you can override or extend it
+# using this tag. The format is ext=language, where ext is a file extension, and
+# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
+# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
+# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
+# Fortran. In the later case the parser tries to guess whether the code is fixed
+# or free formatted code, this is the default for Fortran type files), VHDL. For
+# instance to make doxygen treat .inc files as Fortran files (default is PHP),
+# and .f files as C (default is Fortran), use: inc=Fortran f=C.
+#
+# Note For files without extension you can use no_extension as a placeholder.
+#
+# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
+# the files are not read by doxygen.
+
+EXTENSION_MAPPING = 
+
+# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
+# according to the Markdown format, which allows for more readable
+# documentation. See http://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you can
+# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
+# case of backward compatibilities issues.
+# The default value is: YES.
+
+MARKDOWN_SUPPORT = YES
+
+# When enabled doxygen tries to link words that correspond to documented
+# classes, or namespaces to their corresponding documentation. Such a link can
+# be prevented in individual cases by by putting a % sign in front of the word
+# or globally by setting AUTOLINK_SUPPORT to NO.
+# The default value is: YES.
+
+AUTOLINK_SUPPORT = YES
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should set this
+# tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string);
+# versus func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+# The default value is: NO.
+
+BUILTIN_STL_SUPPORT = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+# The default value is: NO.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
+# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
+# will parse them like normal C++ but will assume all classes use public instead
+# of private inheritance when no explicit protection keyword is present.
+# The default value is: NO.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate
+# getter and setter methods for a property. Setting this option to YES will make
+# doxygen to replace the get and set methods by a property in the documentation.
+# This will only work if the methods are indeed getting or setting a simple
+# type. If this is not the case, or you want to show the methods anyway, you
+# should set this option to NO.
+# The default value is: YES.
+
+IDL_PROPERTY_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+# The default value is: NO.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES to allow class member groups of the same type
+# (for instance a group of public functions) to be put as a subgroup of that
+# type (e.g. under the Public Functions section). Set it to NO to prevent
+# subgrouping. Alternatively, this can be done per class using the
+# \nosubgrouping command.
+# The default value is: YES.
+
+SUBGROUPING = YES
+
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
+# are shown inside the group in which they are included (e.g. using \ingroup)
+# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
+# and RTF).
+#
+# Note that this feature does not work in combination with
+# SEPARATE_MEMBER_PAGES.
+# The default value is: NO.
+
+INLINE_GROUPED_CLASSES = NO
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
+# with only public data fields or simple typedef fields will be shown inline in
+# the documentation of the scope in which they are defined (i.e. file,
+# namespace, or group documentation), provided this scope is documented. If set
+# to NO, structs, classes, and unions are shown on a separate page (for HTML and
+# Man pages) or section (for LaTeX and RTF).
+# The default value is: NO.
+
+INLINE_SIMPLE_STRUCTS = NO
+
+# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
+# enum is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically be
+# useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+# The default value is: NO.
+
+TYPEDEF_HIDES_STRUCT = YES
+
+# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
+# cache is used to resolve symbols given their name and scope. Since this can be
+# an expensive process and often the same symbol appears multiple times in the
+# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
+# doxygen will become slower. If the cache is too large, memory is wasted. The
+# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
+# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
+# symbols. At the end of a run doxygen will report the cache usage and suggest
+# the optimal cache size from a speed point of view.
+# Minimum value: 0, maximum value: 9, default value: 0.
+
+LOOKUP_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available. Private
+# class members and static file members will be hidden unless the
+# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
+# Note: This will also disable the warnings about undocumented members that are
+# normally produced when WARNINGS is set to YES.
+# The default value is: NO.
+
+EXTRACT_ALL = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
+# be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# scope will be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PACKAGE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
+# included in the documentation.
+# The default value is: NO.
+
+EXTRACT_STATIC = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
+# locally in source files will be included in the documentation. If set to NO
+# only classes defined in header files are included. Does not have any effect
+# for Java sources.
+# The default value is: YES.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local methods,
+# which are defined in the implementation section but not in the interface are
+# included in the documentation. If set to NO only methods in the interface are
+# included.
+# The default value is: NO.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base name of
+# the file that contains the anonymous namespace. By default anonymous namespace
+# are hidden.
+# The default value is: NO.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
+# undocumented members inside documented classes or files. If set to NO these
+# members will be included in the various overviews, but no documentation
+# section is generated. This option has no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+HIDE_UNDOC_MEMBERS = YES
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy. If set
+# to NO these classes will be included in the various overviews. This option has
+# no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+HIDE_UNDOC_CLASSES = YES
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
+# (class|struct|union) declarations. If set to NO these declarations will be
+# included in the documentation.
+# The default value is: NO.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
+# documentation blocks found inside the body of a function. If set to NO these
+# blocks will be appended to the function's detailed documentation block.
+# The default value is: NO.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation that is typed after a
+# \internal command is included. If the tag is set to NO then the documentation
+# will be excluded. Set it to YES to include the internal documentation.
+# The default value is: NO.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
+# names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+# The default value is: system dependent.
+
+CASE_SENSE_NAMES = NO
+
+# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
+# their full class and namespace scopes in the documentation. If set to YES the
+# scope will be hidden.
+# The default value is: NO.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
+# the files that are included by a file in the documentation of that file.
+# The default value is: YES.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
+# grouped member an include statement to the documentation, telling the reader
+# which file to include in order to use the member.
+# The default value is: NO.
+
+SHOW_GROUPED_MEMB_INC = NO
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
+# files with double quotes in the documentation rather than with sharp brackets.
+# The default value is: NO.
+
+FORCE_LOCAL_INCLUDES = NO
+
+# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
+# documentation for inline members.
+# The default value is: YES.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
+# (detailed) documentation of file and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order.
+# The default value is: YES.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
+# descriptions of file, namespace and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order. Note that
+# this will also influence the order of the classes in the class list.
+# The default value is: NO.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
+# (brief and detailed) documentation of class members so that constructors and
+# destructors are listed first. If set to NO the constructors will appear in the
+# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
+# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
+# member documentation.
+# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
+# detailed member documentation.
+# The default value is: NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
+# of group names into alphabetical order. If set to NO the group names will
+# appear in their defined order.
+# The default value is: NO.
+
+SORT_GROUP_NAMES = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
+# fully-qualified names, including namespaces. If set to NO, the class list will
+# be sorted only by class name, not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the alphabetical
+# list.
+# The default value is: NO.
+
+SORT_BY_SCOPE_NAME = NO
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
+# type resolution of all parameters of a function it will reject a match between
+# the prototype and the implementation of a member function even if there is
+# only one candidate or it is obvious which candidate to choose by doing a
+# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
+# accept a match between prototype and implementation in such cases.
+# The default value is: NO.
+
+STRICT_PROTO_MATCHING = NO
+
+# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
+# todo list. This list is created by putting \todo commands in the
+# documentation.
+# The default value is: YES.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
+# test list. This list is created by putting \test commands in the
+# documentation.
+# The default value is: YES.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
+# list. This list is created by putting \bug commands in the documentation.
+# The default value is: YES.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
+# the deprecated list. This list is created by putting \deprecated commands in
+# the documentation.
+# The default value is: YES.
+
+GENERATE_DEPRECATEDLIST = YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional documentation
+# sections, marked by \if <section_label> ... \endif and \cond <section_label>
+# ... \endcond blocks.
+
+ENABLED_SECTIONS = 
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
+# initial value of a variable or macro / define can have for it to appear in the
+# documentation. If the initializer consists of more lines than specified here
+# it will be hidden. Use a value of 0 to hide initializers completely. The
+# appearance of the value of individual variables and macros / defines can be
+# controlled using \showinitializer or \hideinitializer command in the
+# documentation regardless of this setting.
+# Minimum value: 0, maximum value: 10000, default value: 30.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
+# the bottom of the documentation of classes and structs. If set to YES the list
+# will mention the files that were used to generate the documentation.
+# The default value is: YES.
+
+SHOW_USED_FILES = YES
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
+# will remove the Files entry from the Quick Index and from the Folder Tree View
+# (if specified).
+# The default value is: YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
+# page. This will remove the Namespaces entry from the Quick Index and from the
+# Folder Tree View (if specified).
+# The default value is: YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command command input-file, where command is the value of the
+# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
+# by doxygen. Whatever the program writes to standard output is used as the file
+# version. For an example see the documentation.
+
+FILE_VERSION_FILTER = 
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. To create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option. You can
+# optionally specify a file name after the option, if omitted DoxygenLayout.xml
+# will be used as the name of the layout file.
+#
+# Note that if you run doxygen from a directory containing a file called
+# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
+# tag is left empty.
+
+LAYOUT_FILE = 
+
+# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
+# the reference definitions. This must be a list of .bib files. The .bib
+# extension is automatically appended if omitted. This requires the bibtex tool
+# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
+# For LaTeX the style of the bibliography can be controlled using
+# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
+# search path. Do not use file names with spaces, bibtex cannot handle them. See
+# also \cite for info how to create references.
+
+CITE_BIB_FILES = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated to
+# standard output by doxygen. If QUIET is set to YES this implies that the
+# messages are off.
+# The default value is: NO.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
+# this implies that the warnings are on.
+#
+# Tip: Turn warnings on while writing the documentation.
+# The default value is: YES.
+
+WARNINGS = YES
+
+# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
+# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
+# will automatically be disabled.
+# The default value is: YES.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some parameters
+# in a documented function, or documenting parameters that don't exist or using
+# markup commands wrongly.
+# The default value is: YES.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
+# are documented, but have no documentation for their parameters or return
+# value. If set to NO doxygen will only warn about wrong or incomplete parameter
+# documentation, but not about the absence of documentation.
+# The default value is: NO.
+
+WARN_NO_PARAMDOC = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that doxygen
+# can produce. The string should contain the $file, $line, and $text tags, which
+# will be replaced by the file and line number from which the warning originated
+# and the warning text. Optionally the format may contain $version, which will
+# be replaced by the version of the file (if it could be obtained via
+# FILE_VERSION_FILTER)
+# The default value is: $file:$line: $text.
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning and error
+# messages should be written. If left blank the output is written to standard
+# error (stderr).
+
+WARN_LOGFILE = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag is used to specify the files and/or directories that contain
+# documented source files. You may enter file names like myfile.cpp or
+# directories like /usr/src/myproject. Separate the files or directories with
+# spaces.
+# Note: If this tag is empty the current directory is searched.
+
+INPUT = ../src/wiconnect/Wiconnect ../src/wiconnect/Wiconnect/api ../src/wiconnect/Wiconnect/api/types ../src/wiconnect/Wiconnect/sdk/mbed ../src/wiconnect/examples/mbed ../src/wiconnect/examples/mbed/web_setup ../src/wiconnect/examples/mbed/join ../src/wiconnect/examples/mbed/http_get ../src/wiconnect/examples/mbed/tcp_server ../src/wiconnect/examples/mbed/ota 
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
+# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
+# documentation (see: http://www.gnu.org/software/libiconv) for the list of
+# possible encodings.
+# The default value is: UTF-8.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank the
+# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
+# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
+# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
+# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
+# *.qsf, *.as and *.js.
+
+FILE_PATTERNS = 
+
+# The RECURSIVE tag can be used to specify whether or not subdirectories should
+# be searched for input files as well.
+# The default value is: NO.
+
+RECURSIVE = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should be
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+#
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
+
+EXCLUDE = ../src/wiconnect/Wiconnect/sdk/arduino
+
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
+# from the input.
+# The default value is: NO.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories for example use the pattern */test/*
+
+EXCLUDE_PATTERNS = *.c */sdk/mbed/*.cpp
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories use the pattern */test/*
+
+EXCLUDE_SYMBOLS = wiconnect::Buffer wiconnect::CommandQueue wiconnect::SocketIrqHandlerMap wiconnect::TimeoutTimer wiconnect::WICONNECT_EXTERNAL_INTERRUPT_GPIO_BASE_CLASS wiconnect::WICONNECT_GPIO_BASE_CLASS wiconnect::WICONNECT_PERIODIC_TIMER_BASE_CLASS wiconnect::WICONNECT_SERIAL_BASE_CLASS
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or directories
+# that contain example code fragments that are included (see the \include
+# command).
+
+EXAMPLE_PATH = ../src/wiconnect/examples/mbed
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank all
+# files are included.
+
+EXAMPLE_PATTERNS = 
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude commands
+# irrespective of the value of the RECURSIVE tag.
+# The default value is: NO.
+
+EXAMPLE_RECURSIVE = YES
+
+# The IMAGE_PATH tag can be used to specify one or more files or directories
+# that contain images that are to be included in the documentation (see the
+# \image command).
+
+IMAGE_PATH = 
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command:
+#
+# <filter> <input-file>
+#
+# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
+# name of an input file. Doxygen will then use the output that the filter
+# program writes to standard output. If FILTER_PATTERNS is specified, this tag
+# will be ignored.
+#
+# Note that the filter must not add or remove lines; it is applied before the
+# code is scanned, but not when the output code is generated. If lines are added
+# or removed, the anchors will not be placed correctly.
+
+INPUT_FILTER = 
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form: pattern=filter
+# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
+# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
+# patterns match the file name, INPUT_FILTER is applied.
+
+FILTER_PATTERNS = 
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER ) will also be used to filter the input files that are used for
+# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
+# The default value is: NO.
+
+FILTER_SOURCE_FILES = NO
+
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
+# it is also possible to disable source filtering for a specific pattern using
+# *.ext= (so without naming a filter).
+# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
+
+FILTER_SOURCE_PATTERNS = 
+
+# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
+# is part of the input, its contents will be placed on the main page
+# (index.html). This can be useful if you have a project on for instance GitHub
+# and want to reuse the introduction page also for the doxygen output.
+
+USE_MDFILE_AS_MAINPAGE = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
+# generated. Documented entities will be cross-referenced with these sources.
+#
+# Note: To get rid of all source code in the generated output, make sure that
+# also VERBATIM_HEADERS is set to NO.
+# The default value is: NO.
+
+SOURCE_BROWSER = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body of functions,
+# classes and enums directly into the documentation.
+# The default value is: NO.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
+# special comment blocks from generated source code fragments. Normal C, C++ and
+# Fortran comments will always remain visible.
+# The default value is: YES.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
+# function all documented functions referencing it will be listed.
+# The default value is: NO.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES then for each documented function
+# all documented entities called/used by that function will be listed.
+# The default value is: NO.
+
+REFERENCES_RELATION = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
+# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
+# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
+# link to the documentation.
+# The default value is: YES.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
+# source code will show a tooltip with additional information such as prototype,
+# brief description and links to the definition and documentation. Since this
+# will make the HTML file larger and loading of large files a bit slower, you
+# can opt to disable this feature.
+# The default value is: YES.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+SOURCE_TOOLTIPS = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code will
+# point to the HTML generated by the htags(1) tool instead of doxygen built-in
+# source browser. The htags tool is part of GNU's global source tagging system
+# (see http://www.gnu.org/software/global/global.html). You will need version
+# 4.8.6 or higher.
+#
+# To use it do the following:
+# - Install the latest version of global
+# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
+# - Make sure the INPUT points to the root of the source tree
+# - Run doxygen as normal
+#
+# Doxygen will invoke htags (and that will in turn invoke gtags), so these
+# tools must be available from the command line (i.e. in the search path).
+#
+# The result: instead of the source browser generated by doxygen, the links to
+# source code will now point to the output of htags.
+# The default value is: NO.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
+# verbatim copy of the header file for each class for which an include is
+# specified. Set to NO to disable this.
+# See also: Section \class.
+# The default value is: YES.
+
+VERBATIM_HEADERS = YES
+
+# If the CLANG_ASSISTED_PARSING tag is set to YES, then doxygen will use the
+# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the
+# cost of reduced performance. This can be particularly helpful with template
+# rich C++ code for which doxygen's built-in parser lacks the necessary type
+# information.
+# Note: The availability of this option depends on whether or not doxygen was
+# compiled with the --with-libclang option.
+# The default value is: NO.
+
+CLANG_ASSISTED_PARSING = NO
+
+# If clang assisted parsing is enabled you can provide the compiler with command
+# line options that you would normally use when invoking the compiler. Note that
+# the include paths will already be set by doxygen for the files and directories
+# specified with INPUT and INCLUDE_PATH.
+# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
+
+CLANG_OPTIONS = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
+# compounds will be generated. Enable this if the project contains a lot of
+# classes, structs, unions or interfaces.
+# The default value is: YES.
+
+ALPHABETICAL_INDEX = YES
+
+# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
+# which the alphabetical index list will be split.
+# Minimum value: 1, maximum value: 20, default value: 5.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all classes will
+# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
+# can be used to specify a prefix (or a list of prefixes) that should be ignored
+# while generating the index headers.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+IGNORE_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
+# The default value is: YES.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
+# generated HTML page (for example: .htm, .php, .asp).
+# The default value is: .html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
+# each generated HTML page. If the tag is left blank doxygen will generate a
+# standard header.
+#
+# To get valid HTML the header file that includes any scripts and style sheets
+# that doxygen needs, which is dependent on the configuration options used (e.g.
+# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
+# default header using
+# doxygen -w html new_header.html new_footer.html new_stylesheet.css
+# YourConfigFile
+# and then modify the file new_header.html. See also section "Doxygen usage"
+# for information on how to generate the default header that doxygen normally
+# uses.
+# Note: The header is subject to change so you typically have to regenerate the
+# default header when upgrading to a newer version of doxygen. For a description
+# of the possible markers and block names see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_HEADER = header.html
+
+# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
+# generated HTML page. If the tag is left blank doxygen will generate a standard
+# footer. See HTML_HEADER for more information on how to generate a default
+# footer and what special commands can be used inside the footer. See also
+# section "Doxygen usage" for information on how to generate the default footer
+# that doxygen normally uses.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FOOTER = footer.html
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
+# sheet that is used by each HTML page. It can be used to fine-tune the look of
+# the HTML output. If left blank doxygen will generate a default style sheet.
+# See also section "Doxygen usage" for information on how to generate the style
+# sheet that doxygen normally uses.
+# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
+# it is more robust and this tag (HTML_STYLESHEET) will in the future become
+# obsolete.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_STYLESHEET = 
+
+# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
+# defined cascading style sheet that is included after the standard style sheets
+# created by doxygen. Using this option one can overrule certain style aspects.
+# This is preferred over using HTML_STYLESHEET since it does not replace the
+# standard style sheet and is therefor more robust against future updates.
+# Doxygen will copy the style sheet file to the output directory. For an example
+# see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_STYLESHEET = 
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
+# files will be copied as-is; there are no commands or markers available.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_FILES = 
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
+# will adjust the colors in the stylesheet and background images according to
+# this color. Hue is specified as an angle on a colorwheel, see
+# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
+# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
+# purple, and 360 is red again.
+# Minimum value: 0, maximum value: 359, default value: 220.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_HUE = 0
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
+# in the HTML output. For a value of 0 the output will use grayscales only. A
+# value of 255 will produce the most vivid colors.
+# Minimum value: 0, maximum value: 255, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_SAT = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
+# luminance component of the colors in the HTML output. Values below 100
+# gradually make the output lighter, whereas values above 100 make the output
+# darker. The value divided by 100 is the actual gamma applied, so 80 represents
+# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
+# change the gamma.
+# Minimum value: 40, maximum value: 240, default value: 80.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_GAMMA = 40
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting this
+# to NO can help when comparing the output of multiple runs.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_TIMESTAMP = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_DYNAMIC_SECTIONS = NO
+
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
+# shown in the various tree structured indices initially; the user can expand
+# and collapse entries dynamically later on. Doxygen will expand the tree to
+# such a level that at most the specified number of entries are visible (unless
+# a fully collapsed tree already exceeds this amount). So setting the number of
+# entries 1 will produce a full collapsed tree by default. 0 is a special value
+# representing an infinite number of entries and will result in a full expanded
+# tree by default.
+# Minimum value: 0, maximum value: 9999, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files will be
+# generated that can be used as input for Apple's Xcode 3 integrated development
+# environment (see: http://developer.apple.com/tools/xcode/), introduced with
+# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
+# Makefile in the HTML output directory. Running make will produce the docset in
+# that directory and running make install will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
+# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_DOCSET = NO
+
+# This tag determines the name of the docset feed. A documentation feed provides
+# an umbrella under which multiple documentation sets from a single provider
+# (such as a company or product suite) can be grouped.
+# The default value is: Doxygen generated docs.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# This tag specifies a string that should uniquely identify the documentation
+# set bundle. This should be a reverse domain-name style string, e.g.
+# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_BUNDLE_ID = org.doxygen.Project
+
+# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+# The default value is: org.doxygen.Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+
+# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
+# The default value is: Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_NAME = Publisher
+
+# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
+# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
+# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
+# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
+# Windows.
+#
+# The HTML Help Workshop contains a compiler that can convert all HTML output
+# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
+# files are now used as the Windows 98 help format, and will replace the old
+# Windows help format (.hlp) on all Windows platforms in the future. Compressed
+# HTML files also contain an index, a table of contents, and you can search for
+# words in the documentation. The HTML workshop also contains a viewer for
+# compressed HTML files.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_HTMLHELP = NO
+
+# The CHM_FILE tag can be used to specify the file name of the resulting .chm
+# file. You can add a path in front of the file if the result should not be
+# written to the html output directory.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_FILE = 
+
+# The HHC_LOCATION tag can be used to specify the location (absolute path
+# including file name) of the HTML help compiler ( hhc.exe). If non-empty
+# doxygen will try to run the HTML help compiler on the generated index.hhp.
+# The file has to be specified with full path.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+HHC_LOCATION = 
+
+# The GENERATE_CHI flag controls if a separate .chi index file is generated (
+# YES) or that it should be included in the master .chm file ( NO).
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+GENERATE_CHI = NO
+
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
+# and project file content.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_INDEX_ENCODING = 
+
+# The BINARY_TOC flag controls whether a binary table of contents is generated (
+# YES) or a normal table of contents ( NO) in the .chm file. Furthermore it
+# enables the Previous and Next buttons.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members to
+# the table of contents of the HTML help documentation and to the tree view.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+TOC_EXPAND = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
+# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
+# (.qch) of the generated HTML documentation.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
+# the file name of the resulting .qch file. The path specified is relative to
+# the HTML output folder.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QCH_FILE = 
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
+# Project output. For more information please see Qt Help Project / Namespace
+# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_NAMESPACE = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
+# Help Project output. For more information please see Qt Help Project / Virtual
+# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
+# folders).
+# The default value is: doc.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
+# filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_NAME = 
+
+# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_ATTRS = 
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's filter section matches. Qt Help Project / Filter Attributes (see:
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_SECT_FILTER_ATTRS = 
+
+# The QHG_LOCATION tag can be used to specify the location of Qt's
+# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
+# generated .qhp file.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHG_LOCATION = 
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
+# generated, together with the HTML files, they form an Eclipse help plugin. To
+# install this plugin and make it available under the help contents menu in
+# Eclipse, the contents of the directory containing the HTML and XML files needs
+# to be copied into the plugins directory of eclipse. The name of the directory
+# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
+# After copying Eclipse needs to be restarted before the help appears.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_ECLIPSEHELP = NO
+
+# A unique identifier for the Eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have this
+# name. Each documentation set should have its own identifier.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
+
+ECLIPSE_DOC_ID = org.doxygen.Project
+
+# If you want full control over the layout of the generated HTML pages it might
+# be necessary to disable the index and replace it with your own. The
+# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
+# of each HTML page. A value of NO enables the index and the value YES disables
+# it. Since the tabs in the index contain the same information as the navigation
+# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+DISABLE_INDEX = NO
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information. If the tag
+# value is set to YES, a side panel will be generated containing a tree-like
+# index structure (just like the one that is generated for HTML Help). For this
+# to work a browser that supports JavaScript, DHTML, CSS and frames is required
+# (i.e. any modern browser). Windows users are probably better off using the
+# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
+# further fine-tune the look of the index. As an example, the default style
+# sheet generated by doxygen has an example that shows how to put an image at
+# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
+# the same information as the tab index, you could consider setting
+# DISABLE_INDEX to YES when enabling this option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_TREEVIEW = YES
+
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
+# doxygen will group on one line in the generated HTML documentation.
+#
+# Note that a value of 0 will completely suppress the enum values from appearing
+# in the overview section.
+# Minimum value: 0, maximum value: 20, default value: 4.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+ENUM_VALUES_PER_LINE = 1
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
+# to set the initial width (in pixels) of the frame in which the tree is shown.
+# Minimum value: 0, maximum value: 1500, default value: 250.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+TREEVIEW_WIDTH = 250
+
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
+# external symbols imported via tag files in a separate window.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+EXT_LINKS_IN_WINDOW = NO
+
+# Use this tag to change the font size of LaTeX formulas included as images in
+# the HTML documentation. When you change the font size after a successful
+# doxygen run you need to manually remove any form_*.png images from the HTML
+# output directory to force them to be regenerated.
+# Minimum value: 8, maximum value: 50, default value: 10.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_FONTSIZE = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are not
+# supported properly for IE 6.0, but are supported on all modern browsers.
+#
+# Note that when changing this option you need to delete any form_*.png files in
+# the HTML output directory before the changes have effect.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_TRANSPARENT = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
+# http://www.mathjax.org) which uses client side Javascript for the rendering
+# instead of using prerendered bitmaps. Use this if you do not have LaTeX
+# installed or if you want to formulas look prettier in the HTML output. When
+# enabled you may also need to install MathJax separately and configure the path
+# to it using the MATHJAX_RELPATH option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+USE_MATHJAX = NO
+
+# When MathJax is enabled you can set the default output format to be used for
+# the MathJax output. See the MathJax site (see:
+# http://docs.mathjax.org/en/latest/output.html) for more details.
+# Possible values are: HTML-CSS (which is slower, but has the best
+# compatibility), NativeMML (i.e. MathML) and SVG.
+# The default value is: HTML-CSS.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_FORMAT = HTML-CSS
+
+# When MathJax is enabled you need to specify the location relative to the HTML
+# output directory using the MATHJAX_RELPATH option. The destination directory
+# should contain the MathJax.js script. For instance, if the mathjax directory
+# is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
+# Content Delivery Network so you can quickly see the result without installing
+# MathJax. However, it is strongly recommended to install a local copy of
+# MathJax from http://www.mathjax.org before deployment.
+# The default value is: http://cdn.mathjax.org/mathjax/latest.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
+# extension names that should be enabled during MathJax rendering. For example
+# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_EXTENSIONS = 
+
+# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
+# of code that will be used on startup of the MathJax code. See the MathJax site
+# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
+# example see the documentation.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_CODEFILE = 
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
+# the HTML output. The underlying search engine uses javascript and DHTML and
+# should work on any modern browser. Note that when using HTML help
+# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
+# there is already a search function so this one should typically be disabled.
+# For large projects the javascript based search engine can be slow, then
+# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
+# search using the keyboard; to jump to the search box use <access key> + S
+# (what the <access key> is depends on the OS and browser, but it is typically
+# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
+# key> to jump into the search results window, the results can be navigated
+# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
+# the search. The filter options can be selected when the cursor is inside the
+# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
+# to select a filter and <Enter> or <escape> to activate or cancel the filter
+# option.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+SEARCHENGINE = YES
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a web server instead of a web client using Javascript. There
+# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
+# setting. When disabled, doxygen will generate a PHP script for searching and
+# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
+# and searching needs to be provided by external tools. See the section
+# "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SERVER_BASED_SEARCH = NO
+
+# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
+# script for searching. Instead the search results are written to an XML file
+# which needs to be processed by an external indexer. Doxygen will invoke an
+# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
+# search results.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/).
+#
+# See the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH = NO
+
+# The SEARCHENGINE_URL should point to a search engine hosted by a web server
+# which will return the search results when EXTERNAL_SEARCH is enabled.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/). See the section "External Indexing and
+# Searching" for details.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHENGINE_URL = 
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+# search data is written to a file for indexing by an external tool. With the
+# SEARCHDATA_FILE tag the name of this file can be specified.
+# The default file is: searchdata.xml.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHDATA_FILE = searchdata.xml
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+# projects and redirect the results back to the right project.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH_ID = 
+
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+# projects other than the one defined by this configuration file, but that are
+# all added to the same external search index. Each project needs to have a
+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
+# to a relative location where the documentation can be found. The format is:
+# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTRA_SEARCH_MAPPINGS = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
+# The default value is: YES.
+
+GENERATE_LATEX = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked.
+#
+# Note that when enabling USE_PDFLATEX this option is only used for generating
+# bitmaps for formulas in the HTML output, but not in the Makefile that is
+# written to the output directory.
+# The default file is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
+# index for LaTeX.
+# The default file is: makeindex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used by the
+# printer.
+# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
+# 14 inches) and executive (7.25 x 10.5 inches).
+# The default value is: a4.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PAPER_TYPE = a4
+
+# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
+# that should be included in the LaTeX output. To get the times font for
+# instance you can specify
+# EXTRA_PACKAGES=times
+# If left blank no extra packages will be included.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+EXTRA_PACKAGES = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
+# generated LaTeX document. The header should contain everything until the first
+# chapter. If it is left blank doxygen will generate a standard header. See
+# section "Doxygen usage" for information on how to let doxygen write the
+# default header to a separate file.
+#
+# Note: Only use a user-defined header if you know what you are doing! The
+# following commands have a special meaning inside the header: $title,
+# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
+# replace them by respectively the title of the page, the current date and time,
+# only the current date, the version number of doxygen, the project name (see
+# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HEADER = 
+
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
+# generated LaTeX document. The footer should contain everything after the last
+# chapter. If it is left blank doxygen will generate a standard footer.
+#
+# Note: Only use a user-defined footer if you know what you are doing!
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_FOOTER = 
+
+# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the LATEX_OUTPUT output
+# directory. Note that the files will be copied as-is; there are no commands or
+# markers available.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_FILES = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
+# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
+# contain links (just like the HTML output) instead of page references. This
+# makes the output suitable for online browsing using a PDF viewer.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PDF_HYPERLINKS = YES
+
+# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+# the PDF file directly from the LaTeX files. Set this option to YES to get a
+# higher quality PDF documentation.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+USE_PDFLATEX = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
+# command to the generated LaTeX files. This will instruct LaTeX to keep running
+# if errors occur, instead of asking the user for help. This option is also used
+# when generating formulas in HTML.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BATCHMODE = NO
+
+# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
+# index chapters (such as File Index, Compound Index, etc.) in the output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HIDE_INDICES = NO
+
+# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
+# code with syntax highlighting in the LaTeX output.
+#
+# Note that which sources are shown also depends on other settings such as
+# SOURCE_BROWSER.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_SOURCE_CODE = NO
+
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+# bibliography, e.g. plainnat, or ieeetr. See
+# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
+# The default value is: plain.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BIB_STYLE = plain
+
+#---------------------------------------------------------------------------
+# Configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The
+# RTF output is optimized for Word 97 and may not look too pretty with other RTF
+# readers/editors.
+# The default value is: NO.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: rtf.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
+# contain hyperlink fields. The RTF file will contain links (just like the HTML
+# output) instead of page references. This makes the output suitable for online
+# browsing using Word or some other Word compatible readers that support those
+# fields.
+#
+# Note: WordPad (write) and others do not support links.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's config
+# file, i.e. a series of assignments. You only have to provide replacements,
+# missing definitions are set to their default value.
+#
+# See also section "Doxygen usage" for information on how to generate the
+# default style sheet that doxygen normally uses.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_STYLESHEET_FILE = 
+
+# Set optional variables used in the generation of an RTF document. Syntax is
+# similar to doxygen's config file. A template extensions file can be generated
+# using doxygen -e rtf extensionFile.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_EXTENSIONS_FILE = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
+# classes and files.
+# The default value is: NO.
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it. A directory man3 will be created inside the directory specified by
+# MAN_OUTPUT.
+# The default directory is: man.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to the generated
+# man pages. In case the manual section does not start with a number, the number
+# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
+# optional.
+# The default value is: .3.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_EXTENSION = .3
+
+# The MAN_SUBDIR tag determines the name of the directory created within
+# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
+# MAN_EXTENSION with the initial . removed.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_SUBDIR = 
+
+# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
+# will generate one additional man file for each entity documented in the real
+# man page(s). These additional files only source the real man page, but without
+# them the man command would be unable to find the correct page.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that
+# captures the structure of the code including all documentation.
+# The default value is: NO.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: xml.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_OUTPUT = xml
+
+# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
+# listings (including syntax highlighting and cross-referencing information) to
+# the XML output. Note that enabling this will significantly increase the size
+# of the XML output.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to the DOCBOOK output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
+# that can be used to generate PDF.
+# The default value is: NO.
+
+GENERATE_DOCBOOK = NO
+
+# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
+# front of it.
+# The default directory is: docbook.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_OUTPUT = docbook
+
+#---------------------------------------------------------------------------
+# Configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen
+# Definitions (see http://autogen.sf.net) file that captures the structure of
+# the code including all documentation. Note that this feature is still
+# experimental and incomplete at the moment.
+# The default value is: NO.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module
+# file that captures the structure of the code including all documentation.
+#
+# Note that this feature is still experimental and incomplete at the moment.
+# The default value is: NO.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
+# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
+# output from the Perl module output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
+# formatted so it can be parsed by a human reader. This is useful if you want to
+# understand what is going on. On the other hand, if this tag is set to NO the
+# size of the Perl module output will be much smaller and Perl will parse it
+# just the same.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file are
+# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
+# so different doxyrules.make files included by the same Makefile don't
+# overwrite each other's variables.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
+# C-preprocessor directives found in the sources and include files.
+# The default value is: YES.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
+# in the source code. If set to NO only conditional compilation will be
+# performed. Macro expansion can be done in a controlled way by setting
+# EXPAND_ONLY_PREDEF to YES.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
+# the macro expansion is limited to the macros specified with the PREDEFINED and
+# EXPAND_AS_DEFINED tags.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES the includes files in the
+# INCLUDE_PATH will be searched if a #include is found.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by the
+# preprocessor.
+# This tag requires that the tag SEARCH_INCLUDES is set to YES.
+
+INCLUDE_PATH = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will be
+# used.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+INCLUDE_FILE_PATTERNS = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that are
+# defined before the preprocessor is started (similar to the -D option of e.g.
+# gcc). The argument of the tag is a list of macros of the form: name or
+# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
+# is assumed. To prevent a macro definition from being undefined via #undef or
+# recursively expanded use the := operator instead of the = operator.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+PREDEFINED = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
+# tag can be used to specify a list of macro names that should be expanded. The
+# macro definition that is found in the sources will be used. Use the PREDEFINED
+# tag if you want to use a different macro definition that overrules the
+# definition found in the source code.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_AS_DEFINED = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
+# remove all references to function-like macros that are alone on a line, have
+# an all uppercase name, and do not end with a semicolon. Such function macros
+# are typically used for boiler-plate code, and will confuse the parser if not
+# removed.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES tag can be used to specify one or more tag files. For each tag
+# file the location of the external documentation should be added. The format of
+# a tag file without this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where loc1 and loc2 can be relative or absolute paths or URLs. See the
+# section "Linking to external documentation" for more information about the use
+# of tag files.
+# Note: Each tag file must have a unique name (where the name does NOT include
+# the path). If a tag file is not located in the directory in which doxygen is
+# run, you must also specify the path to the tagfile here.
+
+TAGFILES = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
+# tag file that is based on the input files it reads. See section "Linking to
+# external documentation" for more information about the usage of tag files.
+
+GENERATE_TAGFILE = 
+
+# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
+# class index. If set to NO only the inherited external classes will be listed.
+# The default value is: NO.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
+# the modules index. If set to NO, only the current project's groups will be
+# listed.
+# The default value is: YES.
+
+EXTERNAL_GROUPS = YES
+
+# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
+# the related pages index. If set to NO, only the current project's pages will
+# be listed.
+# The default value is: YES.
+
+EXTERNAL_PAGES = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of 'which perl').
+# The default file (with absolute path) is: /usr/bin/perl.
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
+# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
+# NO turns the diagrams off. Note that this option also works with HAVE_DOT
+# disabled, but it is recommended to install and use dot, since it yields more
+# powerful graphs.
+# The default value is: YES.
+
+CLASS_DIAGRAMS = NO
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see:
+# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH = 
+
+# You can include diagrams made with dia in doxygen documentation. Doxygen will
+# then run dia to produce the diagram and insert it in the documentation. The
+# DIA_PATH tag allows you to specify the directory where the dia binary resides.
+# If left empty dia is assumed to be found in the default search path.
+
+DIA_PATH = 
+
+# If set to YES, the inheritance and collaboration graphs will hide inheritance
+# and usage relations if the target is undocumented or is not a class.
+# The default value is: YES.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz (see:
+# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
+# Bell Labs. The other options in this section have no effect if this option is
+# set to NO
+# The default value is: NO.
+
+HAVE_DOT = NO
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
+# to run in parallel. When set to 0 doxygen will base this on the number of
+# processors available in the system. You can set it explicitly to a value
+# larger than 0 to get control over the balance between CPU load and processing
+# speed.
+# Minimum value: 0, maximum value: 32, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_NUM_THREADS = 0
+
+# When you want a differently looking font n the dot files that doxygen
+# generates you can specify the font name using DOT_FONTNAME. You need to make
+# sure dot is able to find the font, which can be done by putting it in a
+# standard location or by setting the DOTFONTPATH environment variable or by
+# setting DOT_FONTPATH to the directory containing the font.
+# The default value is: Helvetica.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTNAME = Helvetica
+
+# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
+# dot graphs.
+# Minimum value: 4, maximum value: 24, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTSIZE = 10
+
+# By default doxygen will tell dot to use the default font as specified with
+# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
+# the path where dot can find it using this tag.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTPATH = 
+
+# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
+# each documented class showing the direct and indirect inheritance relations.
+# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
+# graph for each documented class showing the direct and indirect implementation
+# dependencies (inheritance, containment, and class references variables) of the
+# class with other documented classes.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
+# groups, showing the direct groups dependencies.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LOOK = NO
+
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
+# class node. If there are many fields or methods and many nodes the graph may
+# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
+# number of items for each type to make the size more manageable. Set this to 0
+# for no limit. Note that the threshold may be exceeded by 50% before the limit
+# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
+# but if the number exceeds 15, the total amount of fields shown is limited to
+# 10.
+# Minimum value: 0, maximum value: 100, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LIMIT_NUM_FIELDS = 10
+
+# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
+# collaboration graphs will show the relations between templates and their
+# instances.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+TEMPLATE_RELATIONS = NO
+
+# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
+# YES then doxygen will generate a graph for each documented file showing the
+# direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDE_GRAPH = YES
+
+# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
+# set to YES then doxygen will generate a graph for each documented file showing
+# the direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALL_GRAPH = NO
+
+# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable caller graphs for selected
+# functions only using the \callergraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALLER_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
+# hierarchy of all classes instead of a textual one.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
+# dependencies a directory has on other directories in a graphical way. The
+# dependency relations are determined by the #include relations between the
+# files in the directories.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot.
+# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
+# to make the SVG files visible in IE 9+ (other browsers do not have this
+# requirement).
+# Possible values are: png, jpg, gif and svg.
+# The default value is: png.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_IMAGE_FORMAT = png
+
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+# enable generation of interactive SVG images that allow zooming and panning.
+#
+# Note that this requires a modern browser other than Internet Explorer. Tested
+# and working are Firefox, Chrome, Safari, and Opera.
+# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
+# the SVG files visible. Older versions of IE do not have SVG support.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INTERACTIVE_SVG = NO
+
+# The DOT_PATH tag can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_PATH = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the \dotfile
+# command).
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOTFILE_DIRS = 
+
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the \mscfile
+# command).
+
+MSCFILE_DIRS = 
+
+# The DIAFILE_DIRS tag can be used to specify one or more directories that
+# contain dia files that are included in the documentation (see the \diafile
+# command).
+
+DIAFILE_DIRS = 
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
+# that will be shown in the graph. If the number of nodes in a graph becomes
+# larger than this value, doxygen will truncate the graph, which is visualized
+# by representing a node as a red box. Note that doxygen if the number of direct
+# children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
+# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+# Minimum value: 0, maximum value: 10000, default value: 50.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_GRAPH_MAX_NODES = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
+# generated by dot. A depth value of 3 means that only nodes reachable from the
+# root by following a path via at most 3 edges will be shown. Nodes that lay
+# further from the root node will be omitted. Note that setting this option to 1
+# or 2 may greatly reduce the computation time needed for large code bases. Also
+# note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+# Minimum value: 0, maximum value: 1000, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not seem
+# to support this out of the box.
+#
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+# read).
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_TRANSPARENT = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10) support
+# this, this feature is disabled by default.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_MULTI_TARGETS = NO
+
+# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
+# explaining the meaning of the various boxes and arrows in the dot generated
+# graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
+# files that are used to generate the various graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_CLEANUP = YES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/CommandCommon.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,107 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+#include <stdio.h>
+#include <stdarg.h>
+#include "Wiconnect.h"
+#include "api/StringUtil.h"
+#include "internal/common.h"
+
+
+#define CHECK_NULL_BUFFER(buf) if(buf == NULL) return WICONNECT_NULL_BUFFER
+#define CHECK_INITIALIZED() if(!initialized) return WICONNECT_NOT_INITIALIZED
+#define RESET_CMD_HEADER(header)  memset(header, 0, sizeof(CommandHeader)); header->bytes_remaining = WICONNECT_HEADER_LENGTH
+
+#ifdef WICONNECT_ENABLE_DEBUGGING
+#define DEBUG_CMD_SEND(cmd)         debugLog(">> CMD: %s", cmd)
+#define DEBUG_CMD_LOG(res)          debugLog("<< LOG: %s", res)
+#define DEBUG_CMD_RESPONSE(res)     debugLog("<< RES: %s", res)
+#define DEBUG_CMD_ERROR(code)       debugLog("<< ERR:(%d) %s", code, getLastCommandResponseCodeStr())
+#define DEBUG_ERROR(msg, ...)       debugLog("   ERR: " msg, ## __VA_ARGS__)
+#define DEBUG_INFO(msg, ...)        debugLog("   DBG: " msg, ## __VA_ARGS__)
+#else
+#define DEBUG_CMD_SEND(cmd)
+#define DEBUG_CMD_LOG(res)
+#define DEBUG_CMD_RESPONSE(res)
+#define DEBUG_CMD_ERROR(code)
+#define DEBUG_ERROR(msg, ...)
+#define DEBUG_INFO(msg, ...)
+#endif
+
+
+typedef enum
+{
+    WICONNECT_CMD_TYPE_NULL = 0,
+    WICONNECT_CMD_TYPE_REPLY = 'R',
+    WICONNECT_CMD_TYPE_LOG = 'L',
+    WICONNECT_CMD_TYPE_SAFEMODE = 'S'
+} ResponseType;
+
+typedef enum
+{
+    WICONNECT_CMD_CODE_NULL         = 0,
+    WICONNECT_CMD_SUCCESS           = 1, // The command was successful
+    WICONNECT_CMD_FAILED            = 2, // The command failed, most likely in the firmware
+    WICONNECT_CMD_PARSE_ERROR       = 3, // Failed to parse the command
+    WICONNECT_CMD_UNKNOWN           = 4, // Unknown command
+    WICONNECT_CMD_TOO_FEW_ARGS      = 5, // Not enough command arguments
+    WICONNECT_CMD_TOO_MANY_ARGS     = 6, // Too many command arguments
+    WICONNECT_CMD_UNKNOWN_OPTION    = 7, // Unknown option (e.g. known 'set' command option)
+    WICONNECT_CMD_BAD_ARGS          = 8, // Invalid command arguments
+} ResponseCode;
+
+#define WICONNECT_HEADER_LENGTH 9
+typedef struct
+{
+    ResponseType response_type;
+    ResponseCode response_code;
+    uint16_t response_len;
+    uint8_t len_buffer[WICONNECT_HEADER_LENGTH];
+    uint8_t *len_buffer_ptr;
+    uint8_t bytes_remaining;
+} CommandHeader;
+
+typedef struct
+{
+    char *responseBuffer;
+    char *responseBufferPtr;
+    int responseBufferLen;
+    ReaderFunc reader;
+    void *user;
+    char *commandPtr;
+    int commandLen;
+    int bytesToWrite;
+    int bytesToRead;
+    TimerTimeout timeoutMs;
+    Callback callback;
+    bool nonBlocking;
+} CommandContext;
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/WiconnectCommands.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,46 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#pragma once
+
+
+
+
+#define CMD_SAVE                            "save"
+#define CMD_GET_VERSION                     "ver"
+
+
+#define CMD_SET_SYSTEM_COMMAND_MODE         "set system.cmd.mode %s"
+#define CMD_SET_NETWORK_DHCP                "set network.dhcp.enabled %d"
+#define CMD_SET_STATIC_IP                   "set static.ip %d.%d.%d.%d"
+#define CMD_SET_STATIC_GATEWAY              "set static.netmask %d.%d.%d.%d"
+#define CMD_SET_STATIC_NETMASK              "set static.gateway %d.%d.%d.%d"
+
+
+#define CMD_GET_NETWORK_STATUS              "get network.status"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/common.h	Mon Oct 27 13:42:26 2014 -0700
@@ -0,0 +1,117 @@
+/**
+ * ACKme WiConnect Host Library is licensed under the BSD licence: 
+ * 
+ * Copyright (c)2014 ACKme Networks.
+ * All rights reserved. 
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met: 
+ * 
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ * this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright notice, 
+ * this list of conditions and the following disclaimer in the documentation 
+ * and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote products 
+ * derived from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
+ * OF SUCH DAMAGE.
+ */
+#ifndef _COMMON_H_
+#define _COMMON_H_
+
+
+#include "WiconnectCommands.h"
+
+
+
+/* Note we need the 2 concats below because arguments to ##
+ * are not expanded, so we need to expand __LINE__ with one indirection
+ * before doing the actual concatenation. */
+#define ASSERT_CONCAT_(a, b) a ## b
+#define ASSERT_CONCAT(a, b) ASSERT_CONCAT_(a, b)
+#define ct_assert(e) enum { ASSERT_CONCAT(assert_line_, __LINE__) = 1/(!!(e)) }
+
+#define wiconnect_assert(_wiconnect, msg, expr) if(!(expr)){if(_wiconnect != NULL) _wiconnect->assertLogger.call(msg); for(;;); }
+
+
+
+#ifndef WICONNECT_ASYNC_TIMER_ENABLED
+#define CHECK_CALLBACK_AVAILABLE(cb) if(cb.isValid()) return WICONNECT_UNSUPPORTED
+#else
+#define CHECK_CALLBACK_AVAILABLE(cb)
+#endif
+
+#define UNUSED(expr)  do { (void)(expr); } while (0)
+
+#define CHECK_CLEANUP_COMMAND()                                     \
+    if(result != WICONNECT_PROCESSING)                              \
+    {                                                               \
+        wiconnect->internalProcessingState = 0;                     \
+        wiconnect->currentCommandId = NULL;                         \
+    }
+
+#define CHECK_OTHER_COMMAND_EXECUTING()                             \
+{                                                                   \
+    static const volatile uint8_t __funcId = 0;                     \
+    if(wiconnect->currentCommandId == NULL)                         \
+    {                                                               \
+        wiconnect->currentCommandId = (void*)&__funcId;             \
+    }                                                               \
+    else if(wiconnect->currentCommandId != (void*)&__funcId)        \
+    {                                                               \
+        return WICONNECT_ANOTHER_CMD_EXECUTING;                     \
+    }                                                               \
+}
+
+#define _CHECK_CLEANUP_COMMAND()                                    \
+    if(result != WICONNECT_PROCESSING)                              \
+    {                                                               \
+        internalProcessingState = 0;                                \
+        currentCommandId = NULL;                                    \
+    }
+
+#define _CHECK_OTHER_COMMAND_EXECUTING()                            \
+{                                                                   \
+    static const volatile uint8_t __funcId = 0;                     \
+    if(currentCommandId == NULL)                                    \
+    {                                                               \
+        currentCommandId = (void*)&__funcId;                        \
+    }                                                               \
+    else if(currentCommandId != (void*)&__funcId)                   \
+    {                                                               \
+        return WICONNECT_ANOTHER_CMD_EXECUTING;                     \
+    }                                                               \
+}
+
+#define WICONNECT_IS_IDLE() (wiconnect->currentCommandId == NULL)
+#define _WICONNECT_IS_IDLE() (currentCommandId == NULL)
+
+
+
+#ifdef WICONNECT_USE_DEFAULT_STRING_BUFFERS
+#define SET_STR_BUFFER(_buffer, size)                               \
+    char *ptr;                                                      \
+    static char defaultBuffer[size];                                \
+    ptr = (_buffer == NULL) ? defaultBuffer : _buffer;
+#else
+#define SET_STR_BUFFER(_buffer, size)                               \
+    char *ptr;                                                      \
+    if(_buffer == NULL)                                             \
+    {                                                               \
+        return "<null>";                                            \
+    }                                                               \
+    ptr = _buffer;
+#endif
+
+
+#endif