nt9856x/code/application/sifarsdk/333DE/hal/Hal333DEMakePtr.cpp

144 lines
5.0 KiB
C++

#include "Hal333DEMakePtr.h"
#include "Hal333DE.h"
#include "NetworkModule333DE.h"
#include "CameraChip333DE.h"
#include "Log.h"
#include "Gpio.h"
#include "LightWeightCPU.h"
#include "GpioInputHandle.h"
#include "KeyContrl.h"
#include "OneColorLed.h"
#include "MultiColorLed.h"
#include "SDCardHal.h"
void Hal333DEMakePtrOverride(void)
{
std::shared_ptr<HalX86MakePtr> makePtr = std::make_shared<Hal333DEMakePtr>();
HalX86MakePtr::GetInstance(&makePtr);
}
Hal333DEMakePtr::Hal333DEMakePtr()
{
mKeyInfo[SfKeyDefine::KEY_PIN_RESET] = {SF_KEY_PIN_RESET, HIGHT_MEANS_KEY_UP};
mKeyInfo[SfKeyDefine::KEY_PIN_SYNC] = {SF_KEY_PIN_SYNC, HIGHT_MEANS_KEY_UP};
mKeyInfo[SfKeyDefine::KEY_PIN_FORMAT] = {SF_KEY_PIN_FORMAT, HIGHT_MEANS_KEY_UP};
mKeyInfo[SfKeyDefine::KEY_PIN_DATAREADY] = {SF_KEY_PIN_DATAREADY, LOW_MEANS_KEY_UP};
// mKeyInfo[SfKeyDefine::KEY_PIN_FILESTATUS] = {SF_KEY_PIN_FILESTATUS, HIGHT_MEANS_KEY_UP};
}
RETURN_CODE Hal333DEMakePtr::CreateHalModuleInstance(std::shared_ptr<IHal> &impl)
{
LogInfo("Hal333DEMakePtr make ptr.\n");
impl = std::make_shared<Hal333DE>();
return VReturnCode::NewCode(VReturnCodeDefine::OK);
}
RETURN_CODE Hal333DEMakePtr::CreateGpioLedContrlInstance(const SfLedIndex &led, std::shared_ptr<VLedContrl> &ledContrl)
{
switch (led)
{
case SfLedIndex::SF_LED_STATUS:
{
LogInfo("Create led of status.\n");
auto ledOut = std::make_shared<OneColorLed>(led, SF_HAL_LED_STATUS_G);
ledContrl = ledOut;
break;
}
case SfLedIndex::SF_LED_WIFI:
{
LogInfo("Create led of wifi.\n");
auto ledOut = std::make_shared<OneColorLed>(led, SF_HAL_LED_WIFI);
ledContrl = ledOut;
break;
}
case SfLedIndex::SF_LED_BAT:
{
LogInfo("Create led of bat.\n");
auto ledOut = std::make_shared<MultiColorLed>(led, SF_HAL_LED_BAT_R, SF_HAL_LED_BAT_G);
ledContrl = ledOut;
break;
}
case SfLedIndex::SF_LED_SD:
{
LogInfo("Create led of sd card.\n");
auto ledOut = std::make_shared<MultiColorLed>(led, SF_HAL_LED_SD_R, SF_HAL_LED_SD_G);
ledContrl = ledOut;
break;
}
case SfLedIndex::SF_LED_SIG1:
{
LogInfo("Create led of signal.\n");
auto ledOut = std::make_shared<MultiColorLed>(led, SF_HAL_LED_SIG1_R, SF_HAL_LED_SIG1_G);
ledContrl = ledOut;
break;
}
case SfLedIndex::SF_LED_USERBIND:
{
LogInfo("Create led of signal.\n");
auto ledOut = std::make_shared<MultiColorLed>(led, SF_HAL_LED_USERBIND_R, SF_HAL_LED_USERBIND_G);
ledContrl = ledOut;
break;
}
default:
break;
}
return VReturnCode::NewCode(VReturnCodeDefine::OK);
}
RETURN_CODE Hal333DEMakePtr::CreateGpioKeyContrlInstance(const SfKeyDefine &key, std::shared_ptr<VKeyContrl> &keyContrl)
{
std::map<SfKeyDefine, SF_KEYMNG_INFO_S>::iterator iter;
iter = mKeyInfo.find(key);
if (iter == mKeyInfo.end())
{
LogWarning("Want to create undefine key contrl, failed.key = %d\n", static_cast<int>(key));
return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_UNDEFINE_REASON);
}
auto keyOut = std::make_shared<KeyContrl>(key, mKeyInfo[key].pinNumber, mKeyInfo[key].valueMeansKeyUp);
// keyOut->Init();
keyContrl = keyOut;
return VReturnCode::NewCode(VReturnCodeDefine::OK);
}
RETURN_CODE Hal333DEMakePtr::CreateGpioInputInstance(const GpioPin &gpio, std::shared_ptr<VGpioInputHandle> &gpioInput)
{
constexpr int GPIOID_PIR_TEST = 3;
constexpr int GPIOID_USB_INSERT = 61;
switch (gpio)
{
case GpioPin::PIR:
{
auto impl = std::make_shared<GpioInputHandle>(gpio, GPIOID_PIR_TEST, HIGHT_PIN_MEANS_INVALID);
gpioInput = impl;
break;
}
case GpioPin::USB:
{
auto impl = std::make_shared<GpioInputHandle>(gpio, GPIOID_USB_INSERT, LOW_PIN_MEANS_INVALID);
gpioInput = impl;
break;
}
default:
break;
}
return VReturnCode::NewCode(VReturnCodeDefine::OK);
}
RETURN_CODE Hal333DEMakePtr::CreateCameraChip(const CameraType &type, std::shared_ptr<CameraHal> &camera)
{
auto tmp = std::make_shared<CameraChip333DE>();
camera = tmp;
return VReturnCode::NewCode(VReturnCodeDefine::OK);
}
RETURN_CODE Hal333DEMakePtr::CreateLightWeightCPU(std::shared_ptr<VLightWeightCPU> &lcpu)
{
auto tmp = std::make_shared<LightWeightCPU>();
lcpu = tmp;
return VReturnCode::NewCode(VReturnCodeDefine::OK);
}
RETURN_CODE Hal333DEMakePtr::CreateSdCardHal(std::shared_ptr<VSDCardHal> &sdCardHal)
{
auto tmp = std::make_shared<SDCardHal>();
sdCardHal = tmp;
return VReturnCode::NewCode(VReturnCodeDefine::OK);
}
RETURN_CODE Hal333DEMakePtr::CreateNetworkModuleHandle(std::shared_ptr<VNetWorkHardware> &impl)
{
LogInfo("CreateNetworkModuleHandle NetworkModule333DE.\n");
impl = std::make_shared<NetworkModule333DE>();
return VReturnCode::NewCode(VReturnCodeDefine::OK);
}