42#define CHIP_NAME "EM Microelectronic EM4095"
43#define MANUFACTURER_NAME "EM Microelectronic"
44#define SUPPLY_VOLTAGE_MIN 4.1f
45#define SUPPLY_VOLTAGE_MAX 5.5f
46#define MAX_CURRENT 300.0f
47#define TEMPERATURE_MIN -40.0f
48#define TEMPERATURE_MAX 110.0f
49#define DRIVER_VERSION 1000
62 for (i = 0; i < len; i++)
66 diff = (int64_t)((int64_t)handle->
decode[i + 1].
t.
s -
67 (int64_t)handle->
decode[i].
t.
s) * 1000000 +
68 (int64_t)((int64_t)handle->
decode[i + 1].
t.
us -
95 handle->
debug_print(
"em4095: demod gpio read failed.\n");
182 if (a_read_sync(handle) != 0)
189 handle->
debug_print(
"em4095: timestamp read failed.\n");
196 handle->
debug_print(
"em4095: demod gpio read failed.\n");
200 diff = (int64_t)((int64_t)t.
s -
203 if (diff - (int64_t)200000L >= 0)
222 handle->
debug_print(
"em4095: shd gpio write failed.\n");
226 a_em4095_time_diff(handle);
237 if (a_write_sync(handle) != 0)
244 handle->
debug_print(
"em4095: timestamp read failed.\n");
257 handle->
debug_print(
"em4095: mod gpio write failed.\n");
268 handle->
debug_print(
"em4095: shd gpio write failed.\n");
272 a_em4095_time_diff(handle);
312 handle->
debug_print(
"em4095: demod_gpio_init is null.\n");
318 handle->
debug_print(
"em4095: demod_gpio_deinit is null.\n");
324 handle->
debug_print(
"em4095: demod_gpio_read is null.\n");
330 handle->
debug_print(
"em4095: mod_gpio_init is null.\n");
336 handle->
debug_print(
"em4095: mod_gpio_deinit is null.\n");
342 handle->
debug_print(
"em4095: mod_gpio_write is null.\n");
348 handle->
debug_print(
"em4095: shd_gpio_init is null.\n");
354 handle->
debug_print(
"em4095: shd_gpio_deinit is null.\n");
360 handle->
debug_print(
"em4095: shd_gpio_write is null.\n");
366 handle->
debug_print(
"em4095: timestamp_read is null.\n");
372 handle->
debug_print(
"em4095: delay_ms is null.\n");
378 handle->
debug_print(
"em4095: receive_callback is null.\n");
386 handle->
debug_print(
"em4095: demod gpio init failed.\n");
393 handle->
debug_print(
"em4095: mod gpio init failed.\n");
401 handle->
debug_print(
"em4095: shd gpio init failed.\n");
410 handle->
debug_print(
"em4095: shd gpio write failed.\n");
420 handle->
debug_print(
"em4095: timestamp read failed.\n");
467 handle->
debug_print(
"em4095: shd gpio write failed.\n");
474 handle->
debug_print(
"em4095: demod gpio deinit failed.\n");
481 handle->
debug_print(
"em4095: mod gpio deinit failed.\n");
488 handle->
debug_print(
"em4095: shd gpio deinit failed.\n");
523 handle->
debug_print(
"em4095: shd gpio write failed.\n");
557 handle->
debug_print(
"em4095: shd gpio write failed.\n");
593 handle->
div = clock_div;
619 *clock_div = handle->
div;
660 handle->
debug_print(
"em4095: timestamp read failed.\n");
667 handle->
debug_print(
"em4095: mod gpio write failed.\n");
681 handle->
debug_print(
"em4095: demod gpio read failed.\n");
728 handle->
debug_print(
"em4095: timestamp read failed.\n");
735 handle->
debug_print(
"em4095: mod gpio write failed.\n");
742 for (i = 0; i < len; i++)
#define SUPPLY_VOLTAGE_MAX
#define MANUFACTURER_NAME
#define SUPPLY_VOLTAGE_MIN
#define CHIP_NAME
chip information definition
driver em4095 header file
uint8_t em4095_init(em4095_handle_t *handle)
initialize the chip
struct em4095_handle_s em4095_handle_t
em4095 handle structure definition
struct em4095_time_s em4095_time_t
em4095 time structure definition
uint8_t em4095_get_div(em4095_handle_t *handle, uint32_t *clock_div)
get irq div
uint8_t em4095_irq_handler(em4095_handle_t *handle)
irq handler
uint8_t em4095_copy_decode_buffer(em4095_handle_t *handle, uint8_t *buf, uint16_t *len)
copy decode buffer
uint8_t em4095_write(em4095_handle_t *handle, uint8_t *buf, uint16_t len)
write data
uint8_t em4095_power_down(em4095_handle_t *handle)
power down
#define EM4095_MAX_LENGTH
em4095 max length definition
uint8_t em4095_read(em4095_handle_t *handle, uint16_t len)
read data
uint8_t em4095_set_div(em4095_handle_t *handle, uint32_t clock_div)
set irq div
uint8_t em4095_power_on(em4095_handle_t *handle)
power on
em4095_mode_t
em4095 mode enumeration definition
uint8_t em4095_deinit(em4095_handle_t *handle)
close the chip
struct em4095_info_s em4095_info_t
em4095 information structure definition
uint8_t em4095_info(em4095_info_t *info)
get chip's information
uint8_t(* shd_gpio_init)(void)
void(* delay_ms)(uint32_t ms)
uint8_t(* demod_gpio_init)(void)
void(* debug_print)(const char *const fmt,...)
uint8_t(* shd_gpio_deinit)(void)
uint8_t(* shd_gpio_write)(uint8_t data)
em4095_decode_t decode[EM4095_MAX_LENGTH]
void(* receive_callback)(em4095_mode_t mode, em4095_decode_t *buf, uint16_t len)
uint8_t(* mod_gpio_write)(uint8_t data)
uint8_t(* demod_gpio_deinit)(void)
uint8_t(* demod_gpio_read)(uint8_t *data)
uint8_t(* timestamp_read)(em4095_time_t *t)
uint8_t(* mod_gpio_deinit)(void)
uint8_t(* mod_gpio_init)(void)
float supply_voltage_max_v
char manufacturer_name[32]
float supply_voltage_min_v