54 lines
1.5 KiB
C
Executable File
54 lines
1.5 KiB
C
Executable File
/*************************************************
|
|
File name : hal_interface_lightsensor.c
|
|
Module :
|
|
Author : amir
|
|
Version : 0.1
|
|
Created on : 2022-02-07
|
|
Description :
|
|
hal interface for lightsensor
|
|
|
|
Modify History:
|
|
1. Date: Author: Modification:
|
|
*************************************************/
|
|
#include "hal_interface_lightsensor.h"
|
|
#include "hal_interface_ircut.h"
|
|
#include "hlog.h"
|
|
|
|
#define TAG "TAG_HAL_LIGHTSESNOR"
|
|
|
|
#define PERIOD_TO_GET_ADC ((uint16_t)(500))//ms
|
|
#define IRLED_OPEN ((uint8_t)(1))
|
|
|
|
|
|
static void* hal_lightsensor_entry(void *param){
|
|
uint32_t adc;
|
|
if (hal_lightsensor_get_adc(&adc) == 0){
|
|
IRCUT_MODE cur_mode = hal_ircut_mode_get();
|
|
if (adc < NIGHT_ADC && cur_mode != IRCUT_NIGHT){//to night
|
|
kpacket *packet = kpacket_new(EVENT_HAL_DAYNIGHT, sizeof(uint32_t));
|
|
*packet->box->payload = IRCUT_NIGHT;
|
|
hal_pub(packet);
|
|
atomic_dec(packet);
|
|
}else if (adc > DAY_ADC && cur_mode != IRCUT_DAY){//to day
|
|
kpacket *packet = kpacket_new(EVENT_HAL_DAYNIGHT, sizeof(uint32_t));
|
|
*packet->box->payload = IRCUT_DAY;
|
|
hal_pub(packet);
|
|
atomic_dec(packet);
|
|
}
|
|
hlogd("%s adc %u cur_mode:%d",__func__, adc, cur_mode);
|
|
}else{
|
|
hlogd("%s hal_lightsensor_get_adc err",__func__);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
uint32_t hal_lightsensor_start(){
|
|
hal_timer_start(hal_lightsensor_entry, NULL, PERIOD_TO_GET_ADC);
|
|
}
|
|
|
|
uint32_t hal_lightsensor_stop(){
|
|
hal_timer_stop(hal_lightsensor_entry);
|
|
}
|
|
|