48         __esos_SetSystemFlag(__ESOS_SYS_ADC_IS_BUSY);
    66     esos_sensor_initiate_hw();
    81 int compareUint16(
const void *pv_a, 
const void *pv_b)
    83         return *((uint16_t*)pv_a) - *((uint16_t*)pv_b);
    94 uint16_t medianOfBuffer(uint16_t *pu16_buf, 
uint8_t u8_nelem)
    96         qsort(pu16_buf, u8_nelem, 
sizeof(uint16_t), compareUint16);
    99         return (pu16_buf[u8_nelem / 2 - 1] + pu16_buf[u8_nelem / 2]) / 2;
   110 uint16_t maxOfBuffer(uint16_t *pu16_buf, 
uint8_t u8_nelem)
   115         for(;i<u8_nelem;i++){
   116                 if(max < pu16_buf[i]){
   139         static uint16_t au16_dataArr[64] = {0};
   141         uint16_t u16_oneShot = *pu16_data;
   142         static uint32_t u32_algData;
   147         FMT_CONSTANT = e_senFMT & 0b11110000;
   148         vRef = e_senFMT & 0b00001111;
   151         if((e_senProcess & 0b00001111) == 1){
   152                 while(arrayCount < 2){
   153             esos_sensor_initiate_hw();
   159         else if((e_senProcess & 0b00001111) == 2){
   160                 while(arrayCount < 4){
   161             esos_sensor_initiate_hw();
   167         else if((e_senProcess & 0b00001111) == 3){
   168                 while(arrayCount < 8){
   169             esos_sensor_initiate_hw();
   175         else if((e_senProcess & 0b00001111) == 4){
   176                 while(arrayCount < 16){
   177             esos_sensor_initiate_hw();
   183         else if((e_senProcess & 0b00001111) == 5){
   184                 while(arrayCount < 32){
   185             esos_sensor_initiate_hw();
   191         else if((e_senProcess & 0b00001111) == 6){
   192                 while(arrayCount < 64){
   193             esos_sensor_initiate_hw();
   206         if(e_senProcess == ESOS_SENSOR_ONE_SHOT){
   207         esos_sensor_initiate_hw();
   212         else if(e_senProcess == ESOS_SENSOR_AVG2){
   213                 while(arrayCount < 2){
   214                         u32_algData += au16_dataArr[arrayCount];
   217                 u32_algData = u32_algData/arrayCount;
   218                 *pu16_data = (uint16_t)u32_algData;
   220         else if(e_senProcess == ESOS_SENSOR_AVG4){
   221                 while(arrayCount < 4){
   222                         u32_algData += au16_dataArr[arrayCount];
   225                 u32_algData = u32_algData/arrayCount;
   226                 *pu16_data = (uint16_t)u32_algData;
   228         else if(e_senProcess == ESOS_SENSOR_AVG8){
   229                 while(arrayCount < 8){
   230                         u32_algData += au16_dataArr[arrayCount];
   233                 u32_algData = u32_algData/arrayCount;
   234                 *pu16_data = (uint16_t)u32_algData;
   236         else if(e_senProcess == ESOS_SENSOR_AVG16){
   237                 while(arrayCount < 16){
   238                         u32_algData += au16_dataArr[arrayCount];
   241                 u32_algData = u32_algData/arrayCount;
   242                 *pu16_data = (uint16_t)u32_algData;
   244         else if(e_senProcess == ESOS_SENSOR_AVG32){
   245                 while(arrayCount < 32){
   246                         u32_algData += au16_dataArr[arrayCount];
   249                 u32_algData = u32_algData/arrayCount;
   250                 *pu16_data = (uint16_t)u32_algData;
   252         else if(e_senProcess == ESOS_SENSOR_AVG64){
   253                 while(arrayCount < 64){
   254                         u32_algData += au16_dataArr[arrayCount];
   257                 u32_algData = u32_algData/arrayCount;
   258                 *pu16_data = (uint16_t)u32_algData;
   261         else if(e_senProcess == ESOS_SENSOR_MIN2){
   262                 *pu16_data = MAX16BIT; 
   263                 while(arrayCount < 2){
   264                         if (au16_dataArr[arrayCount] < *pu16_data){
   265                                 *pu16_data = au16_dataArr[arrayCount];
   270         else if(e_senProcess == ESOS_SENSOR_MIN4){
   271                 *pu16_data = MAX16BIT; 
   272                 while(arrayCount < 4){
   273                         if (au16_dataArr[arrayCount] < *pu16_data){
   274                                 *pu16_data = au16_dataArr[arrayCount];
   279         else if(e_senProcess == ESOS_SENSOR_MIN8){
   280                 *pu16_data = MAX16BIT; 
   281                 while(arrayCount < 8){
   282                         if (au16_dataArr[arrayCount] < *pu16_data){
   283                                 *pu16_data = au16_dataArr[arrayCount];
   288         else if(e_senProcess == ESOS_SENSOR_MIN16){
   289                 *pu16_data = MAX16BIT; 
   290                 while(arrayCount < 16){
   291                         if (au16_dataArr[arrayCount] < *pu16_data){
   292                                 *pu16_data = au16_dataArr[arrayCount];
   297         else if(e_senProcess == ESOS_SENSOR_MIN32){
   298                 *pu16_data = MAX16BIT; 
   299                 while(arrayCount < 32){
   300                         if (au16_dataArr[arrayCount] < *pu16_data){
   301                                 *pu16_data = au16_dataArr[arrayCount];
   306         else if(e_senProcess == ESOS_SENSOR_MIN64){
   307                 *pu16_data = MAX16BIT; 
   308                 while(arrayCount < 64){
   309                         if (au16_dataArr[arrayCount] < *pu16_data){
   310                                 *pu16_data = au16_dataArr[arrayCount];
   316         else if(e_senProcess == ESOS_SENSOR_MAX2){
   317                 *pu16_data = maxOfBuffer(au16_dataArr, 2);
   319         else if(e_senProcess == ESOS_SENSOR_MAX4){
   320                 *pu16_data = maxOfBuffer(au16_dataArr, 4);
   322         else if(e_senProcess == ESOS_SENSOR_MAX8){
   323                 *pu16_data = maxOfBuffer(au16_dataArr, 8);
   325         else if(e_senProcess == ESOS_SENSOR_MAX16){
   326                 *pu16_data = maxOfBuffer(au16_dataArr, 16);
   328         else if(e_senProcess == ESOS_SENSOR_MAX32){
   329                 *pu16_data = maxOfBuffer(au16_dataArr, 32);
   331         else if(e_senProcess == ESOS_SENSOR_MAX64){
   332                 *pu16_data = maxOfBuffer(au16_dataArr, 64);
   335         else if(e_senProcess == ESOS_SENSOR_MEDIAN2){
   336                 *pu16_data = medianOfBuffer(au16_dataArr, 2);
   338         else if(e_senProcess == ESOS_SENSOR_MEDIAN4){
   339                 *pu16_data = medianOfBuffer(au16_dataArr, 4);
   341         else if(e_senProcess == ESOS_SENSOR_MEDIAN8){
   342                 *pu16_data = medianOfBuffer(au16_dataArr, 8);
   344         else if(e_senProcess == ESOS_SENSOR_MEDIAN16){
   345                 *pu16_data = medianOfBuffer(au16_dataArr, 16);
   347         else if(e_senProcess == ESOS_SENSOR_MEDIAN32){
   348                 *pu16_data = medianOfBuffer(au16_dataArr, 32);
   350         else if(e_senProcess == ESOS_SENSOR_MEDIAN64){
   351                 *pu16_data = medianOfBuffer(au16_dataArr, 64);
   356         if(FMT_CONSTANT & ESOS_SENSOR_FORMAT_VOLTAGE){
   357                 const uint32_t u32_maxDeciMilliVolts =
   358                           vRef == ESOS_SENSOR_VREF_1V0 ?   10000
   359                         : vRef == ESOS_SENSOR_VREF_1V024 ? 10240
   360                         : vRef == ESOS_SENSOR_VREF_2V0 ?   20000
   361                         : vRef == ESOS_SENSOR_VREF_2V048 ? 20480
   362                         : vRef == ESOS_SENSOR_VREF_3V0 ?   30000
   363                         : vRef == ESOS_SENSOR_VREF_3V3 ?   33000
   364                         : vRef == ESOS_SENSOR_VREF_4V0 ?   40000
   365                         : vRef == ESOS_SENSOR_VREF_4V096 ? 40960
   366                         : vRef == ESOS_SENSOR_VREF_5V0 ?   50000
   368                 const uint32_t u32_divDeciMillivolts = (uint32_t)(*u16_data) * u32_maxDeciMilliVolts;
   369                 const uint32_t u32_DeciMillivolts = u32_divDeciMillivolts / 4096;
   370                 *pu16_data = (uint16_t)u32_DeciMillivolts;
   374         else if(FMT_CONSTANT & ESOS_SENSOR_FORMAT_PERCENT) {
   375                 *pu16_data = (uint32_t)(*u16_data) * 100 / 4096;
   391         __esos_ClearSystemFlag(__ESOS_SYS_ADC_IS_BUSY);
 
#define ESOS_TASK_WAIT_WHILE(cond)
void esos_sensor_config_hw(esos_sensor_ch_t, esos_sensor_vref_t)
uint16_t esos_sensor_getvalue_u16_hw(void)
#define ESOS_TASK_BEGIN()
BOOL esos_sensor_is_converting_hw(void)
ESOS_CHILD_TASK(_WAIT_ON_AVAILABLE_SENSOR, esos_sensor_ch_t e_senCh, esos_sensor_vref_t e_senVRef)
unsigned char uint8_t
An abbreviation for an 8-bit unsigned integer. 
void esos_sensor_release_hw(void)
BOOL ESOS_SENSOR_CLOSE(void)