85 lines
2.5 KiB
C++
85 lines
2.5 KiB
C++
#include "NetworkModule333DE.h"
|
|
#include "SfTypeDefine.h"
|
|
#include "Log.h"
|
|
#include <unistd.h>
|
|
#include <thread>
|
|
constexpr U32 GPIOID_SIM_INSRET = 4;
|
|
constexpr U32 GPIOID_USB_MUX1 = 16;
|
|
|
|
RETURN_CODE NetworkModule333DE::Init(void)
|
|
{
|
|
LogInfo("NetworkModule333DE::Init.\n");
|
|
GpioInit(GPIOID_SIM_INSRET, GPIO_DIR_IN);
|
|
GpioInit(GPIOID_USB_MUX1, GPIO_DIR_OUT);
|
|
GpioSet(GPIOID_USB_MUX1, GPIO_PIN_HIGHT);
|
|
NetworkModule::Init();
|
|
return VReturnCode::NewCode(VReturnCodeDefine::OK);
|
|
}
|
|
|
|
RETURN_CODE NetworkModule333DE::UnInit(void)
|
|
{
|
|
NetworkModule::UnInit();
|
|
GpioDeinit(GPIOID_SIM_INSRET);
|
|
GpioDeinit(GPIOID_USB_MUX1);
|
|
return VReturnCode::NewCode(VReturnCodeDefine::OK);
|
|
}
|
|
RETURN_CODE NetworkModule333DE::IsHardwareSupport(void)
|
|
{
|
|
LogInfo("NetworkModule333DE::IsHardwareSupport.\n");
|
|
SINT8 regValue = 0;
|
|
// TODO: Multi thread safe?
|
|
// GpioInit(GPIOID_SIM_INSRET, GPIO_DIR_IN);
|
|
GpioGet(GPIOID_SIM_INSRET, regValue);
|
|
// GpioDeinit(GPIOID_SIM_INSRET);
|
|
if (regValue & 0xFF)
|
|
{
|
|
return VReturnCode::NewCode(VReturnCodeDefine::OK);
|
|
}
|
|
LogError("Don't support usd network module.\n");
|
|
return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_UNDEFINE_REASON);
|
|
}
|
|
RETURN_CODE NetworkModule333DE::NetDriverLoad(void)
|
|
{
|
|
constexpr int CMD_BUF_LENGTH = 128;
|
|
char cmd[CMD_BUF_LENGTH] = {0};
|
|
int ret = SF_FAILURE;
|
|
for (UINT8 i = 0; i < 40; i++)
|
|
{
|
|
if (access("/dev/qcqmi0", F_OK) == SF_SUCCESS)
|
|
{
|
|
ret = SF_SUCCESS;
|
|
LogInfo("usb net ko exist!\n");
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
usleep(100 * 1000);
|
|
}
|
|
}
|
|
if (ret == SF_SUCCESS)
|
|
{
|
|
sprintf(cmd, "/customer/quectel-CM -n %d&", E_PDP_INDEX);
|
|
int resutl = system(cmd);
|
|
LogInfo("system function result = %d\n", resutl);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(1000 * 5));
|
|
return VReturnCode::NewCode(VReturnCodeDefine::OK);
|
|
}
|
|
return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_UNDEFINE_REASON);
|
|
}
|
|
unsigned int NetworkModule333DE::GetPdpIndex(void)
|
|
{
|
|
return E_PDP_INDEX;
|
|
}
|
|
const char *USB_NODE = "/dev/ttyUSB2";
|
|
SF_SERIAL_DATA_FRAME_TYPE_S NetworkModule333DE::GetUsbNode(void)
|
|
{
|
|
SF_SERIAL_DATA_FRAME_TYPE_S node = {
|
|
USB_NODE,
|
|
'N',
|
|
'N',
|
|
8,
|
|
1,
|
|
460800};
|
|
// LogInfo("Get 333DE node message.\n");
|
|
return node;
|
|
} |