Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

Committer:
davidjhoward
Date:
Mon Oct 24 21:08:15 2016 +0000
Revision:
259:341f04be325e
Parent:
249:68ed571e0002
Parent:
258:150f5a76162d
Commit updated BLE module and add new messages

Who changed what in which revision?

UserRevisionLine numberNew contents of line
davidjhoward 258:150f5a76162d 1 /**
davidjhoward 258:150f5a76162d 2 ******************************************************************************
davidjhoward 258:150f5a76162d 3 * @file ble_uart.cpp
davidjhoward 258:150f5a76162d 4 * @author Happiesstminds Firmware Team
davidjhoward 258:150f5a76162d 5 * @version v1.0
davidjhoward 258:150f5a76162d 6 * @date 4-Oct-2016
davidjhoward 258:150f5a76162d 7 * @brief
davidjhoward 258:150f5a76162d 8 *
davidjhoward 258:150f5a76162d 9 ******************************************************************************
davidjhoward 258:150f5a76162d 10 * @attention
davidjhoward 258:150f5a76162d 11 *
davidjhoward 258:150f5a76162d 12 *
davidjhoward 258:150f5a76162d 13 ******************************************************************************
davidjhoward 258:150f5a76162d 14 */
davidjhoward 258:150f5a76162d 15
davidjhoward 258:150f5a76162d 16 /******************************************************************************/
davidjhoward 258:150f5a76162d 17 /* Include Files*/
davidjhoward 258:150f5a76162d 18 /******************************************************************************/
davidjhoward 258:150f5a76162d 19 #include "mbed.h"
davidjhoward 258:150f5a76162d 20 #include "ble_msg_handler.h"
davidjhoward 258:150f5a76162d 21 /******************************************************************************/
davidjhoward 258:150f5a76162d 22 /* Local Defines */
davidjhoward 258:150f5a76162d 23 /******************************************************************************/
davidjhoward 258:150f5a76162d 24 SPI spimaster(SPI1_MOSI, SPI1_MISO, SPI1_SCK);
davidjhoward 258:150f5a76162d 25 DigitalOut cs(SPI1_CS);
davidjhoward 258:150f5a76162d 26
davidjhoward 258:150f5a76162d 27 /******************************************************************************/
davidjhoward 258:150f5a76162d 28 /* Global Functions */
davidjhoward 258:150f5a76162d 29 /******************************************************************************/
davidjhoward 258:150f5a76162d 30 /*****************************************************************************
davidjhoward 258:150f5a76162d 31 * Function: InitSpiMaster()
davidjhoward 258:150f5a76162d 32 * Description: InitSpiMaster
davidjhoward 258:150f5a76162d 33 *
davidjhoward 258:150f5a76162d 34 * @param None
davidjhoward 258:150f5a76162d 35 * @return none
davidjhoward 258:150f5a76162d 36 *****************************************************************************/
davidjhoward 258:150f5a76162d 37 uint8_t InitSpiMaster(void)
davidjhoward 258:150f5a76162d 38 {
davidjhoward 258:150f5a76162d 39 uint8_t status = SUCCESS;
davidjhoward 258:150f5a76162d 40 // Chip must be deselected
davidjhoward 258:150f5a76162d 41 cs = 1;
davidjhoward 258:150f5a76162d 42 // Setup the spi for 8 bit data, high steady state clock,
davidjhoward 258:150f5a76162d 43 // second edge capture, with a 1MHz clock rate
davidjhoward 258:150f5a76162d 44 spimaster.format(8, 0);
davidjhoward 258:150f5a76162d 45 // spimaster.frequency(1000000);
davidjhoward 258:150f5a76162d 46 spimaster.frequency(1000000);
davidjhoward 258:150f5a76162d 47 return status;
davidjhoward 258:150f5a76162d 48 }
davidjhoward 258:150f5a76162d 49
davidjhoward 258:150f5a76162d 50 /*****************************************************************************
davidjhoward 258:150f5a76162d 51 * Function: WriteSpiData()
davidjhoward 258:150f5a76162d 52 * Description: WriteSpiData
davidjhoward 258:150f5a76162d 53 *
davidjhoward 258:150f5a76162d 54 * @param pointer to buffer
davidjhoward 258:150f5a76162d 55 * @param length
davidjhoward 258:150f5a76162d 56 * @return none
davidjhoward 258:150f5a76162d 57 *****************************************************************************/
davidjhoward 258:150f5a76162d 58 uint8_t WriteSpiData(uint8_t * p_buffer, uint16_t length)
davidjhoward 258:150f5a76162d 59 {
davidjhoward 258:150f5a76162d 60 uint8_t i;
davidjhoward 258:150f5a76162d 61 uint8_t status = SUCCESS;
davidjhoward 258:150f5a76162d 62 int response[20]; //need to be removed
davidjhoward 258:150f5a76162d 63 // Select the device by seting chip select low
davidjhoward 258:150f5a76162d 64
davidjhoward 258:150f5a76162d 65 for(i=0;i<length;i++)
davidjhoward 258:150f5a76162d 66 {
davidjhoward 258:150f5a76162d 67 cs = 0;
davidjhoward 258:150f5a76162d 68 response[i] = spimaster.write(p_buffer[i]);
davidjhoward 258:150f5a76162d 69 cs = 1;
davidjhoward 258:150f5a76162d 70 wait_ms(5);
davidjhoward 258:150f5a76162d 71 }
davidjhoward 258:150f5a76162d 72
davidjhoward 258:150f5a76162d 73 return status;
davidjhoward 258:150f5a76162d 74 }
davidjhoward 258:150f5a76162d 75
davidjhoward 258:150f5a76162d 76 /*****************************************************************************
davidjhoward 258:150f5a76162d 77 * Function: ReadSpiData()
davidjhoward 258:150f5a76162d 78 * Description: ReadSpiData
davidjhoward 258:150f5a76162d 79 *
davidjhoward 258:150f5a76162d 80 * @param pointer to rx_buf
davidjhoward 258:150f5a76162d 81 * @return none
davidjhoward 258:150f5a76162d 82 *****************************************************************************/
davidjhoward 258:150f5a76162d 83 uint8_t ReadSpiData(uint8_t *rx_buf)
davidjhoward 258:150f5a76162d 84 {
davidjhoward 258:150f5a76162d 85 uint8_t msg_len;
davidjhoward 258:150f5a76162d 86 int i;
davidjhoward 258:150f5a76162d 87
davidjhoward 258:150f5a76162d 88 // Dummy read to get first garbage value
davidjhoward 258:150f5a76162d 89 cs = 0;
davidjhoward 258:150f5a76162d 90 rx_buf[0] = spimaster.write(0xFF);
davidjhoward 258:150f5a76162d 91 cs = 1;
davidjhoward 258:150f5a76162d 92 wait_ms(5);
davidjhoward 258:150f5a76162d 93
davidjhoward 258:150f5a76162d 94 cs = 0;
davidjhoward 258:150f5a76162d 95 rx_buf[1] = spimaster.write(0xFF);
davidjhoward 258:150f5a76162d 96 cs = 1;
davidjhoward 258:150f5a76162d 97 wait_ms(5);
davidjhoward 258:150f5a76162d 98
davidjhoward 258:150f5a76162d 99 cs = 0;
davidjhoward 258:150f5a76162d 100 rx_buf[2] = spimaster.write(0xFF);
davidjhoward 258:150f5a76162d 101 cs = 1;
davidjhoward 258:150f5a76162d 102 wait_ms(5);
davidjhoward 258:150f5a76162d 103
davidjhoward 258:150f5a76162d 104 cs = 0;
davidjhoward 258:150f5a76162d 105 rx_buf[3] = spimaster.write(0xFF);
davidjhoward 258:150f5a76162d 106 cs = 1;
davidjhoward 258:150f5a76162d 107 wait_ms(5);
davidjhoward 258:150f5a76162d 108
davidjhoward 258:150f5a76162d 109 msg_len = rx_buf[3];
davidjhoward 258:150f5a76162d 110
davidjhoward 258:150f5a76162d 111 for(i = 4; i < msg_len; i++)
davidjhoward 258:150f5a76162d 112 {
davidjhoward 258:150f5a76162d 113 cs = 0;
davidjhoward 258:150f5a76162d 114 rx_buf[i] = spimaster.write(0xFF);
davidjhoward 258:150f5a76162d 115 cs = 1;
davidjhoward 258:150f5a76162d 116 wait_ms(5);
davidjhoward 258:150f5a76162d 117 }
davidjhoward 258:150f5a76162d 118 return (msg_len);
davidjhoward 258:150f5a76162d 119
davidjhoward 258:150f5a76162d 120 }
davidjhoward 258:150f5a76162d 121
davidjhoward 258:150f5a76162d 122 /*****************************************************************************
davidjhoward 258:150f5a76162d 123 * Function: PollBLEEvents()
davidjhoward 258:150f5a76162d 124 * Description: Polls for BLE events
davidjhoward 258:150f5a76162d 125 * @param pointer to rx_buf
davidjhoward 258:150f5a76162d 126 * @return none
davidjhoward 258:150f5a76162d 127 *****************************************************************************/
davidjhoward 258:150f5a76162d 128
davidjhoward 258:150f5a76162d 129 uint8_t PollBLEEvents(uint8_t *rx_buf)
davidjhoward 258:150f5a76162d 130 {
davidjhoward 258:150f5a76162d 131 uint8_t i =0;
davidjhoward 258:150f5a76162d 132 uint8_t msg_len;
davidjhoward 258:150f5a76162d 133
davidjhoward 258:150f5a76162d 134 cs = 0;
davidjhoward 258:150f5a76162d 135 rx_buf[0] = spimaster.write(0xAA);
davidjhoward 258:150f5a76162d 136 cs = 1;
davidjhoward 258:150f5a76162d 137 wait_ms(5);
davidjhoward 258:150f5a76162d 138
davidjhoward 258:150f5a76162d 139 if(rx_buf[0]==0x01)
davidjhoward 258:150f5a76162d 140 {
davidjhoward 258:150f5a76162d 141 cs = 0;
davidjhoward 258:150f5a76162d 142 rx_buf[1] = spimaster.write(0xAA);
davidjhoward 258:150f5a76162d 143 cs = 1;
davidjhoward 258:150f5a76162d 144 wait_ms(5);
davidjhoward 258:150f5a76162d 145 cs = 0;
davidjhoward 258:150f5a76162d 146 rx_buf[2] = spimaster.write(0xAA);
davidjhoward 258:150f5a76162d 147 cs = 1;
davidjhoward 258:150f5a76162d 148 wait_ms(5);
davidjhoward 258:150f5a76162d 149
davidjhoward 258:150f5a76162d 150 msg_len = rx_buf[2];
davidjhoward 258:150f5a76162d 151 for(i = 3; i < msg_len; i++)
davidjhoward 258:150f5a76162d 152 {
davidjhoward 258:150f5a76162d 153 cs = 0;
davidjhoward 258:150f5a76162d 154 rx_buf[i] = spimaster.write(0xFF);
davidjhoward 258:150f5a76162d 155 cs = 1;
davidjhoward 258:150f5a76162d 156 wait_ms(5);
davidjhoward 258:150f5a76162d 157 }
davidjhoward 258:150f5a76162d 158
davidjhoward 258:150f5a76162d 159 ProcessBleRxEvents(rx_buf,rx_buf[2]);
davidjhoward 258:150f5a76162d 160 }
davidjhoward 258:150f5a76162d 161 return rx_buf[0];
davidjhoward 258:150f5a76162d 162 }
davidjhoward 258:150f5a76162d 163 /******************************************************************************/
davidjhoward 258:150f5a76162d 164 /* END OF FILE */
davidjhoward 258:150f5a76162d 165 /******************************************************************************/