Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

Committer:
davidjhoward
Date:
Wed Oct 26 13:26:45 2016 +0000
Revision:
265:0fb72c26ae68
Add new BLE module

Who changed what in which revision?

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