config AX12

Fork of configure_ax12_test_bras_module by CRAC Team

Committer:
clementlignie
Date:
Wed Feb 01 13:42:30 2017 +0000
Revision:
2:91b6646ea994
Parent:
0:c03cffe402df
config AX12

Who changed what in which revision?

UserRevisionLine numberNew contents of line
slowness 0:c03cffe402df 1 /* mbed Microcontroller Library - I2CSlave
slowness 0:c03cffe402df 2 * Copyright (c) 2007-2011 ARM Limited. All rights reserved.
slowness 0:c03cffe402df 3 */
slowness 0:c03cffe402df 4
slowness 0:c03cffe402df 5 #ifndef MBED_I2C_SLAVE_H
slowness 0:c03cffe402df 6 #define MBED_I2C_SLAVE_H
slowness 0:c03cffe402df 7
slowness 0:c03cffe402df 8 #include "device.h"
slowness 0:c03cffe402df 9
slowness 0:c03cffe402df 10 #if DEVICE_I2CSLAVE
slowness 0:c03cffe402df 11
slowness 0:c03cffe402df 12 #include "platform.h"
slowness 0:c03cffe402df 13 #include "PinNames.h"
slowness 0:c03cffe402df 14 #include "PeripheralNames.h"
slowness 0:c03cffe402df 15 #include "Base.h"
slowness 0:c03cffe402df 16
slowness 0:c03cffe402df 17 namespace mbed {
slowness 0:c03cffe402df 18
slowness 0:c03cffe402df 19 /* Class: I2CSlave
slowness 0:c03cffe402df 20 * An I2C Slave, used for communicating with an I2C Master device
slowness 0:c03cffe402df 21 *
slowness 0:c03cffe402df 22 * Example:
slowness 0:c03cffe402df 23 * > // Simple I2C responder
slowness 0:c03cffe402df 24 * > #include <mbed.h>
slowness 0:c03cffe402df 25 * >
slowness 0:c03cffe402df 26 * > I2CSlave slave(p9, p10);
slowness 0:c03cffe402df 27 * >
slowness 0:c03cffe402df 28 * > int main() {
slowness 0:c03cffe402df 29 * > char buf[10];
slowness 0:c03cffe402df 30 * > char msg[] = "Slave!";
slowness 0:c03cffe402df 31 * >
slowness 0:c03cffe402df 32 * > slave.address(0xA0);
slowness 0:c03cffe402df 33 * > while (1) {
slowness 0:c03cffe402df 34 * > int i = slave.receive();
slowness 0:c03cffe402df 35 * > switch (i) {
slowness 0:c03cffe402df 36 * > case I2CSlave::ReadAddressed:
slowness 0:c03cffe402df 37 * > slave.write(msg, strlen(msg) + 1); // Includes null char
slowness 0:c03cffe402df 38 * > break;
slowness 0:c03cffe402df 39 * > case I2CSlave::WriteGeneral:
slowness 0:c03cffe402df 40 * > slave.read(buf, 10);
slowness 0:c03cffe402df 41 * > printf("Read G: %s\n", buf);
slowness 0:c03cffe402df 42 * > break;
slowness 0:c03cffe402df 43 * > case I2CSlave::WriteAddressed:
slowness 0:c03cffe402df 44 * > slave.read(buf, 10);
slowness 0:c03cffe402df 45 * > printf("Read A: %s\n", buf);
slowness 0:c03cffe402df 46 * > break;
slowness 0:c03cffe402df 47 * > }
slowness 0:c03cffe402df 48 * > for(int i = 0; i < 10; i++) buf[i] = 0; // Clear buffer
slowness 0:c03cffe402df 49 * > }
slowness 0:c03cffe402df 50 * > }
slowness 0:c03cffe402df 51 * >
slowness 0:c03cffe402df 52 */
slowness 0:c03cffe402df 53 class I2CSlave : public Base {
slowness 0:c03cffe402df 54
slowness 0:c03cffe402df 55 public:
slowness 0:c03cffe402df 56
slowness 0:c03cffe402df 57 enum RxStatus {
slowness 0:c03cffe402df 58 NoData = 0
slowness 0:c03cffe402df 59 , ReadAddressed = 1
slowness 0:c03cffe402df 60 , WriteGeneral = 2
slowness 0:c03cffe402df 61 , WriteAddressed = 3
slowness 0:c03cffe402df 62 };
slowness 0:c03cffe402df 63
slowness 0:c03cffe402df 64 /* Constructor: I2CSlave
slowness 0:c03cffe402df 65 * Create an I2C Slave interface, connected to the specified pins.
slowness 0:c03cffe402df 66 *
slowness 0:c03cffe402df 67 * Variables:
slowness 0:c03cffe402df 68 * sda - I2C data line pin
slowness 0:c03cffe402df 69 * scl - I2C clock line pin
slowness 0:c03cffe402df 70 */
slowness 0:c03cffe402df 71 I2CSlave(PinName sda, PinName scl, const char *name = NULL);
slowness 0:c03cffe402df 72
slowness 0:c03cffe402df 73 /* Function: frequency
slowness 0:c03cffe402df 74 * Set the frequency of the I2C interface
slowness 0:c03cffe402df 75 *
slowness 0:c03cffe402df 76 * Variables:
slowness 0:c03cffe402df 77 * hz - The bus frequency in hertz
slowness 0:c03cffe402df 78 */
slowness 0:c03cffe402df 79 void frequency(int hz);
slowness 0:c03cffe402df 80
slowness 0:c03cffe402df 81 /* Function: receive
slowness 0:c03cffe402df 82 * Checks to see if this I2C Slave has been addressed.
slowness 0:c03cffe402df 83 *
slowness 0:c03cffe402df 84 * Variables:
slowness 0:c03cffe402df 85 * returns - a status indicating if the device has been addressed, and how
slowness 0:c03cffe402df 86 * > NoData - the slave has not been addressed
slowness 0:c03cffe402df 87 * > ReadAddressed - the master has requested a read from this slave
slowness 0:c03cffe402df 88 * > WriteAddressed - the master is writing to this slave
slowness 0:c03cffe402df 89 * > WriteGeneral - the master is writing to all slave
slowness 0:c03cffe402df 90 */
slowness 0:c03cffe402df 91 int receive(void);
slowness 0:c03cffe402df 92
slowness 0:c03cffe402df 93 /* Function: read
slowness 0:c03cffe402df 94 * Read from an I2C master.
slowness 0:c03cffe402df 95 *
slowness 0:c03cffe402df 96 * Variables:
slowness 0:c03cffe402df 97 * data - pointer to the byte array to read data in to
slowness 0:c03cffe402df 98 * length - maximum number of bytes to read
slowness 0:c03cffe402df 99 * returns - 0 on success, non-0 otherwise
slowness 0:c03cffe402df 100 */
slowness 0:c03cffe402df 101 int read(char *data, int length);
slowness 0:c03cffe402df 102
slowness 0:c03cffe402df 103 /* Function: read
slowness 0:c03cffe402df 104 * Read a single byte from an I2C master.
slowness 0:c03cffe402df 105 *
slowness 0:c03cffe402df 106 * Variables:
slowness 0:c03cffe402df 107 * returns - the byte read
slowness 0:c03cffe402df 108 */
slowness 0:c03cffe402df 109 int read(void);
slowness 0:c03cffe402df 110
slowness 0:c03cffe402df 111 /* Function: write
slowness 0:c03cffe402df 112 * Write to an I2C master.
slowness 0:c03cffe402df 113 *
slowness 0:c03cffe402df 114 * Variables:
slowness 0:c03cffe402df 115 * data - pointer to the byte array to be transmitted
slowness 0:c03cffe402df 116 * length - the number of bytes to transmite
slowness 0:c03cffe402df 117 * returns - a 0 on success, non-0 otherwise
slowness 0:c03cffe402df 118 */
slowness 0:c03cffe402df 119 int write(const char *data, int length);
slowness 0:c03cffe402df 120
slowness 0:c03cffe402df 121 /* Function: write
slowness 0:c03cffe402df 122 * Write a single byte to an I2C master.
slowness 0:c03cffe402df 123 *
slowness 0:c03cffe402df 124 * Variables
slowness 0:c03cffe402df 125 * data - the byte to write
slowness 0:c03cffe402df 126 * returns - a '1' if an ACK was received, a '0' otherwise
slowness 0:c03cffe402df 127 */
slowness 0:c03cffe402df 128 int write(int data);
slowness 0:c03cffe402df 129
slowness 0:c03cffe402df 130 /* Function: address
slowness 0:c03cffe402df 131 * Sets the I2C slave address.
slowness 0:c03cffe402df 132 *
slowness 0:c03cffe402df 133 * Variables
slowness 0:c03cffe402df 134 * address - the address to set for the slave (ignoring the least
slowness 0:c03cffe402df 135 * signifcant bit). If set to 0, the slave will only respond to the
slowness 0:c03cffe402df 136 * general call address.
slowness 0:c03cffe402df 137 */
slowness 0:c03cffe402df 138 void address(int address);
slowness 0:c03cffe402df 139
slowness 0:c03cffe402df 140 /* Function: stop
slowness 0:c03cffe402df 141 * Reset the I2C slave back into the known ready receiving state.
slowness 0:c03cffe402df 142 */
slowness 0:c03cffe402df 143 void stop(void);
slowness 0:c03cffe402df 144
slowness 0:c03cffe402df 145 protected:
slowness 0:c03cffe402df 146
slowness 0:c03cffe402df 147 I2CName _i2c;
slowness 0:c03cffe402df 148 };
slowness 0:c03cffe402df 149
slowness 0:c03cffe402df 150 } // namespace mbed
slowness 0:c03cffe402df 151
slowness 0:c03cffe402df 152 #endif
slowness 0:c03cffe402df 153
slowness 0:c03cffe402df 154 #endif
slowness 0:c03cffe402df 155