Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed
Fork of ICE by
BLE/src/ble_spi.cpp@265:0fb72c26ae68, 2016-10-26 (annotated)
- Committer:
- davidjhoward
- Date:
- Wed Oct 26 13:26:45 2016 +0000
- Revision:
- 265:0fb72c26ae68
Add new BLE module
Who changed what in which revision?
| User | Revision | Line number | New 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 | /******************************************************************************/ |
