32 #ifndef TERARANGER_ONE_I2C_DEV
33 #error TERARANGER_ONE_I2C_DEV needs to be defined
35 PRINT_CONFIG_VAR(TERARANGER_ONE_I2C_DEV)
38 #ifndef TERARANGER_ONE_I2C_ADDR
39 #define TERARANGER_ONE_I2C_ADDR 0x60
43 #ifndef TERARANGER_ONE_OFFSET
44 #define TERARANGER_ONE_OFFSET 0.f
48 #ifndef USE_TERARANGER_ONE_AGL
49 #define USE_TERARANGER_ONE_AGL TRUE
54 0x00, 0x07, 0x0e, 0x09, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23,
55 0x2a, 0x2d, 0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65, 0x48, 0x4f, 0x46, 0x41,
56 0x54, 0x53, 0x5a, 0x5d, 0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5, 0xd8, 0xdf,
57 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd, 0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85,
58 0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd, 0xc7, 0xc0, 0xc9, 0xce, 0xdb, 0xdc,
59 0xd5, 0xd2, 0xff, 0xf8, 0xf1, 0xf6, 0xe3, 0xe4, 0xed, 0xea, 0xb7, 0xb0, 0xb9, 0xbe,
60 0xab, 0xac, 0xa5, 0xa2, 0x8f, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9d, 0x9a, 0x27, 0x20,
61 0x29, 0x2e, 0x3b, 0x3c, 0x35, 0x32, 0x1f, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0d, 0x0a,
62 0x57, 0x50, 0x59, 0x5e, 0x4b, 0x4c, 0x45, 0x42, 0x6f, 0x68, 0x61, 0x66, 0x73, 0x74,
63 0x7d, 0x7a, 0x89, 0x8e, 0x87, 0x80, 0x95, 0x92, 0x9b, 0x9c, 0xb1, 0xb6, 0xbf, 0xb8,
64 0xad, 0xaa, 0xa3, 0xa4, 0xf9, 0xfe, 0xf7, 0xf0, 0xe5, 0xe2, 0xeb, 0xec, 0xc1, 0xc6,
65 0xcf, 0xc8, 0xdd, 0xda, 0xd3, 0xd4, 0x69, 0x6e, 0x67, 0x60, 0x75, 0x72, 0x7b, 0x7c,
66 0x51, 0x56, 0x5f, 0x58, 0x4d, 0x4a, 0x43, 0x44, 0x19, 0x1e, 0x17, 0x10, 0x05, 0x02,
67 0x0b, 0x0c, 0x21, 0x26, 0x2f, 0x28, 0x3d, 0x3a, 0x33, 0x34, 0x4e, 0x49, 0x40, 0x47,
68 0x52, 0x55, 0x5c, 0x5b, 0x76, 0x71, 0x78, 0x7f, 0x6a, 0x6d, 0x64, 0x63, 0x3e, 0x39,
69 0x30, 0x37, 0x22, 0x25, 0x2c, 0x2b, 0x06, 0x01, 0x08, 0x0f, 0x1a, 0x1d, 0x14, 0x13,
70 0xae, 0xa9, 0xa0, 0xa7, 0xb2, 0xb5, 0xbc, 0xbb, 0x96, 0x91, 0x98, 0x9f, 0x8a, 0x8d,
71 0x84, 0x83, 0xde, 0xd9, 0xd0, 0xd7, 0xc2, 0xc5, 0xcc, 0xcb, 0xe6, 0xe1, 0xe8, 0xef,
72 0xfa, 0xfd, 0xf4, 0xf3
83 i = (crc ^ *p++) & 0xFF;
84 crc = (crc_table[i] ^ (crc << 8)) & 0xFF;
uint16_t raw
raw distance in mm
volatile uint8_t buf[I2C_BUF_LEN]
Transaction buffer With I2C_BUF_LEN number of bytes.
#define USE_TERARANGER_ONE_AGL
transaction successfully finished by I2C driver
Main include for ABI (AirBorneInterface).
void teraranger_periodic(void)
struct i2c_transaction teraranger_i2c_trans
void teraranger_downlink(void)
#define TERARANGER_ONE_I2C_ADDR
void teraranger_init(void)
transaction set to done by user level
#define AGL_TERARANGER_ONE_ID
I2C transaction structure.
enum I2CTransactionStatus status
Transaction status.
static const uint8_t crc_table[]
bool i2c_receive(struct i2c_periph *p, struct i2c_transaction *t, uint8_t s_addr, uint16_t len)
Submit a read only transaction.
Common code for AP and FBW telemetry.
void teraranger_event(void)
struct TeraRanger teraranger
#define TERARANGER_ONE_OFFSET
float dist
scaled distance in m
uint32_t get_sys_time_usec(void)
Get the time in microseconds since startup.
static uint8_t teraranger_crc8(uint8_t *p, uint8_t len)
Architecture independent I2C (Inter-Integrated Circuit Bus) API.