144 lines
5.0 KiB
C++
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);
|
|
} |