From 23b47bd9551bd912acf3f296b5d66f2fa392c8f3 Mon Sep 17 00:00:00 2001 From: Bart Van Der Meerssche Date: Fri, 28 Jan 2011 21:28:43 +0100 Subject: [PATCH] [avr + fsync] check against MAX_ANALOG_SENSOR --- mote/v2/avr/ctrl.c | 2 +- mote/v2/avr/global.h | 2 ++ mote/v2/avr/main.c | 2 +- .../openwrt/package/flukso/config/flukso.uci | 1 + .../openwrt/package/flukso/luasrc/fsync.lua | 31 ++++++++++++------- 5 files changed, 24 insertions(+), 14 deletions(-) diff --git a/mote/v2/avr/ctrl.c b/mote/v2/avr/ctrl.c index 543cec6..4870dd0 100644 --- a/mote/v2/avr/ctrl.c +++ b/mote/v2/avr/ctrl.c @@ -339,7 +339,7 @@ void ctrlCmdGet(uint8_t cmd) cli(); tmp32 = sensor[i].counter; - tmp32_bis = (i < 3) ? state[i].power : state[i].timestamp; + tmp32_bis = (i < MAX_ANALOG_SENSORS) ? state[i].power : state[i].timestamp; state[i].flags &= ~(STATE_PULSE | STATE_POWER); sei(); diff --git a/mote/v2/avr/global.h b/mote/v2/avr/global.h index bef7dc6..bbbc96c 100644 --- a/mote/v2/avr/global.h +++ b/mote/v2/avr/global.h @@ -42,6 +42,8 @@ #define DISABLE_PORT 0xff #define MAX_SENSORS 6 +#define MAX_ANALOG_SENSORS 3 + #define ENABLE_ALL_SENSORS ((1 << MAX_SENSORS) - 1) #define DISABLE_ALL_SENSORS 0x00 diff --git a/mote/v2/avr/main.c b/mote/v2/avr/main.c index b35fd4a..05bf290 100644 --- a/mote/v2/avr/main.c +++ b/mote/v2/avr/main.c @@ -394,7 +394,7 @@ int main(void) spi_status &= ~SPI_NEW_CTRL_MSG; } - for (i = 0; i < MAX_SENSORS; i++) { + for (i = 0; i < MAX_ANALOG_SENSORS; i++) { if (state[i].flags & STATE_POWER_CALC) { calculate_power(&state[i]); state[i].flags &= ~STATE_POWER_CALC; diff --git a/mote/v2/openwrt/package/flukso/config/flukso.uci b/mote/v2/openwrt/package/flukso/config/flukso.uci index 2b1aba3..4093b62 100644 --- a/mote/v2/openwrt/package/flukso/config/flukso.uci +++ b/mote/v2/openwrt/package/flukso/config/flukso.uci @@ -4,6 +4,7 @@ config settings main option sw_major 1 option sw_minor 0 option max_sensors 6 + option max_analog_sensors 3 option reset_counters 0 ### sensor config options diff --git a/mote/v2/openwrt/package/flukso/luasrc/fsync.lua b/mote/v2/openwrt/package/flukso/luasrc/fsync.lua index 910e35e..2714b18 100755 --- a/mote/v2/openwrt/package/flukso/luasrc/fsync.lua +++ b/mote/v2/openwrt/package/flukso/luasrc/fsync.lua @@ -101,15 +101,16 @@ local flukso = uci:get_all('flukso') local HW_CHECK_OVERRIDE = (arg[1] == '-f') -local MAX_SENSORS = tonumber(flukso.main.max_sensors) -local METERCONST_FACTOR = 0.449 +local MAX_SENSORS = tonumber(flukso.main.max_sensors) +local MAX_ANALOG_SENSORS = tonumber(flukso.main.max_analog_sensors) +local METERCONST_FACTOR = 0.449 -local GET_HW_VERSION = 'gh' -local GET_HW_VERSION_R = '^gh%s+(%d+)%s+(%d+)$' -local SET_ENABLE = 'se %d %d' -local SET_PHY_TO_LOG = 'sp' -- with [1..MAX_SENSORS] arguments -local SET_METERCONST = 'sm %d %d' -local SET_COUNTER = 'sc %d %d' +local GET_HW_VERSION = 'gh' +local GET_HW_VERSION_R = '^gh%s+(%d+)%s+(%d+)$' +local SET_ENABLE = 'se %d %d' +local SET_PHY_TO_LOG = 'sp' -- with [1..MAX_SENSORS] arguments +local SET_METERCONST = 'sm %d %d' +local SET_COUNTER = 'sc %d %d' -- check hardware version local hw_major, hw_minor = send(ctrl, GET_HW_VERSION):match(GET_HW_VERSION_R) @@ -145,14 +146,20 @@ local phy_to_log = {} for i = 1, MAX_SENSORS do if flukso[tostring(i)] ~= nil then + if flukso[tostring(i)]['type'] == 'analog' and i > MAX_ANALOG_SENSORS then + print(string.format('Error. Analog sensor %s should be less than or equal to max_analog_sensors (%s)', i, MAX_ANALOG_SENSORS)) + os.exit(4) + end + local ports = flukso[tostring(i)].port or {} for j = 1, #ports do - if tonumber(ports[j]) <= MAX_SENSORS then - phy_to_log[toc(tonumber(ports[j]))] = toc(i) - else + if tonumber(ports[j]) > MAX_SENSORS then print(string.format('Error. Port numbering in sensor %s should be less than or equal to max_sensors (%s)', i, MAX_SENSORS)) - os.exit(4) + os.exit(5) + + else + phy_to_log[toc(tonumber(ports[j]))] = toc(i) end end end