增加立即关闭摄像机电源函数,实现手动关闭

N938
XI.CHEN 6 months ago
parent 162d7624af
commit c501b689de

@ -198,6 +198,30 @@ size_t GpioControl::TurnOn(const std::vector<int>& cmds)
return 0;
}
size_t GpioControl::TurnOffImmediately(int cmd)
{
time_t ts = time(NULL) + 2;
size_t ref = 0;
std::vector<ITEM>::iterator it;
m_locker.lock();
for (it = m_items.begin(); it != m_items.end(); ++it)
{
if (it->cmd == cmd)
{
ref = it->references;
it->closeCmds++;
it->closeTime = ts;
break;
}
}
m_locker.unlock();
m_semaphore.release();
#ifdef _DEBUG
ALOGI("PWR TurnOffNow cmd=%d ref=%u", cmd, (uint32_t)ref);
#endif
return 0;
}
size_t GpioControl::TurnOff(int cmd, uint32_t delayedCloseTime/* = 0*/)
{
time_t ts = 0;

@ -177,6 +177,7 @@ public:
static size_t TurnOff(int cmd, uint32_t delayedCloseTime = 0);
static size_t TurnOff(const std::vector<int>& cmds, uint32_t delayedCloseTime = 0);
static size_t TurnOff(const std::vector<std::pair<int, uint32_t> >& cmds);
static size_t TurnOffImmediately(int cmd);
static void PowerControlThreadProc();
@ -532,7 +533,24 @@ public:
#ifdef USING_PLZ
PowerControl(CMD_SET_PTZ_PWR_ENABLE, CMD_SET_100M_ENABLE, CMD_SET_100M_SWITCH_PWR_ENABLE, CMD_SET_12V_EN_STATE, closeDelayTime)
#else // USING_PLZ
PowerControl(CMD_SET_OTG_STATE, CMD_SET_12V_EN_STATE, closeDelayTime)
PowerControl(CMD_SET_OTG_STATE, CMD_SET_12V_EN_STATE, closeDelayTime)
#endif // USING_PLZ
#endif // USING_N938
{
}
};
class SerialCameraPowerCtrl : public PowerControl
{
public:
SerialCameraPowerCtrl(uint32_t closeDelayTime) :
#ifdef USING_N938
PowerControl(CMD_SET_SPI_POWER, CMD_SPI2SERIAL_POWER_EN, CMD_RS485_3V3_EN, CMD_SET_PIC1_POWER, CMD_SET_485_EN4, closeDelayTime)
#else // USING_N938
#ifdef USING_PLZ
PowerControl(CMD_SET_12V_EN_STATE, CMD_SET_485_ENABLE, CMD_SET_3V3_PWR_EN, CMD_SET_SPI_POWER, CMD_SET_PTZ_PWR_ENABLE, closeDelayTime)
#else // USING_PLZ
PowerControl(CMD_SET_12V_EN_STATE, CMD_SET_3V3_PWR_EN, CMD_SET_SPI_POWER, CMD_SET_485_EN_STATE, closeDelayTime)
#endif // USING_PLZ
#endif // USING_N938
{

@ -4171,19 +4171,36 @@ bool CPhoneDevice::CloseSensors(int sensortype, uint32_t delayedCloseTime)
}
if(sensortype == CAMERA_SENSOR_OPEN)
{
if(delayedCloseTime ==0)
{
#ifdef USING_N938
GpioControl::TurnOff(CMD_SET_PIC1_POWER, delayedCloseTime);
GpioControl::TurnOff(CMD_SET_485_EN4, delayedCloseTime);
GpioControl::TurnOffImmediately(CMD_SET_PIC1_POWER);
GpioControl::TurnOffImmediately(CMD_SET_485_EN4);
#endif
#ifndef USING_N938
// GpioControl::TurnOff(CMD_SET_3V3_PWR_ENABLE);
#ifndef USING_PLZ
#else
GpioControl::TurnOffImmediately(CMD_SET_PTZ_PWR_ENABLE);
#endif
#endif
}else
{
#ifdef USING_N938
GpioControl::TurnOff(CMD_SET_PIC1_POWER, delayedCloseTime);
GpioControl::TurnOff(CMD_SET_485_EN4, delayedCloseTime);
// GpioControl::TurnOff(CMD_SET_CAM_3V3_EN_STATE);
#endif
#ifndef USING_N938
// GpioControl::TurnOff(CMD_SET_3V3_PWR_ENABLE);
#ifndef USING_PLZ
#else
GpioControl::TurnOff(CMD_SET_PTZ_PWR_ENABLE, delayedCloseTime);
#endif
// GpioControl::TurnOff(CMD_SET_3V3_PWR_ENABLE);
#ifndef USING_PLZ
#else
GpioControl::TurnOff(CMD_SET_PTZ_PWR_ENABLE, delayedCloseTime);
#endif
#endif
}
}
if(sensortype == WEATHER_SENSOR_OPEN )
{

Loading…
Cancel
Save