|
|
@@ -0,0 +1,187 @@
|
|
|
+//
|
|
|
+// Created by LocalUser on 2019/1/7.
|
|
|
+//
|
|
|
+
|
|
|
+#include "idcer_impl.h"
|
|
|
+#if defined(ANDROID)
|
|
|
+
|
|
|
+#include <android/log.h>
|
|
|
+#include <cstring>
|
|
|
+#include <cstdio>
|
|
|
+#include <cstdlib>
|
|
|
+
|
|
|
+#define LOGI(...) \
|
|
|
+ ((void)__android_log_print(ANDROID_LOG_INFO, "IDCER::", __VA_ARGS__))
|
|
|
+#endif
|
|
|
+
|
|
|
+IDCerClassImpl::IDCerClassImpl()
|
|
|
+ :m_mode(0)
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+IDCerClassImpl::~IDCerClassImpl()
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum IDCerClassImpl::GetDevCategory(DevCategoryInfo &devCategory)
|
|
|
+{
|
|
|
+
|
|
|
+ ErrorCodeEnum err = Error_Succeed;
|
|
|
+ std::strcpy(devCategory.szModel, "szModel");
|
|
|
+ std::strcpy(devCategory.szType, "szCategory");
|
|
|
+ std::strcpy(devCategory.szVendor, "szVendor");
|
|
|
+ return err;
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum IDCerClassImpl::Reset()
|
|
|
+{
|
|
|
+ ErrorCodeEnum err = Error_Succeed;
|
|
|
+ m_mode = 0;
|
|
|
+ return err;
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum IDCerClassImpl::IDCerAuthenticate()
|
|
|
+{
|
|
|
+ ErrorCodeEnum err = Error_Succeed;
|
|
|
+ m_mode = 0;
|
|
|
+ return err;
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum IDCerClassImpl::ForceIDEject()
|
|
|
+{
|
|
|
+ ErrorCodeEnum err = Error_Succeed;
|
|
|
+ m_mode = 0;
|
|
|
+ return err;
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum IDCerClassImpl::ScanIDAndSaveImage(IDDataBuf &frontImageBuf, IDDataBuf &backImageBuf)
|
|
|
+{
|
|
|
+ ErrorCodeEnum err = Error_Succeed;
|
|
|
+ m_mode = 0;
|
|
|
+ return err;
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum IDCerClassImpl::QueryCardPos(int &pos)
|
|
|
+{
|
|
|
+ ErrorCodeEnum err = Error_Succeed;
|
|
|
+ m_mode = 0;
|
|
|
+ return err;
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum IDCerClassImpl::IDCerRFControl(bool bControl)
|
|
|
+{
|
|
|
+ ErrorCodeEnum err = Error_Succeed;
|
|
|
+ m_mode = 0;
|
|
|
+ return err;
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum IDCerClassImpl::DevOpen(DWORD dwPort)
|
|
|
+{
|
|
|
+ ErrorCodeEnum err = Error_Succeed;
|
|
|
+ return err;
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum IDCerClassImpl::DevClose()
|
|
|
+{
|
|
|
+ ErrorCodeEnum err = Error_Succeed;
|
|
|
+ return err;
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum IDCerClassImpl::IDCerGetData(IDCerInfo &idCerInfo, IDDataBuf &zpBmpBuf)
|
|
|
+{
|
|
|
+ ErrorCodeEnum err = Error_Succeed;
|
|
|
+ memset(&idCerInfo, 0, sizeof(IDCerInfo));
|
|
|
+
|
|
|
+ std::strcpy(idCerInfo.name.data, "廖桂发");
|
|
|
+ idCerInfo.name.dwSize = strlen("廖桂发");
|
|
|
+
|
|
|
+ std::strcpy(idCerInfo.sex.data, "男");
|
|
|
+ idCerInfo.sex.dwSize = strlen("男");
|
|
|
+
|
|
|
+ std::strcpy(idCerInfo.birthday.data, "1992年09月09日");
|
|
|
+ idCerInfo.birthday.dwSize = strlen("1992年09月09日");
|
|
|
+
|
|
|
+ std::strcpy(idCerInfo.nation.data, "汉族");
|
|
|
+ idCerInfo.nation.dwSize = strlen("汉族");
|
|
|
+
|
|
|
+ std::strcpy(idCerInfo.address.data, "15号科兴科学园A3单元15楼");
|
|
|
+ idCerInfo.address.dwSize = strlen("15号科兴科学园A3单元15楼");
|
|
|
+
|
|
|
+ std::strcpy(idCerInfo.idno.data, "441621199201011234");
|
|
|
+ idCerInfo.idno.dwSize = strlen("441621199201011234");
|
|
|
+
|
|
|
+ std::strcpy(idCerInfo.department.data, "深圳市南山公安局");
|
|
|
+ idCerInfo.department.dwSize = strlen("深圳市南山公安局");
|
|
|
+
|
|
|
+ std::strcpy(idCerInfo.startDate.data, "2009.03.25");
|
|
|
+ idCerInfo.startDate.dwSize = strlen("2009.03.25");
|
|
|
+
|
|
|
+ std::strcpy(idCerInfo.endDate.data, "2029.03.24");
|
|
|
+ idCerInfo.endDate.dwSize = strlen("2029.03.24");
|
|
|
+
|
|
|
+
|
|
|
+ FILE* file_;
|
|
|
+ file_ = fopen("/sdcard/rvc/download/zp.bmp", "rb");
|
|
|
+ if(file_) {
|
|
|
+ fseek(file_, 0, SEEK_END);
|
|
|
+ long size = ftell(file_);
|
|
|
+ fseek(file_, 0, SEEK_SET);
|
|
|
+ zpBmpBuf.data = (char*)malloc(size);
|
|
|
+ if(zpBmpBuf.data) {
|
|
|
+ size_t bytes = fread(zpBmpBuf.data, 1, size, file_);
|
|
|
+ if(bytes == size) {
|
|
|
+ zpBmpBuf.dwSize = size;
|
|
|
+ } else {
|
|
|
+ err = Error_Overflow;
|
|
|
+ free(zpBmpBuf.data);
|
|
|
+ zpBmpBuf.data = NULL;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ fclose(file_);
|
|
|
+ } else {
|
|
|
+ err = Error_Resource;
|
|
|
+ }
|
|
|
+ return err;
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum IDCerClassImpl::IDCerGetDataEx(IDCerInfoEx &idCerInfoEx, IDDataBuf &zpBmpBuf)
|
|
|
+{
|
|
|
+ ErrorCodeEnum err = Error_NotImpl;
|
|
|
+ return err;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+ErrorCodeEnum IDCerClassImpl::GetLastErr(DevErrorInfo &devErrInfo)
|
|
|
+{
|
|
|
+ static int times = 0;
|
|
|
+ char szMessage[128];
|
|
|
+ sprintf(szMessage, "this is the %d times error message", ++times);
|
|
|
+ strcpy(devErrInfo.szErrMsg, szMessage);
|
|
|
+ devErrInfo.dwErrMsgLen = strlen(szMessage);
|
|
|
+ return Error_Succeed;
|
|
|
+}
|
|
|
+
|
|
|
+DEVICEBASE_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass *&baseObj)
|
|
|
+{
|
|
|
+ baseObj = new IDCerClassImpl();
|
|
|
+ if(baseObj == NULL) {
|
|
|
+ return Error_Resource;
|
|
|
+ } else {
|
|
|
+ return Error_Succeed;
|
|
|
+ }
|
|
|
+}
|
|
|
+DEVICEBASE_API ErrorCodeEnum ReleaseDevComponent(DeviceBaseClass *&pBaseObj)
|
|
|
+{
|
|
|
+ if(pBaseObj == NULL) {
|
|
|
+ return Error_Param;
|
|
|
+ }
|
|
|
+ if(IDCerClassImpl* pTmp = dynamic_cast<IDCerClassImpl*>(pBaseObj))
|
|
|
+ {
|
|
|
+ delete pTmp;
|
|
|
+ pTmp = NULL;
|
|
|
+ return Error_Succeed;
|
|
|
+ }
|
|
|
+ return Error_Param;
|
|
|
+}
|