testing

Dependencies:   BLE_API mbed nRF51822

Committer:
leighton_corr
Date:
Sun Sep 17 21:51:23 2017 +0000
Revision:
0:01674c0ff0b0
test1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
leighton_corr 0:01674c0ff0b0 1
leighton_corr 0:01674c0ff0b0 2 /*
leighton_corr 0:01674c0ff0b0 3
leighton_corr 0:01674c0ff0b0 4 Copyright (c) 2014 RedBearLab, All rights reserved.
leighton_corr 0:01674c0ff0b0 5
leighton_corr 0:01674c0ff0b0 6 This library is free software; you can redistribute it and/or
leighton_corr 0:01674c0ff0b0 7 modify it under the terms of the GNU Lesser General Public
leighton_corr 0:01674c0ff0b0 8 License as published by the Free Software Foundation; either
leighton_corr 0:01674c0ff0b0 9 version 2.1 of the License, or (at your option) any later version.
leighton_corr 0:01674c0ff0b0 10
leighton_corr 0:01674c0ff0b0 11 This library is distributed in the hope that it will be useful,
leighton_corr 0:01674c0ff0b0 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
leighton_corr 0:01674c0ff0b0 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
leighton_corr 0:01674c0ff0b0 14 See the GNU Lesser General Public License for more details.
leighton_corr 0:01674c0ff0b0 15
leighton_corr 0:01674c0ff0b0 16 You should have received a copy of the GNU Lesser General Public
leighton_corr 0:01674c0ff0b0 17 License along with this library; if not, write to the Free Software
leighton_corr 0:01674c0ff0b0 18 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
leighton_corr 0:01674c0ff0b0 19
leighton_corr 0:01674c0ff0b0 20 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
leighton_corr 0:01674c0ff0b0 21 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
leighton_corr 0:01674c0ff0b0 22 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
leighton_corr 0:01674c0ff0b0 23 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
leighton_corr 0:01674c0ff0b0 24 CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
leighton_corr 0:01674c0ff0b0 25 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
leighton_corr 0:01674c0ff0b0 26 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
leighton_corr 0:01674c0ff0b0 27
leighton_corr 0:01674c0ff0b0 28 */
leighton_corr 0:01674c0ff0b0 29
leighton_corr 0:01674c0ff0b0 30 #ifndef _WIRE_H_
leighton_corr 0:01674c0ff0b0 31 #define _WIRE_H_
leighton_corr 0:01674c0ff0b0 32
leighton_corr 0:01674c0ff0b0 33 #include "mbed.h"
leighton_corr 0:01674c0ff0b0 34
leighton_corr 0:01674c0ff0b0 35 #define TWI_DELAY(x) wait_us(x);
leighton_corr 0:01674c0ff0b0 36
leighton_corr 0:01674c0ff0b0 37 #define BUFF_MAX_LENGTH 128
leighton_corr 0:01674c0ff0b0 38
leighton_corr 0:01674c0ff0b0 39 #define MAX_TIMEOUT_LOOPS (20000UL)
leighton_corr 0:01674c0ff0b0 40
leighton_corr 0:01674c0ff0b0 41 #define TWI_FREQUENCY_100K 0
leighton_corr 0:01674c0ff0b0 42 #define TWI_FREQUENCY_250K 1
leighton_corr 0:01674c0ff0b0 43 #define TWI_FREQUENCY_400K 2
leighton_corr 0:01674c0ff0b0 44
leighton_corr 0:01674c0ff0b0 45 #define TWI_SCL 28
leighton_corr 0:01674c0ff0b0 46 #define TWI_SDA 29
leighton_corr 0:01674c0ff0b0 47
leighton_corr 0:01674c0ff0b0 48
leighton_corr 0:01674c0ff0b0 49 class TwoWire
leighton_corr 0:01674c0ff0b0 50 {
leighton_corr 0:01674c0ff0b0 51 public :
leighton_corr 0:01674c0ff0b0 52 TwoWire(NRF_TWI_Type *twi_use);
leighton_corr 0:01674c0ff0b0 53 void begin();
leighton_corr 0:01674c0ff0b0 54 void begin(uint32_t scl_pin, uint32_t sda_pin, uint8_t speed);
leighton_corr 0:01674c0ff0b0 55 void beginTransmission(uint8_t);
leighton_corr 0:01674c0ff0b0 56 void beginTransmission(int);
leighton_corr 0:01674c0ff0b0 57 uint8_t endTransmission(void);
leighton_corr 0:01674c0ff0b0 58 uint8_t endTransmission(uint8_t);
leighton_corr 0:01674c0ff0b0 59 uint8_t requestFrom(uint8_t, uint8_t);
leighton_corr 0:01674c0ff0b0 60 uint8_t requestFrom(uint8_t, uint8_t, uint8_t);
leighton_corr 0:01674c0ff0b0 61 uint8_t requestFrom(int, int);
leighton_corr 0:01674c0ff0b0 62 uint8_t requestFrom(int, int, int);
leighton_corr 0:01674c0ff0b0 63 int write(uint8_t);
leighton_corr 0:01674c0ff0b0 64 int write(const uint8_t *, size_t);
leighton_corr 0:01674c0ff0b0 65 int available(void);
leighton_corr 0:01674c0ff0b0 66 int read(void);
leighton_corr 0:01674c0ff0b0 67
leighton_corr 0:01674c0ff0b0 68 private :
leighton_corr 0:01674c0ff0b0 69 uint8_t RX_Buffer[BUFF_MAX_LENGTH];
leighton_corr 0:01674c0ff0b0 70 uint8_t RX_BufferIndex;
leighton_corr 0:01674c0ff0b0 71 uint8_t RX_BufferLength;
leighton_corr 0:01674c0ff0b0 72
leighton_corr 0:01674c0ff0b0 73 uint8_t TX_Buffer[BUFF_MAX_LENGTH];
leighton_corr 0:01674c0ff0b0 74 uint8_t TX_BufferIndex;
leighton_corr 0:01674c0ff0b0 75 uint8_t TX_BufferLength;
leighton_corr 0:01674c0ff0b0 76
leighton_corr 0:01674c0ff0b0 77 NRF_TWI_Type *twi;
leighton_corr 0:01674c0ff0b0 78
leighton_corr 0:01674c0ff0b0 79 uint8_t PPI_channel;
leighton_corr 0:01674c0ff0b0 80 uint8_t Transform_Addr;
leighton_corr 0:01674c0ff0b0 81
leighton_corr 0:01674c0ff0b0 82 uint32_t SDA_Pin;
leighton_corr 0:01674c0ff0b0 83 uint32_t SCL_Pin;
leighton_corr 0:01674c0ff0b0 84
leighton_corr 0:01674c0ff0b0 85 uint32_t twi_frequency;
leighton_corr 0:01674c0ff0b0 86
leighton_corr 0:01674c0ff0b0 87 enum TwoWireStatus {
leighton_corr 0:01674c0ff0b0 88 UNINITIALIZED,
leighton_corr 0:01674c0ff0b0 89 MASTER_IDLE,
leighton_corr 0:01674c0ff0b0 90 MASTER_SEND,
leighton_corr 0:01674c0ff0b0 91 MASTER_RECV,
leighton_corr 0:01674c0ff0b0 92 SLAVE_IDLE,
leighton_corr 0:01674c0ff0b0 93 SLAVE_RECV,
leighton_corr 0:01674c0ff0b0 94 SLAVE_SEND
leighton_corr 0:01674c0ff0b0 95 };
leighton_corr 0:01674c0ff0b0 96 TwoWireStatus twi_status;
leighton_corr 0:01674c0ff0b0 97
leighton_corr 0:01674c0ff0b0 98 bool twi_master_clear_bus(void);
leighton_corr 0:01674c0ff0b0 99 bool twi_master_init(void);
leighton_corr 0:01674c0ff0b0 100 uint8_t twi_master_read(uint8_t *data, uint8_t data_length, uint8_t issue_stop_condition);
leighton_corr 0:01674c0ff0b0 101 uint8_t twi_master_write(uint8_t *data, uint8_t data_length, uint8_t issue_stop_condition);
leighton_corr 0:01674c0ff0b0 102 };
leighton_corr 0:01674c0ff0b0 103
leighton_corr 0:01674c0ff0b0 104 #endif