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
Child:
33:9e23b24fb4f3
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 #include "cc3000.h"
SolderSplashLabs 23:fed7f64dd520 42 #include "cc3000_common.h"
SolderSplashLabs 23:fed7f64dd520 43
SolderSplashLabs 23:fed7f64dd520 44 namespace mbed_cc3000 {
SolderSplashLabs 23:fed7f64dd520 45
SolderSplashLabs 23:fed7f64dd520 46 cc3000_simple_link::cc3000_simple_link() {
SolderSplashLabs 23:fed7f64dd520 47 _rx_buffer[CC3000_RX_BUFFER_SIZE - 1] = CC3000_BUFFER_MAGIC_NUMBER;
SolderSplashLabs 23:fed7f64dd520 48 _tx_buffer[CC3000_TX_BUFFER_SIZE - 1] = CC3000_BUFFER_MAGIC_NUMBER;
SolderSplashLabs 23:fed7f64dd520 49 }
SolderSplashLabs 23:fed7f64dd520 50
SolderSplashLabs 23:fed7f64dd520 51 cc3000_simple_link::~cc3000_simple_link() {
SolderSplashLabs 23:fed7f64dd520 52 }
SolderSplashLabs 23:fed7f64dd520 53
SolderSplashLabs 23:fed7f64dd520 54 uint8_t cc3000_simple_link::get_data_received_flag() {
SolderSplashLabs 23:fed7f64dd520 55 return _data_received_flag;
SolderSplashLabs 23:fed7f64dd520 56 }
SolderSplashLabs 23:fed7f64dd520 57
SolderSplashLabs 23:fed7f64dd520 58 void *cc3000_simple_link::get_func_pointer(FunctionNumber function){
SolderSplashLabs 23:fed7f64dd520 59 void *result;
SolderSplashLabs 23:fed7f64dd520 60 /* casting to void *, will be casted back once used */
SolderSplashLabs 23:fed7f64dd520 61 switch(function) {
SolderSplashLabs 23:fed7f64dd520 62 case FW_PATCHES:
SolderSplashLabs 23:fed7f64dd520 63 result = (void *)_fFWPatches;
SolderSplashLabs 23:fed7f64dd520 64 break;
SolderSplashLabs 23:fed7f64dd520 65 case DRIVER_PATCHES:
SolderSplashLabs 23:fed7f64dd520 66 result = (void *)_fDriverPatches;
SolderSplashLabs 23:fed7f64dd520 67 break;
SolderSplashLabs 23:fed7f64dd520 68 case BOOTLOADER_PATCHES:
SolderSplashLabs 23:fed7f64dd520 69 result = (void *)_fBootLoaderPatches;
SolderSplashLabs 23:fed7f64dd520 70 break;
SolderSplashLabs 23:fed7f64dd520 71 // case WLAN_CB:
SolderSplashLabs 23:fed7f64dd520 72 // result = (void *)_fWlanCB;
SolderSplashLabs 23:fed7f64dd520 73 // break;
SolderSplashLabs 23:fed7f64dd520 74 default:
SolderSplashLabs 23:fed7f64dd520 75 result = 0;
SolderSplashLabs 23:fed7f64dd520 76 }
SolderSplashLabs 23:fed7f64dd520 77 return result;
SolderSplashLabs 23:fed7f64dd520 78 }
SolderSplashLabs 23:fed7f64dd520 79
SolderSplashLabs 23:fed7f64dd520 80 uint8_t *cc3000_simple_link::get_transmit_buffer() {
SolderSplashLabs 23:fed7f64dd520 81 return _tx_buffer;
SolderSplashLabs 23:fed7f64dd520 82 }
SolderSplashLabs 23:fed7f64dd520 83
SolderSplashLabs 23:fed7f64dd520 84 uint8_t *cc3000_simple_link::get_received_buffer() {
SolderSplashLabs 23:fed7f64dd520 85 return _rx_buffer;
SolderSplashLabs 23:fed7f64dd520 86 }
SolderSplashLabs 23:fed7f64dd520 87
SolderSplashLabs 23:fed7f64dd520 88 void cc3000_simple_link::set_received_buffer(uint8_t value) {
SolderSplashLabs 23:fed7f64dd520 89 *_rx_buffer = value;
SolderSplashLabs 23:fed7f64dd520 90 }
SolderSplashLabs 23:fed7f64dd520 91
SolderSplashLabs 23:fed7f64dd520 92 void cc3000_simple_link::set_transmit_buffer(uint8_t value) {
SolderSplashLabs 23:fed7f64dd520 93 *_tx_buffer = value;
SolderSplashLabs 23:fed7f64dd520 94 }
SolderSplashLabs 23:fed7f64dd520 95
SolderSplashLabs 23:fed7f64dd520 96 void cc3000_simple_link::set_op_code(uint16_t code) {
SolderSplashLabs 23:fed7f64dd520 97 _rx_event_opcode = code;
SolderSplashLabs 23:fed7f64dd520 98 }
SolderSplashLabs 23:fed7f64dd520 99
SolderSplashLabs 23:fed7f64dd520 100 void cc3000_simple_link::set_pending_data(uint16_t value) {
SolderSplashLabs 23:fed7f64dd520 101 _rx_data_pending = value;
SolderSplashLabs 23:fed7f64dd520 102 }
SolderSplashLabs 23:fed7f64dd520 103
SolderSplashLabs 23:fed7f64dd520 104 uint16_t cc3000_simple_link::get_pending_data() {
SolderSplashLabs 23:fed7f64dd520 105 return _rx_data_pending;
SolderSplashLabs 23:fed7f64dd520 106 }
SolderSplashLabs 23:fed7f64dd520 107
SolderSplashLabs 23:fed7f64dd520 108 void cc3000_simple_link::set_number_free_buffers(uint16_t value) {
SolderSplashLabs 23:fed7f64dd520 109 _free_buffers = value;
SolderSplashLabs 23:fed7f64dd520 110 }
SolderSplashLabs 23:fed7f64dd520 111
SolderSplashLabs 23:fed7f64dd520 112 void cc3000_simple_link::set_number_of_released_packets(uint16_t value) {
SolderSplashLabs 23:fed7f64dd520 113 _released_packets = value;
SolderSplashLabs 23:fed7f64dd520 114 }
SolderSplashLabs 23:fed7f64dd520 115
SolderSplashLabs 23:fed7f64dd520 116
SolderSplashLabs 23:fed7f64dd520 117 void cc3000_simple_link::set_tx_complete_signal(bool value) {
SolderSplashLabs 23:fed7f64dd520 118 _tx_complete_signal = value;
SolderSplashLabs 23:fed7f64dd520 119 }
SolderSplashLabs 23:fed7f64dd520 120
SolderSplashLabs 23:fed7f64dd520 121 bool cc3000_simple_link::get_tx_complete_signal() {
SolderSplashLabs 23:fed7f64dd520 122 return _tx_complete_signal;
SolderSplashLabs 23:fed7f64dd520 123 }
SolderSplashLabs 23:fed7f64dd520 124
SolderSplashLabs 23:fed7f64dd520 125 void cc3000_simple_link::set_data_received_flag(uint8_t value) {
SolderSplashLabs 23:fed7f64dd520 126 _data_received_flag = value;
SolderSplashLabs 23:fed7f64dd520 127 }
SolderSplashLabs 23:fed7f64dd520 128
SolderSplashLabs 23:fed7f64dd520 129 uint16_t cc3000_simple_link::get_number_free_buffers() {
SolderSplashLabs 23:fed7f64dd520 130 return _free_buffers;
SolderSplashLabs 23:fed7f64dd520 131 }
SolderSplashLabs 23:fed7f64dd520 132
SolderSplashLabs 23:fed7f64dd520 133 uint16_t cc3000_simple_link::get_buffer_length() {
SolderSplashLabs 23:fed7f64dd520 134 return _buffer_length;
SolderSplashLabs 23:fed7f64dd520 135 }
SolderSplashLabs 23:fed7f64dd520 136
SolderSplashLabs 23:fed7f64dd520 137 void cc3000_simple_link::set_buffer_length(uint16_t value) {
SolderSplashLabs 23:fed7f64dd520 138 _buffer_length = value;
SolderSplashLabs 23:fed7f64dd520 139 }
SolderSplashLabs 23:fed7f64dd520 140
SolderSplashLabs 23:fed7f64dd520 141 uint16_t cc3000_simple_link::get_op_code() {
SolderSplashLabs 23:fed7f64dd520 142 return _rx_event_opcode;
SolderSplashLabs 23:fed7f64dd520 143 }
SolderSplashLabs 23:fed7f64dd520 144
SolderSplashLabs 23:fed7f64dd520 145 uint16_t cc3000_simple_link::get_released_packets() {
SolderSplashLabs 23:fed7f64dd520 146 return _released_packets;
SolderSplashLabs 23:fed7f64dd520 147 }
SolderSplashLabs 23:fed7f64dd520 148
SolderSplashLabs 23:fed7f64dd520 149 uint16_t cc3000_simple_link::get_sent_packets() {
SolderSplashLabs 23:fed7f64dd520 150 return _sent_packets;
SolderSplashLabs 23:fed7f64dd520 151 }
SolderSplashLabs 23:fed7f64dd520 152
SolderSplashLabs 23:fed7f64dd520 153 void cc3000_simple_link::set_sent_packets(uint16_t value) {
SolderSplashLabs 23:fed7f64dd520 154 _sent_packets = value;
SolderSplashLabs 23:fed7f64dd520 155 }
SolderSplashLabs 23:fed7f64dd520 156
SolderSplashLabs 23:fed7f64dd520 157 void cc3000_simple_link::set_transmit_error(int32_t value){
SolderSplashLabs 23:fed7f64dd520 158 _transmit_data_error = value;
SolderSplashLabs 23:fed7f64dd520 159 }
SolderSplashLabs 23:fed7f64dd520 160
SolderSplashLabs 23:fed7f64dd520 161 int32_t cc3000_simple_link::get_transmit_error(){
SolderSplashLabs 23:fed7f64dd520 162 return _transmit_data_error;
SolderSplashLabs 23:fed7f64dd520 163 }
SolderSplashLabs 23:fed7f64dd520 164
SolderSplashLabs 23:fed7f64dd520 165 void cc3000_simple_link::set_buffer_size(uint16_t value) {
SolderSplashLabs 23:fed7f64dd520 166 _buffer_size = value;
SolderSplashLabs 23:fed7f64dd520 167 }
SolderSplashLabs 23:fed7f64dd520 168
SolderSplashLabs 23:fed7f64dd520 169 uint16_t cc3000_simple_link::get_buffer_size(void) {
SolderSplashLabs 23:fed7f64dd520 170 return _buffer_size;
SolderSplashLabs 23:fed7f64dd520 171 }
SolderSplashLabs 23:fed7f64dd520 172
SolderSplashLabs 23:fed7f64dd520 173 uint8_t *cc3000_simple_link::get_received_data(void) {
SolderSplashLabs 23:fed7f64dd520 174 return _received_data;
SolderSplashLabs 23:fed7f64dd520 175 }
SolderSplashLabs 23:fed7f64dd520 176
SolderSplashLabs 23:fed7f64dd520 177 void cc3000_simple_link::set_received_data(uint8_t *pointer) {
SolderSplashLabs 23:fed7f64dd520 178 _received_data = pointer;
SolderSplashLabs 23:fed7f64dd520 179 }
SolderSplashLabs 23:fed7f64dd520 180
SolderSplashLabs 23:fed7f64dd520 181 //void cc3000_simple_link::set_wlan_cb(tWlanCB fpointer) {
SolderSplashLabs 23:fed7f64dd520 182 // _fWlanCB = fpointer;
SolderSplashLabs 23:fed7f64dd520 183 //}
SolderSplashLabs 23:fed7f64dd520 184
SolderSplashLabs 23:fed7f64dd520 185 }