X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=apps%2Ftests%2Fmsp430%2FAdc12%2FTestAdcSingleC.nc;h=d6ef05e8f8092c4b0fa71e63ab3e53af2fcbcd73;hb=e9bfab607e051bae6afb47b44892ce37541d1b44;hp=809e4cac444b7025497c94296190f25509cfcffa;hpb=60959169f556ee3dc648a69f5c8fb1ed9cd887c7;p=tinyos-2.x.git diff --git a/apps/tests/msp430/Adc12/TestAdcSingleC.nc b/apps/tests/msp430/Adc12/TestAdcSingleC.nc index 809e4cac..d6ef05e8 100644 --- a/apps/tests/msp430/Adc12/TestAdcSingleC.nc +++ b/apps/tests/msp430/Adc12/TestAdcSingleC.nc @@ -47,7 +47,7 @@ generic module TestAdcSingleC( uint8_t sht, // sample-hold-time uint8_t sampcon_ssel, // clock source sampcon signal uint8_t sampcon_id // clock divider sampcon -) +) @safe() { uses { interface Boot; @@ -62,11 +62,19 @@ generic module TestAdcSingleC( implementation { #define BUFFER_SIZE 100 +#define NUM_REPETITIONS 5 const msp430adc12_channel_config_t config = {inch, sref, ref2_5v, adc12ssel, adc12div, sht, sampcon_ssel, sampcon_id}; - uint8_t state; - norace uint8_t numDone; + norace uint8_t state; + norace uint8_t count = 0; uint16_t buffer[BUFFER_SIZE]; void task getData(); + enum { + SINGLE_DATA, + SINGLE_DATA_REPEAT, + MULTIPLE_DATA, + MULTIPLE_DATA_REPEAT, + }; + void task signalFailure() { @@ -83,7 +91,7 @@ implementation event void Boot.booted() { - state = 0; + state = SINGLE_DATA; post getData(); } @@ -99,36 +107,52 @@ implementation event void Resource.granted() { + count = NUM_REPETITIONS; switch(state) { - case 0: state++; - if (call SingleChannel.configureSingleRepeat(&config, 0) == SUCCESS) + case SINGLE_DATA: + if (call SingleChannel.configureSingle(&config) == SUCCESS) call SingleChannel.getData(); break; - case 1: state++; - if (call SingleChannel.configureSingle(&config) == SUCCESS) + case SINGLE_DATA_REPEAT: + if (call SingleChannel.configureSingleRepeat(&config, 10) == SUCCESS) call SingleChannel.getData(); break; - case 2: state++; - if (call SingleChannel.configureMultiple(&config, buffer, BUFFER_SIZE, 0) == SUCCESS) + case MULTIPLE_DATA: + if (call SingleChannel.configureMultiple(&config, buffer, BUFFER_SIZE, 10) == SUCCESS) call SingleChannel.getData(); break; - case 3: state++; - if (call SingleChannel.configureMultipleRepeat(&config, buffer, 16, 0) == SUCCESS) + case MULTIPLE_DATA_REPEAT: + if (call SingleChannel.configureMultipleRepeat(&config, buffer, 16, 10) == SUCCESS) call SingleChannel.getData(); break; default: call Resource.release(); - if (numDone == state) - signal Notify.notify(TRUE); + signal Notify.notify(TRUE); break; } } async event error_t SingleChannel.singleDataReady(uint16_t data) { - numDone++; assertData(&data, 1); + switch(state) + { + case SINGLE_DATA: + if (count){ + count--; + call SingleChannel.getData(); + return SUCCESS; + } + break; + case SINGLE_DATA_REPEAT: + if (count){ + count--; + return SUCCESS; + } + break; + } call Resource.release(); + state++; post getData(); return FAIL; } @@ -136,9 +160,24 @@ implementation async event uint16_t* SingleChannel.multipleDataReady(uint16_t *buf, uint16_t length) { - numDone++; assertData(buf, length); + switch(state) + { + case MULTIPLE_DATA: + if (count){ + count--; + call SingleChannel.getData(); + return 0; + } + break; + case MULTIPLE_DATA_REPEAT: + if (count){ + count--; + return buf; + } + } call Resource.release(); + state++; post getData(); return 0; }