Fluorescent / Mbed 2 deprecated mcr20_wireless_client_sockets

Dependencies:   fsl_phy_mcr20a fsl_smac mbed-rtos mbed

Fork of mcr20_wireless_uart by Freescale

Committer:
sam_grove
Date:
Thu Mar 05 15:47:08 2015 +0000
Revision:
2:3e7685cfb2a7
Updating to techcon demo program

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sam_grove 2:3e7685cfb2a7 1 //#include "system_event.h"
sam_grove 2:3e7685cfb2a7 2 //#include <string.h>
sam_grove 2:3e7685cfb2a7 3 //#include "pl_types.h"
sam_grove 2:3e7685cfb2a7 4 //#include "pcer_low_level.h"
sam_grove 2:3e7685cfb2a7 5 //#include "pio_low_level.h"
sam_grove 2:3e7685cfb2a7 6 #include "driverDebug.h"
sam_grove 2:3e7685cfb2a7 7 //#include "uart_low_level.h"
sam_grove 2:3e7685cfb2a7 8 //#include "usart_low_level.h"
sam_grove 2:3e7685cfb2a7 9 //#include "SAMxxBoardDefinitions.h"
sam_grove 2:3e7685cfb2a7 10 //#include "arm_hal_interrupt.h"
sam_grove 2:3e7685cfb2a7 11 #include <stdio.h>
sam_grove 2:3e7685cfb2a7 12
sam_grove 2:3e7685cfb2a7 13 #define debug printf
sam_grove 2:3e7685cfb2a7 14
sam_grove 2:3e7685cfb2a7 15
sam_grove 2:3e7685cfb2a7 16 /**
sam_grove 2:3e7685cfb2a7 17 * Send string to debug port.
sam_grove 2:3e7685cfb2a7 18 *
sam_grove 2:3e7685cfb2a7 19 * \param str String pointer. Have to end by zero ('\0')
sam_grove 2:3e7685cfb2a7 20 *
sam_grove 2:3e7685cfb2a7 21 */
sam_grove 2:3e7685cfb2a7 22 #if 0
sam_grove 2:3e7685cfb2a7 23 void debug_send1(uint8_t *str)
sam_grove 2:3e7685cfb2a7 24 {
sam_grove 2:3e7685cfb2a7 25 while(*str)
sam_grove 2:3e7685cfb2a7 26 {
sam_grove 2:3e7685cfb2a7 27 if (debug_put(*str) == 0)
sam_grove 2:3e7685cfb2a7 28 {
sam_grove 2:3e7685cfb2a7 29 str++;
sam_grove 2:3e7685cfb2a7 30 }
sam_grove 2:3e7685cfb2a7 31 else return;
sam_grove 2:3e7685cfb2a7 32 }
sam_grove 2:3e7685cfb2a7 33 }
sam_grove 2:3e7685cfb2a7 34 #endif
sam_grove 2:3e7685cfb2a7 35
sam_grove 2:3e7685cfb2a7 36 /**
sam_grove 2:3e7685cfb2a7 37 * Send constant string to debug port.
sam_grove 2:3e7685cfb2a7 38 *
sam_grove 2:3e7685cfb2a7 39 * \param str Constant string pointer.
sam_grove 2:3e7685cfb2a7 40 *
sam_grove 2:3e7685cfb2a7 41 */
sam_grove 2:3e7685cfb2a7 42 #if 0
sam_grove 2:3e7685cfb2a7 43 void debug_send_const(prog_uint8_t *str)
sam_grove 2:3e7685cfb2a7 44 {
sam_grove 2:3e7685cfb2a7 45 while(*str)
sam_grove 2:3e7685cfb2a7 46 {
sam_grove 2:3e7685cfb2a7 47 //if (debug_put(*str) == 0)
sam_grove 2:3e7685cfb2a7 48 if (printf(str) == 0)
sam_grove 2:3e7685cfb2a7 49 {
sam_grove 2:3e7685cfb2a7 50 str++;
sam_grove 2:3e7685cfb2a7 51 }
sam_grove 2:3e7685cfb2a7 52 else return;
sam_grove 2:3e7685cfb2a7 53 }
sam_grove 2:3e7685cfb2a7 54 }
sam_grove 2:3e7685cfb2a7 55 #endif
sam_grove 2:3e7685cfb2a7 56
sam_grove 2:3e7685cfb2a7 57 /*
sam_grove 2:3e7685cfb2a7 58 * \brief Help round function.
sam_grove 2:3e7685cfb2a7 59 *
sam_grove 2:3e7685cfb2a7 60 * \param value Divident
sam_grove 2:3e7685cfb2a7 61 * \param divider Divisor
sam_grove 2:3e7685cfb2a7 62 *
sam_grove 2:3e7685cfb2a7 63 * \return Quotient
sam_grove 2:3e7685cfb2a7 64 */
sam_grove 2:3e7685cfb2a7 65 uint32_t debug_round(uint32_t value, uint32_t divider)
sam_grove 2:3e7685cfb2a7 66 {
sam_grove 2:3e7685cfb2a7 67 uint32_t tmp = value;
sam_grove 2:3e7685cfb2a7 68 value *= 10;
sam_grove 2:3e7685cfb2a7 69 value /= divider;
sam_grove 2:3e7685cfb2a7 70 tmp = value;
sam_grove 2:3e7685cfb2a7 71 while(tmp > 10)
sam_grove 2:3e7685cfb2a7 72 tmp -= 10;
sam_grove 2:3e7685cfb2a7 73 if(((tmp & 0x0000000f) > 4) && ((tmp & 0x0000000f) < 10))
sam_grove 2:3e7685cfb2a7 74 value += 10;
sam_grove 2:3e7685cfb2a7 75 if(tmp != 10)
sam_grove 2:3e7685cfb2a7 76 value -= tmp;
sam_grove 2:3e7685cfb2a7 77 value /= 10;
sam_grove 2:3e7685cfb2a7 78 return value;
sam_grove 2:3e7685cfb2a7 79 }
sam_grove 2:3e7685cfb2a7 80
sam_grove 2:3e7685cfb2a7 81 /**
sam_grove 2:3e7685cfb2a7 82 * Print a number to the debug port.
sam_grove 2:3e7685cfb2a7 83 *
sam_grove 2:3e7685cfb2a7 84 * \param width string maximum length
sam_grove 2:3e7685cfb2a7 85 * \param base base number (16 for hex, 10 for decimal etc.)
sam_grove 2:3e7685cfb2a7 86 * \param n number value
sam_grove 2:3e7685cfb2a7 87 *
sam_grove 2:3e7685cfb2a7 88 * \return pointer to the formatted string
sam_grove 2:3e7685cfb2a7 89 */
sam_grove 2:3e7685cfb2a7 90 void debug_integer(uint8_t width, uint8_t base, int16_t n)
sam_grove 2:3e7685cfb2a7 91 {
sam_grove 2:3e7685cfb2a7 92 uint8_t bfr[8];
sam_grove 2:3e7685cfb2a7 93 uint8_t *ptr = bfr;
sam_grove 2:3e7685cfb2a7 94 uint8_t ctr = 0;
sam_grove 2:3e7685cfb2a7 95
sam_grove 2:3e7685cfb2a7 96 if (width > 7) width = 7;
sam_grove 2:3e7685cfb2a7 97
sam_grove 2:3e7685cfb2a7 98 ptr += width;
sam_grove 2:3e7685cfb2a7 99 *ptr-- = 0;
sam_grove 2:3e7685cfb2a7 100
sam_grove 2:3e7685cfb2a7 101 if (base == 16)
sam_grove 2:3e7685cfb2a7 102 {
sam_grove 2:3e7685cfb2a7 103 do
sam_grove 2:3e7685cfb2a7 104 {
sam_grove 2:3e7685cfb2a7 105 *ptr = n & 0x0F;
sam_grove 2:3e7685cfb2a7 106 if (*ptr < 10) *ptr += '0';
sam_grove 2:3e7685cfb2a7 107 else *ptr += ('A'-10);
sam_grove 2:3e7685cfb2a7 108 ptr--;
sam_grove 2:3e7685cfb2a7 109 n >>= 4;
sam_grove 2:3e7685cfb2a7 110 ctr++;
sam_grove 2:3e7685cfb2a7 111 }while((ctr & 1) || (ctr < width));
sam_grove 2:3e7685cfb2a7 112 }
sam_grove 2:3e7685cfb2a7 113 else
sam_grove 2:3e7685cfb2a7 114 {
sam_grove 2:3e7685cfb2a7 115 uint8_t negative = 0;
sam_grove 2:3e7685cfb2a7 116 if (n < 0)
sam_grove 2:3e7685cfb2a7 117 { negative = 1;
sam_grove 2:3e7685cfb2a7 118 n = -n;
sam_grove 2:3e7685cfb2a7 119 }
sam_grove 2:3e7685cfb2a7 120 ctr++;
sam_grove 2:3e7685cfb2a7 121 do
sam_grove 2:3e7685cfb2a7 122 {
sam_grove 2:3e7685cfb2a7 123 *ptr-- = (n % 10) + '0';
sam_grove 2:3e7685cfb2a7 124 n /= 10;
sam_grove 2:3e7685cfb2a7 125 ctr++;
sam_grove 2:3e7685cfb2a7 126 }while ((ctr < width) && n);
sam_grove 2:3e7685cfb2a7 127 if (negative)
sam_grove 2:3e7685cfb2a7 128 {
sam_grove 2:3e7685cfb2a7 129 *ptr-- = '-';
sam_grove 2:3e7685cfb2a7 130 }
sam_grove 2:3e7685cfb2a7 131 else
sam_grove 2:3e7685cfb2a7 132 {
sam_grove 2:3e7685cfb2a7 133 *ptr-- = ' ';
sam_grove 2:3e7685cfb2a7 134 }
sam_grove 2:3e7685cfb2a7 135 }
sam_grove 2:3e7685cfb2a7 136 ptr++;
sam_grove 2:3e7685cfb2a7 137 //debug_send(ptr);
sam_grove 2:3e7685cfb2a7 138 debug(ptr);
sam_grove 2:3e7685cfb2a7 139 }
sam_grove 2:3e7685cfb2a7 140
sam_grove 2:3e7685cfb2a7 141 /**
sam_grove 2:3e7685cfb2a7 142 * Print data array in HEX format. Bytes are separated with colon.
sam_grove 2:3e7685cfb2a7 143 *
sam_grove 2:3e7685cfb2a7 144 * \param ptr Pointer to 8-bit data array.
sam_grove 2:3e7685cfb2a7 145 * \param len Amount of printed bytes
sam_grove 2:3e7685cfb2a7 146 *
sam_grove 2:3e7685cfb2a7 147 */
sam_grove 2:3e7685cfb2a7 148 void printf_array(uint8_t *ptr , uint16_t len)
sam_grove 2:3e7685cfb2a7 149 {
sam_grove 2:3e7685cfb2a7 150 uint16_t i;
sam_grove 2:3e7685cfb2a7 151 for(i=0; i<len; i++)
sam_grove 2:3e7685cfb2a7 152 {
sam_grove 2:3e7685cfb2a7 153 if(i)
sam_grove 2:3e7685cfb2a7 154 {
sam_grove 2:3e7685cfb2a7 155 if(i%16== 0)
sam_grove 2:3e7685cfb2a7 156 {
sam_grove 2:3e7685cfb2a7 157 debug("\r\n");
sam_grove 2:3e7685cfb2a7 158 if(len > 64)
sam_grove 2:3e7685cfb2a7 159 {
sam_grove 2:3e7685cfb2a7 160 uint8_t x =254;
sam_grove 2:3e7685cfb2a7 161 while(x--);
sam_grove 2:3e7685cfb2a7 162 }
sam_grove 2:3e7685cfb2a7 163 }
sam_grove 2:3e7685cfb2a7 164 else
sam_grove 2:3e7685cfb2a7 165 {
sam_grove 2:3e7685cfb2a7 166 debug(":");
sam_grove 2:3e7685cfb2a7 167 }
sam_grove 2:3e7685cfb2a7 168 }
sam_grove 2:3e7685cfb2a7 169 debug_hex(*ptr++);
sam_grove 2:3e7685cfb2a7 170 }
sam_grove 2:3e7685cfb2a7 171 debug("\r\n");
sam_grove 2:3e7685cfb2a7 172 }
sam_grove 2:3e7685cfb2a7 173
sam_grove 2:3e7685cfb2a7 174 /**
sam_grove 2:3e7685cfb2a7 175 * Print a IPv6 address.
sam_grove 2:3e7685cfb2a7 176 *
sam_grove 2:3e7685cfb2a7 177 * \param addr_ptr pointer to ipv6 address
sam_grove 2:3e7685cfb2a7 178 *
sam_grove 2:3e7685cfb2a7 179 */
sam_grove 2:3e7685cfb2a7 180 void printf_ipv6_address(uint8_t *addr_ptr)
sam_grove 2:3e7685cfb2a7 181 {
sam_grove 2:3e7685cfb2a7 182 if(addr_ptr)
sam_grove 2:3e7685cfb2a7 183 {
sam_grove 2:3e7685cfb2a7 184 uint8_t i, d_colon = 0;
sam_grove 2:3e7685cfb2a7 185 uint16_t current_value = 0, last_value = 0;
sam_grove 2:3e7685cfb2a7 186
sam_grove 2:3e7685cfb2a7 187 for(i=0; i< 16;i += 2)
sam_grove 2:3e7685cfb2a7 188 {
sam_grove 2:3e7685cfb2a7 189 current_value = (*addr_ptr++ << 8);
sam_grove 2:3e7685cfb2a7 190 current_value += *addr_ptr++;
sam_grove 2:3e7685cfb2a7 191
sam_grove 2:3e7685cfb2a7 192 if(i == 0)
sam_grove 2:3e7685cfb2a7 193 {
sam_grove 2:3e7685cfb2a7 194 last_value = current_value;
sam_grove 2:3e7685cfb2a7 195 debug_hex(current_value >> 8);
sam_grove 2:3e7685cfb2a7 196 debug_hex(current_value );
sam_grove 2:3e7685cfb2a7 197 debug(":");
sam_grove 2:3e7685cfb2a7 198 }
sam_grove 2:3e7685cfb2a7 199 else
sam_grove 2:3e7685cfb2a7 200 {
sam_grove 2:3e7685cfb2a7 201 if(current_value == 0)
sam_grove 2:3e7685cfb2a7 202 {
sam_grove 2:3e7685cfb2a7 203 if(i== 14)
sam_grove 2:3e7685cfb2a7 204 {
sam_grove 2:3e7685cfb2a7 205 debug(":");
sam_grove 2:3e7685cfb2a7 206 //debug_put('0');
sam_grove 2:3e7685cfb2a7 207 debug("0");
sam_grove 2:3e7685cfb2a7 208 }
sam_grove 2:3e7685cfb2a7 209 else
sam_grove 2:3e7685cfb2a7 210 {
sam_grove 2:3e7685cfb2a7 211 if(last_value == 0)
sam_grove 2:3e7685cfb2a7 212 {
sam_grove 2:3e7685cfb2a7 213 if(d_colon == 0)
sam_grove 2:3e7685cfb2a7 214 {
sam_grove 2:3e7685cfb2a7 215 d_colon=1;
sam_grove 2:3e7685cfb2a7 216 }
sam_grove 2:3e7685cfb2a7 217 }
sam_grove 2:3e7685cfb2a7 218 else
sam_grove 2:3e7685cfb2a7 219 {
sam_grove 2:3e7685cfb2a7 220 if(d_colon == 2)
sam_grove 2:3e7685cfb2a7 221 {
sam_grove 2:3e7685cfb2a7 222 //debug_put('0');
sam_grove 2:3e7685cfb2a7 223 debug("0");
sam_grove 2:3e7685cfb2a7 224 debug(":");
sam_grove 2:3e7685cfb2a7 225 }
sam_grove 2:3e7685cfb2a7 226 }
sam_grove 2:3e7685cfb2a7 227 }
sam_grove 2:3e7685cfb2a7 228 }
sam_grove 2:3e7685cfb2a7 229 else
sam_grove 2:3e7685cfb2a7 230 {
sam_grove 2:3e7685cfb2a7 231 if(last_value == 0)
sam_grove 2:3e7685cfb2a7 232 {
sam_grove 2:3e7685cfb2a7 233 if(d_colon == 1)
sam_grove 2:3e7685cfb2a7 234 {
sam_grove 2:3e7685cfb2a7 235 debug(":");
sam_grove 2:3e7685cfb2a7 236 d_colon = 2;
sam_grove 2:3e7685cfb2a7 237 }
sam_grove 2:3e7685cfb2a7 238 else
sam_grove 2:3e7685cfb2a7 239 {
sam_grove 2:3e7685cfb2a7 240 //debug_put('0');
sam_grove 2:3e7685cfb2a7 241 debug("0");
sam_grove 2:3e7685cfb2a7 242 debug(":");
sam_grove 2:3e7685cfb2a7 243 }
sam_grove 2:3e7685cfb2a7 244 }
sam_grove 2:3e7685cfb2a7 245 if(current_value > 0x00ff)
sam_grove 2:3e7685cfb2a7 246 {
sam_grove 2:3e7685cfb2a7 247 debug_hex(current_value >> 8);
sam_grove 2:3e7685cfb2a7 248 }
sam_grove 2:3e7685cfb2a7 249 debug_hex(current_value );
sam_grove 2:3e7685cfb2a7 250 if(i< 14)
sam_grove 2:3e7685cfb2a7 251 {
sam_grove 2:3e7685cfb2a7 252 debug(":");
sam_grove 2:3e7685cfb2a7 253 }
sam_grove 2:3e7685cfb2a7 254 }
sam_grove 2:3e7685cfb2a7 255 last_value = current_value;
sam_grove 2:3e7685cfb2a7 256 }
sam_grove 2:3e7685cfb2a7 257 }
sam_grove 2:3e7685cfb2a7 258 }
sam_grove 2:3e7685cfb2a7 259 else
sam_grove 2:3e7685cfb2a7 260 {
sam_grove 2:3e7685cfb2a7 261 debug("Address Print: pointer NULL");
sam_grove 2:3e7685cfb2a7 262 }
sam_grove 2:3e7685cfb2a7 263 debug("\r\n");
sam_grove 2:3e7685cfb2a7 264 }
sam_grove 2:3e7685cfb2a7 265