esp-idf-lib/components/apds9930/apds9930.c

changeset 37
50dbb626fbab
parent 21
df8564c9701e
equal deleted inserted replaced
36:7b5c1fbeda7b 37:50dbb626fbab
358 { 358 {
359 uint8_t x[4] = {1,8,16,120}; 359 uint8_t x[4] = {1,8,16,120};
360 float iac; 360 float iac;
361 361
362 float ALSIT = 2.73 * (256 - APDS9930_DEFAULT_ATIME); 362 float ALSIT = 2.73 * (256 - APDS9930_DEFAULT_ATIME);
363 if ((Ch0 - APDS9930_ALS_B * Ch1) > (APDS9930_ALS_C * Ch0 - APDS9930_ALS_D * Ch1)) 363 float iac0 = Ch0 - APDS9930_ALS_B * Ch1;
364 iac = Ch0 - APDS9930_ALS_B * Ch1; 364 float iac1 = APDS9930_ALS_C * Ch0 - APDS9930_ALS_D * Ch1;
365
366 if ((iac0 < 0) && (iac1 < 0)) {
367 /* Overflow, too much light */
368 return 32767.0;
369 }
370
371 if (iac0 > iac1)
372 iac = iac0;
365 else 373 else
366 iac = APDS9930_ALS_C * Ch0 - APDS9930_ALS_D * Ch1; 374 iac = iac1;
367 //float iac = fmax(Ch0 - APDS9930_ALS_B * Ch1, APDS9930_ALS_C * Ch0 - APDS9930_ALS_D * Ch1); 375 //float iac = fmax(Ch0 - APDS9930_ALS_B * Ch1, APDS9930_ALS_C * Ch0 - APDS9930_ALS_D * Ch1);
368 if (iac < 0) 376 if (iac < 0)
369 iac = 0; 377 iac = 0;
370 float lpc = APDS9930_GA * APDS9930_DF / (ALSIT * x[apds9930_getAmbientLightGain(dev)]); 378 float lpc = APDS9930_GA * APDS9930_DF / (ALSIT * x[apds9930_getAmbientLightGain(dev)]);
371 return iac * lpc; 379 return iac * lpc;
376 { 384 {
377 uint8_t x[4] = {1,8,16,120}; 385 uint8_t x[4] = {1,8,16,120};
378 unsigned long iac; 386 unsigned long iac;
379 387
380 unsigned long ALSIT = 2.73 * (256 - APDS9930_DEFAULT_ATIME); 388 unsigned long ALSIT = 2.73 * (256 - APDS9930_DEFAULT_ATIME);
381 if ((Ch0 - APDS9930_ALS_B * Ch1) > (APDS9930_ALS_C * Ch0 - APDS9930_ALS_D * Ch1)) 389 long iac0 = Ch0 - APDS9930_ALS_B * Ch1;
382 iac = Ch0 - APDS9930_ALS_B * Ch1; 390 long iac1 = APDS9930_ALS_C * Ch0 - APDS9930_ALS_D * Ch1;
391
392 if ((iac0 < 0) && (iac1 < 0)) {
393 /* Overflow, too much light */
394 return 32767;
395 }
396
397 if (iac0 > iac1)
398 iac = iac0;
383 else 399 else
384 iac = APDS9930_ALS_C * Ch0 - APDS9930_ALS_D * Ch1; 400 iac = iac1;
385 //unsigned long iac = max(Ch0 - APDS9930_ALS_B * Ch1, APDS9930_ALS_C * Ch0 - APDS9930_ALS_D * Ch1); 401 //unsigned long iac = max(Ch0 - APDS9930_ALS_B * Ch1, APDS9930_ALS_C * Ch0 - APDS9930_ALS_D * Ch1);
386 // if (iac < 0) iac = 0; 402 // if (iac < 0) iac = 0;
387 unsigned long lpc = APDS9930_GA * APDS9930_DF / (ALSIT * x[apds9930_getAmbientLightGain(dev)]); 403 unsigned long lpc = APDS9930_GA * APDS9930_DF / (ALSIT * x[apds9930_getAmbientLightGain(dev)]);
388 return iac * lpc; 404 return iac * lpc;
389 } 405 }

mercurial