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 } |