From 466780f253e1837d7217b98c96b143ff4112e315 Mon Sep 17 00:00:00 2001 From: NĂ©lio Laranjeiro Date: Wed, 13 Jan 2010 23:12:46 +0100 Subject: digital/avr/modules/flash: replace callback init by a macro, closes #104 --- digital/avr/modules/flash/flash.c | 22 ++-------------------- digital/avr/modules/flash/flash.h | 13 +++++++++++++ 2 files changed, 15 insertions(+), 20 deletions(-) (limited to 'digital/avr/modules/flash') diff --git a/digital/avr/modules/flash/flash.c b/digital/avr/modules/flash/flash.c index 05151800..dd1bfd41 100644 --- a/digital/avr/modules/flash/flash.c +++ b/digital/avr/modules/flash/flash.c @@ -236,29 +236,11 @@ flash_block_size (void) void flash_init_sst (void) { - flash.erase_func = flash_sst_erase; - flash.send_cmd_func = flash_sst_send_command; - flash.read_status_func = flash_sst_read_status; - flash.is_busy_func = flash_sst_is_busy; - flash.write_func = flash_sst_write; - flash.read_func = flash_sst_read; - flash.read_array_func = flash_sst_read_array; - flash.write_array_func = flash_sst_write_array; - flash.flash_size_func = flash_sst_size; - flash.flash_block_size_func = flash_sst_block_size; + FLASH_DRV_INIT (sst); } void flash_init_at (void) { - flash.erase_func = flash_at_erase; - flash.send_cmd_func = flash_at_send_command; - flash.read_status_func = flash_at_read_status; - flash.is_busy_func = flash_at_is_busy; - flash.write_func = flash_at_write; - flash.read_func = flash_at_read; - flash.read_array_func = flash_at_read_array; - flash.write_array_func = flash_at_write_array; - flash.flash_size_func = flash_at_size; - flash.flash_block_size_func = flash_at_block_size; + FLASH_DRV_INIT (at); } diff --git a/digital/avr/modules/flash/flash.h b/digital/avr/modules/flash/flash.h index 4bbdfd2b..89c492b9 100644 --- a/digital/avr/modules/flash/flash.h +++ b/digital/avr/modules/flash/flash.h @@ -38,6 +38,19 @@ #define FLASH_CS_DISABLE \ AC_FLASH_PORT |= _BV(AC_FLASH_BIT_SS); +/** Initialise the Flash driver callbacks functions. */ +#define FLASH_DRV_INIT(drv) \ + ({flash.erase_func = flash_ ## drv ## _erase; \ + flash.send_cmd_func = flash_ ## drv ## _send_command; \ + flash.read_status_func = flash_ ## drv ## _read_status; \ + flash.is_busy_func = flash_ ## drv ## _is_busy; \ + flash.write_func = flash_ ## drv ## _write; \ + flash.read_func = flash_ ## drv ## _read; \ + flash.read_array_func = flash_ ## drv ## _read_array; \ + flash.write_array_func = flash_ ## drv ## _write_array; \ + flash.flash_size_func = flash_ ## drv ## _size; \ + flash.flash_block_size_func = flash_ ## drv ## _block_size;}) + enum flash_cmd_t { FLASH_CMD_INIT, -- cgit v1.2.3