cc3000 hostdriver with the mbed socket interface

Dependents:   cc3000_hello_world_demo cc3000_simple_socket_demo cc3000_ntp_demo cc3000_ping_demo ... more

Committer:
SolderSplashLabs
Date:
Thu Oct 03 21:00:00 2013 +0000
Revision:
23:fed7f64dd520
Parent:
0:615c697c33b0
Added separate debug messages and VT100 formatting

Who changed what in which revision?

UserRevisionLine numberNew contents of line
SolderSplashLabs 23:fed7f64dd520 1 /*****************************************************************************
SolderSplashLabs 23:fed7f64dd520 2 *
SolderSplashLabs 23:fed7f64dd520 3 * C++ interface/implementation created by Martin Kojtal (0xc0170). Thanks to
SolderSplashLabs 23:fed7f64dd520 4 * Jim Carver and Frank Vannieuwkerke for their inital cc3000 mbed port and
SolderSplashLabs 23:fed7f64dd520 5 * provided help.
SolderSplashLabs 23:fed7f64dd520 6 *
SolderSplashLabs 23:fed7f64dd520 7 * This version of "host driver" uses CC3000 Host Driver Implementation. Thus
SolderSplashLabs 23:fed7f64dd520 8 * read the following copyright:
SolderSplashLabs 23:fed7f64dd520 9 *
SolderSplashLabs 23:fed7f64dd520 10 * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
SolderSplashLabs 23:fed7f64dd520 11 *
SolderSplashLabs 23:fed7f64dd520 12 * Redistribution and use in source and binary forms, with or without
SolderSplashLabs 23:fed7f64dd520 13 * modification, are permitted provided that the following conditions
SolderSplashLabs 23:fed7f64dd520 14 * are met:
SolderSplashLabs 23:fed7f64dd520 15 *
SolderSplashLabs 23:fed7f64dd520 16 * Redistributions of source code must retain the above copyright
SolderSplashLabs 23:fed7f64dd520 17 * notice, this list of conditions and the following disclaimer.
SolderSplashLabs 23:fed7f64dd520 18 *
SolderSplashLabs 23:fed7f64dd520 19 * Redistributions in binary form must reproduce the above copyright
SolderSplashLabs 23:fed7f64dd520 20 * notice, this list of conditions and the following disclaimer in the
SolderSplashLabs 23:fed7f64dd520 21 * documentation and/or other materials provided with the
SolderSplashLabs 23:fed7f64dd520 22 * distribution.
SolderSplashLabs 23:fed7f64dd520 23 *
SolderSplashLabs 23:fed7f64dd520 24 * Neither the name of Texas Instruments Incorporated nor the names of
SolderSplashLabs 23:fed7f64dd520 25 * its contributors may be used to endorse or promote products derived
SolderSplashLabs 23:fed7f64dd520 26 * from this software without specific prior written permission.
SolderSplashLabs 23:fed7f64dd520 27 *
SolderSplashLabs 23:fed7f64dd520 28 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
SolderSplashLabs 23:fed7f64dd520 29 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
SolderSplashLabs 23:fed7f64dd520 30 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
SolderSplashLabs 23:fed7f64dd520 31 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
SolderSplashLabs 23:fed7f64dd520 32 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SolderSplashLabs 23:fed7f64dd520 33 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
SolderSplashLabs 23:fed7f64dd520 34 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
SolderSplashLabs 23:fed7f64dd520 35 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
SolderSplashLabs 23:fed7f64dd520 36 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
SolderSplashLabs 23:fed7f64dd520 37 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
SolderSplashLabs 23:fed7f64dd520 38 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
SolderSplashLabs 23:fed7f64dd520 39 *
SolderSplashLabs 23:fed7f64dd520 40 *****************************************************************************/
SolderSplashLabs 23:fed7f64dd520 41 #ifndef CC3000_EVENT_H
SolderSplashLabs 23:fed7f64dd520 42 #define CC3000_EVENT_H
SolderSplashLabs 23:fed7f64dd520 43
SolderSplashLabs 23:fed7f64dd520 44 typedef struct _bsd_read_return_t
SolderSplashLabs 23:fed7f64dd520 45 {
SolderSplashLabs 23:fed7f64dd520 46 int32_t iSocketDescriptor;
SolderSplashLabs 23:fed7f64dd520 47 int32_t iNumberOfBytes;
SolderSplashLabs 23:fed7f64dd520 48 uint32_t uiFlags;
SolderSplashLabs 23:fed7f64dd520 49 } tBsdReadReturnParams;
SolderSplashLabs 23:fed7f64dd520 50
SolderSplashLabs 23:fed7f64dd520 51 typedef struct _bsd_getsockopt_return_t
SolderSplashLabs 23:fed7f64dd520 52 {
SolderSplashLabs 23:fed7f64dd520 53 uint8_t ucOptValue[4];
SolderSplashLabs 23:fed7f64dd520 54 uint8_t iStatus;
SolderSplashLabs 23:fed7f64dd520 55 } tBsdGetSockOptReturnParams;
SolderSplashLabs 23:fed7f64dd520 56
SolderSplashLabs 23:fed7f64dd520 57 typedef struct _bsd_accept_return_t
SolderSplashLabs 23:fed7f64dd520 58 {
SolderSplashLabs 23:fed7f64dd520 59 int32_t iSocketDescriptor;
SolderSplashLabs 23:fed7f64dd520 60 int32_t iStatus;
SolderSplashLabs 23:fed7f64dd520 61 sockaddr tSocketAddress;
SolderSplashLabs 23:fed7f64dd520 62
SolderSplashLabs 23:fed7f64dd520 63 } tBsdReturnParams;
SolderSplashLabs 23:fed7f64dd520 64
SolderSplashLabs 23:fed7f64dd520 65 typedef struct _bsd_select_return_t
SolderSplashLabs 23:fed7f64dd520 66 {
SolderSplashLabs 23:fed7f64dd520 67 int32_t iStatus;
SolderSplashLabs 23:fed7f64dd520 68 uint32_t uiRdfd;
SolderSplashLabs 23:fed7f64dd520 69 uint32_t uiWrfd;
SolderSplashLabs 23:fed7f64dd520 70 uint32_t uiExfd;
SolderSplashLabs 23:fed7f64dd520 71 } tBsdSelectRecvParams;
SolderSplashLabs 23:fed7f64dd520 72
SolderSplashLabs 23:fed7f64dd520 73 typedef struct _bsd_gethostbyname_return_t
SolderSplashLabs 23:fed7f64dd520 74 {
SolderSplashLabs 23:fed7f64dd520 75 int32_t retVal;
SolderSplashLabs 23:fed7f64dd520 76 int32_t outputAddress;
SolderSplashLabs 23:fed7f64dd520 77 } tBsdGethostbynameParams;
SolderSplashLabs 23:fed7f64dd520 78
SolderSplashLabs 23:fed7f64dd520 79 #define FLOW_CONTROL_EVENT_HANDLE_OFFSET (0)
SolderSplashLabs 23:fed7f64dd520 80 #define FLOW_CONTROL_EVENT_BLOCK_MODE_OFFSET (1)
SolderSplashLabs 23:fed7f64dd520 81 #define FLOW_CONTROL_EVENT_FREE_BUFFS_OFFSET (2)
SolderSplashLabs 23:fed7f64dd520 82 #define FLOW_CONTROL_EVENT_SIZE (4)
SolderSplashLabs 23:fed7f64dd520 83
SolderSplashLabs 23:fed7f64dd520 84 #define BSD_RSP_PARAMS_SOCKET_OFFSET (0)
SolderSplashLabs 23:fed7f64dd520 85 #define BSD_RSP_PARAMS_STATUS_OFFSET (4)
SolderSplashLabs 23:fed7f64dd520 86
SolderSplashLabs 23:fed7f64dd520 87 #define GET_HOST_BY_NAME_RETVAL_OFFSET (0)
SolderSplashLabs 23:fed7f64dd520 88 #define GET_HOST_BY_NAME_ADDR_OFFSET (4)
SolderSplashLabs 23:fed7f64dd520 89
SolderSplashLabs 23:fed7f64dd520 90 #define ACCEPT_SD_OFFSET (0)
SolderSplashLabs 23:fed7f64dd520 91 #define ACCEPT_RETURN_STATUS_OFFSET (4)
SolderSplashLabs 23:fed7f64dd520 92 #define ACCEPT_ADDRESS__OFFSET (8)
SolderSplashLabs 23:fed7f64dd520 93
SolderSplashLabs 23:fed7f64dd520 94 #define SL_RECEIVE_SD_OFFSET (0)
SolderSplashLabs 23:fed7f64dd520 95 #define SL_RECEIVE_NUM_BYTES_OFFSET (4)
SolderSplashLabs 23:fed7f64dd520 96 #define SL_RECEIVE__FLAGS__OFFSET (8)
SolderSplashLabs 23:fed7f64dd520 97
SolderSplashLabs 23:fed7f64dd520 98
SolderSplashLabs 23:fed7f64dd520 99 #define SELECT_STATUS_OFFSET (0)
SolderSplashLabs 23:fed7f64dd520 100 #define SELECT_READFD_OFFSET (4)
SolderSplashLabs 23:fed7f64dd520 101 #define SELECT_WRITEFD_OFFSET (8)
SolderSplashLabs 23:fed7f64dd520 102 #define SELECT_EXFD_OFFSET (12)
SolderSplashLabs 23:fed7f64dd520 103
SolderSplashLabs 23:fed7f64dd520 104
SolderSplashLabs 23:fed7f64dd520 105 #define NETAPP_IPCONFIG_IP_OFFSET (0)
SolderSplashLabs 23:fed7f64dd520 106 #define NETAPP_IPCONFIG_SUBNET_OFFSET (4)
SolderSplashLabs 23:fed7f64dd520 107 #define NETAPP_IPCONFIG_GW_OFFSET (8)
SolderSplashLabs 23:fed7f64dd520 108 #define NETAPP_IPCONFIG_DHCP_OFFSET (12)
SolderSplashLabs 23:fed7f64dd520 109 #define NETAPP_IPCONFIG_DNS_OFFSET (16)
SolderSplashLabs 23:fed7f64dd520 110 #define NETAPP_IPCONFIG_MAC_OFFSET (20)
SolderSplashLabs 23:fed7f64dd520 111 #define NETAPP_IPCONFIG_SSID_OFFSET (26)
SolderSplashLabs 23:fed7f64dd520 112
SolderSplashLabs 23:fed7f64dd520 113 #define NETAPP_IPCONFIG_IP_LENGTH (4)
SolderSplashLabs 23:fed7f64dd520 114 #define NETAPP_IPCONFIG_MAC_LENGTH (6)
SolderSplashLabs 23:fed7f64dd520 115 #define NETAPP_IPCONFIG_SSID_LENGTH (32)
SolderSplashLabs 23:fed7f64dd520 116
SolderSplashLabs 23:fed7f64dd520 117
SolderSplashLabs 23:fed7f64dd520 118 #define NETAPP_PING_PACKETS_SENT_OFFSET (0)
SolderSplashLabs 23:fed7f64dd520 119 #define NETAPP_PING_PACKETS_RCVD_OFFSET (4)
SolderSplashLabs 23:fed7f64dd520 120 #define NETAPP_PING_MIN_RTT_OFFSET (8)
SolderSplashLabs 23:fed7f64dd520 121 #define NETAPP_PING_MAX_RTT_OFFSET (12)
SolderSplashLabs 23:fed7f64dd520 122 #define NETAPP_PING_AVG_RTT_OFFSET (16)
SolderSplashLabs 23:fed7f64dd520 123
SolderSplashLabs 23:fed7f64dd520 124 #define GET_SCAN_RESULTS_TABlE_COUNT_OFFSET (0)
SolderSplashLabs 23:fed7f64dd520 125 #define GET_SCAN_RESULTS_SCANRESULT_STATUS_OFFSET (4)
SolderSplashLabs 23:fed7f64dd520 126 #define GET_SCAN_RESULTS_ISVALID_TO_SSIDLEN_OFFSET (8)
SolderSplashLabs 23:fed7f64dd520 127 #define GET_SCAN_RESULTS_FRAME_TIME_OFFSET (10)
SolderSplashLabs 23:fed7f64dd520 128 #define GET_SCAN_RESULTS_SSID_MAC_LENGTH (38)
SolderSplashLabs 23:fed7f64dd520 129
SolderSplashLabs 23:fed7f64dd520 130 #define M_BSD_RESP_PARAMS_OFFSET(hci_event_hdr)((uint8_t *)(hci_event_hdr) + HCI_EVENT_HEADER_SIZE)
SolderSplashLabs 23:fed7f64dd520 131
SolderSplashLabs 23:fed7f64dd520 132 #define SOCKET_STATUS_ACTIVE 0
SolderSplashLabs 23:fed7f64dd520 133 #define SOCKET_STATUS_INACTIVE 1
SolderSplashLabs 23:fed7f64dd520 134 /* Init socket_active_status = 'all ones': init all sockets with SOCKET_STATUS_INACTIVE.
SolderSplashLabs 23:fed7f64dd520 135 Will be changed by 'set_socket_active_status' upon 'connect' and 'accept' calls */
SolderSplashLabs 23:fed7f64dd520 136 #define SOCKET_STATUS_INIT_VAL 0xFFFF
SolderSplashLabs 23:fed7f64dd520 137 #define M_IS_VALID_SD(sd) ((0 <= (sd)) && ((sd) <= 7))
SolderSplashLabs 23:fed7f64dd520 138 #define M_IS_VALID_STATUS(status) (((status) == SOCKET_STATUS_ACTIVE)||((status) == SOCKET_STATUS_INACTIVE))
SolderSplashLabs 23:fed7f64dd520 139
SolderSplashLabs 23:fed7f64dd520 140 #define BSD_RECV_FROM_FROMLEN_OFFSET (4)
SolderSplashLabs 23:fed7f64dd520 141 #define BSD_RECV_FROM_FROM_OFFSET (16)
SolderSplashLabs 23:fed7f64dd520 142
SolderSplashLabs 23:fed7f64dd520 143 #endif