From c58590d525d218e66c8b18cfaf72e7e87bede27e Mon Sep 17 00:00:00 2001 From: Mike Fiore Date: Thu, 24 Apr 2014 12:44:58 -0500 Subject: mts-io: move DEVICE_CAPA* macros and other useful definitions to mts_eeprom.h --- io-module/mts_eeprom.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'io-module/mts_eeprom.h') diff --git a/io-module/mts_eeprom.h b/io-module/mts_eeprom.h index 56b2871..6295fc4 100644 --- a/io-module/mts_eeprom.h +++ b/io-module/mts_eeprom.h @@ -1,6 +1,8 @@ #ifndef __MTS_EEPROM_H #define __MTS_EEPROM_H +#include + /* on-board EEPROM */ struct mts_id_eeprom_layout { char vendor_id[32]; @@ -25,4 +27,29 @@ struct mts_dc_eeprom_layout { uint8_t reserved[378]; }; +#define DEVICE_CAPA_INDEX(c) (((c) & 0xFF) >> 3) +#define DEVICE_CAPA_MASK(c) BIT((c) & 0x07) + +#define DEVICE_CAPA(capa_buf, c) ((capa_buf)[DEVICE_CAPA_INDEX(c)] & DEVICE_CAPA_MASK(c)) + +#define DEVICE_CAPA_SET(capa_buf, c) \ +do { \ + (capa_buf)[DEVICE_CAPA_INDEX(c)] |= DEVICE_CAPA_MASK(c); \ +}while (0) + +#define DEVICE_CAPA_CLEAR(capa_buf, c) \ +do { \ + (capa_buf)[DEVICE_CAPA_INDEX(c)] &= ~DEVICE_CAPA_MASK(c); \ +} while (0) + +#define DEVICE_CAPA_VALUE(index, bit) ((((index) & 0x1F) << 3) | ((bit) & 0x07)) + +#define CAPA_GPS DEVICE_CAPA_VALUE(0, 7) +#define CAPA_DIN DEVICE_CAPA_VALUE(0, 6) +#define CAPA_DOUT DEVICE_CAPA_VALUE(0, 5) +#define CAPA_ADC DEVICE_CAPA_VALUE(0, 4) + +#define CAPA_BLUETOOTH DEVICE_CAPA_VALUE(1, 7) +#define CAPA_WIFI DEVICE_CAPA_VALUE(1, 6) + #endif -- cgit v1.2.3