/* $Id: module.c,v 1.3 2004/03/21 10:13:11 jmuelmen Exp $ */ /* This file contains the module-based routines. It's not really a very * interesting piece of code. */ #include "surf_int.h" #include "mod_tbl.h" #include "libsurf.h" #define TAPDANCE(MOD, FN, args...) { \ struct mod_tbl_ent *m = mod_tbl_find(MOD); \ if (!m) { \ surf_errno = ENOMOD; \ SURF_LOG(LOGSURF_ERROR, "Couldn't find module %s\n", \ mod); \ return -1; \ } \ return FN(mod_tbl_get_board(m), mod_tbl_get_chan(m), args); \ } #define TAPDANCE_NO_ARGS(MOD, FN, args...) { \ struct mod_tbl_ent *m = mod_tbl_find(MOD); \ if (!m) { \ surf_errno = ENOMOD; \ SURF_LOG(LOGSURF_ERROR, "Couldn't find module %s\n", \ mod); \ return -1; \ } \ return FN(mod_tbl_get_board(m), mod_tbl_get_chan(m)); \ } int surf_mod_sel_rd (const char *mod) { TAPDANCE_NO_ARGS(mod, surf_brd_sel_rd); } int surf_mod_sel_wr (const char *mod) { TAPDANCE_NO_ARGS(mod, surf_brd_sel_wr); } int surf_mod_set_anl_v (const char *mod, double v) { TAPDANCE(mod, surf_brd_set_anl_v, v); } int surf_mod_set_dig_v (const char *mod, double v) { TAPDANCE(mod, surf_brd_set_dig_v, v); } int surf_mod_ena (const char *mod, int state) { TAPDANCE(mod, surf_brd_ena, state); } int surf_mod_end (const char *mod, int state) { TAPDANCE(mod, surf_brd_end, state); } /* status getters */ int surf_mod_get_sel_rd (const char *mod) { TAPDANCE_NO_ARGS(mod, surf_brd_get_sel_rd); } int surf_mod_get_sel_wr (const char *mod) { TAPDANCE_NO_ARGS(mod, surf_brd_get_sel_wr); } int surf_mod_get_ena (const char *mod) { TAPDANCE_NO_ARGS(mod, surf_brd_get_ena); } int surf_mod_get_end (const char *mod) { TAPDANCE_NO_ARGS(mod, surf_brd_get_end); } double surf_mod_get_anl_v (const char *mod) { TAPDANCE_NO_ARGS(mod, surf_brd_get_anl_v); } double surf_mod_get_dig_v (const char *mod) { TAPDANCE_NO_ARGS(mod, surf_brd_get_dig_v); } double surf_mod_get_anl_i (const char *mod) { TAPDANCE_NO_ARGS(mod, surf_brd_get_anl_i); } double surf_mod_get_dig_i (const char *mod) { TAPDANCE_NO_ARGS(mod, surf_brd_get_dig_i); } double surf_mod_get_temp (const char *mod) { TAPDANCE_NO_ARGS(mod, surf_brd_get_temp); }