Explorar el Código

#IQRV #comment merge 1227_forinstall

80374374 hace 1 año
padre
commit
75d9d39bd0
Se han modificado 35 ficheros con 1359 adiciones y 4243 borrados
  1. 2 1
      CMakeLists.txt
  2. 4 0
      Module/CMakeLists.txt
  3. 1 0
      Module/mod_CardIssuerStand/CMakeLists.txt
  4. 0 449
      Module/mod_CardIssuerStand/CardIssuer.xml
  5. 10 4
      Module/mod_CardIssuerStand/CardIssuer_UserErrorCode.h
  6. 0 1607
      Module/mod_CardIssuerStand/CardIssuer_client_g.h
  7. 0 999
      Module/mod_CardIssuerStand/CardIssuer_def_g.h
  8. 0 45
      Module/mod_CardIssuerStand/CardIssuer_msg_g.h
  9. 0 1001
      Module/mod_CardIssuerStand/CardIssuer_server_g.h
  10. 4 0
      Module/mod_CardIssuerStand/mod_cardissuer.h
  11. 6 6
      Module/mod_FingerPrint/FingerPrintFSM.cpp
  12. 3 1
      Module/mod_FingerPrint/FingerPrintFSM.h
  13. 2 1
      Module/mod_FingerPrint/mod_FingerPrint.h
  14. 10 0
      Module/mod_IDCertificate/mod_IDCertificate.h
  15. 33 33
      Module/mod_cardissuer/CardIssuer.xml
  16. 10 4
      Module/mod_cardissuer/CardIssuer_UserErrorCode.h
  17. 4 0
      Module/mod_cardissuer/mod_cardissuer.h
  18. 10 20
      Module/mod_chromium/CModTools.cpp
  19. 2 0
      Module/mod_chromium/CSocketClient.cpp
  20. 4 2
      Module/mod_chromium/CWebsocketServer.cpp
  21. 2 0
      Module/mod_chromium/CWebsocketServer.h
  22. 2 0
      Module/mod_chromium/mod_chromium.cpp
  23. 11 7
      Module/mod_healthmanager/HealthManagerFSM.cpp
  24. 5 2
      Module/mod_healthmanager/mod_healthmanager.cpp
  25. 10 0
      Module/mod_healthmanager/mod_healthmanager.h
  26. 695 11
      Module/mod_vtmloader/VtmLoaderFSM.cpp
  27. 86 6
      Module/mod_vtmloader/VtmLoaderFSM.h
  28. 5 0
      Module/mod_vtmloader/VtmLoader_UserCode.h
  29. 155 8
      Module/mod_vtmloader/VtmLoader_client_g.h
  30. 96 7
      Module/mod_vtmloader/VtmLoader_def_g.h
  31. 87 9
      Module/mod_vtmloader/VtmLoader_server_g.h
  32. 16 4
      Module/mod_vtmloader/mod_vtmloader.cpp
  33. 33 13
      Module/mod_vtmloader/mod_vtmloader.h
  34. 50 3
      Module/mod_vtmloader/vtmloader.xml
  35. 1 0
      addin/cfg/UserCodeToMsgTip.ini

+ 2 - 1
CMakeLists.txt

@@ -284,7 +284,7 @@ if(CONAN_CACHE_CLEAR)
 	conan_local_remove()
 endif(CONAN_CACHE_CLEAR)
 
-conan_cmake_run(REQUIRES RvcFramework/1.10.1.3@LR04.02_FrameworkLib/dev
+conan_cmake_run(REQUIRES RvcFramework/1.2.0.88@LR04.02_FrameworkLib/dev
 	Audio/2023.0509.01@LR04.02_MediaRes/testing
 BASIC_SETUP CMAKE_TARGETS)
 
@@ -684,6 +684,7 @@ install(DIRECTORY "${CMAKE_SOURCE_DIR}/addin/cfg" DESTINATION "${PACK_INSTALL_PR
 install(FILES ${CMAKE_BINARY_DIR}/env.ini DESTINATION ${RVC_CONFIG_PATH} COMPONENT scripts)
 
 set(active_txt_file "${CMAKE_BINARY_DIR}/active.txt")
+message(STATUS "RVC_VERSION = ${RVC_VERSION}, RVC_VERSION_MAJOR=${RVC_VERSION_MAJOR}, RVC_VERSION_MINOR=${RVC_VERSION_MINOR}, RVC_VERSION_REVISION=${RVC_VERSION_REVISION}, RVC_VERSION_SUFFIX=${RVC_VERSION_SUFFIX}")
 file(WRITE ${active_txt_file} "${RVC_VERSION}")
 install(FILES ${active_txt_file} DESTINATION ${PACK_INSTALL_PREFIX_VERSION} COMPONENT scripts)
 # Install RunInfo Directory

+ 4 - 0
Module/CMakeLists.txt

@@ -72,6 +72,10 @@ macro(add_module_libraries _module_prefix _module_name _module_version)
         ${CMAKE_CURRENT_BINARY_DIR}/version.rc
         @ONLY)
         set(${_module_prefix}_SRCS ${${_module_prefix}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
+    else()
+        add_definitions(
+        -DRVC_VERSION_STR="${RVC_VERSION}"
+    )
     endif(WIN32)
 
     set(${_module_name}_TEST_SRCS)

+ 1 - 0
Module/mod_CardIssuerStand/CMakeLists.txt

@@ -16,6 +16,7 @@ target_include_directories(${MODULE_NAME} PRIVATE
 	${ModuleCommonHeadPath}
 	${MODULE_BASE_DIR}/mod_heartbeat
 	${MODULE_BASE_DIR}/mod_accessauth
+	${MODULE_BASE_DIR}/mod_cardissuer
 	${RVC_OTHER_DEPENDENIES_DIR}/libpublicFun
 	${CONAN_INCLUDE_DIRS_OPENSSL}
 	${CONAN_INCLUDE_DIRS_JSONCPP}

+ 0 - 449
Module/mod_CardIssuerStand/CardIssuer.xml

@@ -1,449 +0,0 @@
-<?xml version="1.0" encoding="gb2312" ?>
-<entity name="CardIssuer">
-	<class name="CardIssuerService" overlap="true" exclusive="false">	
-		<twoway name="Insert" overlap="true">
-			<req>
-				<param name="aid" type="string"/>
-			</req>
-			<res>
-			</res>			
-		</twoway>
-		<oneway name="CancelInsert" overlap="true">			
-		</oneway>
-		<oneway name="InsertWaitMore" overlap="true">			
-		</oneway>					
-		<twoway name="Read" overlap="true">
-			<req>
-				<param name="aid" type="string"/>
-				<param name="reserved1" type="int"/>
-				<param name="reserved2" type="int"/>
-				<param name="reserved3" type="string"/>
-				<param name="reserved4" type="string"/>
-			</req>
-			<res>
-				<param name="track1" type="string"/>
-				<param name="track2" type="string"/>
-				<param name="track3" type="string"/>
-				<param name="ICType" type="int"/>
-				<param name="ICData" type="string"/>
-				<param name="status" type="int" />
-				<param name="t2Account" type="string" />
-				<param name="t2Region" type="string" />
-				<param name="t2CardSerial" type="string" />
-				<param name="t2CVC" type="string" />
-				<param name="t2ExpireDate" type="string" />
-				<param name="reserved1" type="int"/>
-				<param name="reserved2" type="int"/>
-				<param name="reserved3" type="string"/>
-				<param name="reserved4" type="string"/>
-			</res>
-		</twoway>			
-		<twoway name="Capture" overlap="true">
-			<req>
-			</req>
-			<res>
-			</res>			
-		</twoway>
-		<twoway name="Eject" overlap="true">
-			<req>
-			</req>
-			<res>
-			</res>			
-		</twoway>						
-		<twoway name="PreOnline" overlap="true">
-			<req>
-				<param name="businessData" type="string"/>
-				<param name="reserved1" type="string"/>
-				<param name="reserved2" type="string"/>
-			</req>
-			<res>
-				<param name="result" type="string"/>
-			</res>			
-		</twoway>
-		<twoway name="PostOnline" overlap="true">
-			<req>
-				<param name="data" type="string"/>
-			</req>
-			<res>
-				<param name="result" type="string"/>
-			</res>			
-		</twoway>
-		<oneway name="Exit" overlap="true">			
-		</oneway>			
-		<twoway name="Issue" overlap="true">
-			<req>
-			</req>
-			<res>
-			</res>			
-		</twoway>				
-		<twoway name="GetMaterialCount" overlap="true">
-			<req>
-			</req>
-			<res>
-				<param name="remains" type="int"/>
-				<param name="captured" type="int"/>
-				<param name="issued" type="int"/>
-				<param name="mixed" type="int"/>
-			</res>			
-		</twoway>
-		<twoway name="SetMaterialCount" overlap="true">
-			<req>
-				<param name="remains" type="int"/>
-				<param name="captured" type="int"/>
-				<param name="issued" type="int"/>
-				<param name="bRemains" type="bool"/>
-				<param name="bCaptured" type="bool"/>				
-				<param name="bIssued" type="bool"/>
-				<param name="mixed" type="int"/>
-				<param name="bMixed" type="bool"/>
-			</req>
-			<res>
-			</res>			
-		</twoway>
-		<oneway name="SetIssueFlag" overlap="true">			
-		</oneway>
-		<twoway name="ReadEx" overlap="true">
-			<req>
-				<param name="aid" type="string"/>
-				<param name="reserved1" type="string"/>
-				<param name="reserved2" type="string"/>
-			</req>
-			<res>
-				<param name="track1" type="string"/>
-				<param name="track2" type="string"/>
-				<param name="track3" type="string"/>
-				<param name="CDType" type="int"/>
-				<param name="ICType" type="int"/>
-				<param name="CMBType" type="int"/>
-				<param name="ICData" type="string"/>
-				<param name="status" type="int" />
-				<param name="t2Account" type="string" />
-				<param name="t2Region" type="string" />
-				<param name="t2CardSerial" type="string" />
-				<param name="t2CVC" type="string" />
-				<param name="t2ExpireDate" type="string" />
-				<param name="reserved1" type="string"/>
-				<param name="reserved2" type="string"/>
-			</res>
-		</twoway>
-		<twoway name="QueryCardInfo" overlap="true">
-			<req>
-			</req>
-			<res>
-				<param name="position" type="int"/>
-				<param name="reserved1" type="int"/>
-				<param name="reserved2" type="string"/>
-			</res>			
-		</twoway>
-		<twoway name="WriteTrack" overlap="true">
-			<req>
-				<param name="mode" type="int"/>
-				<param name="co" type="int"/>
-				<param name="track1" type="wstring"/>
-				<param name="track2" type="wstring"/>
-				<param name="track3" type="wstring"/>
-				<param name="reserved" type="wstring"/>
-			</req>
-			<res>
-				<param name="result" type="int"/>
-				<param name="reserved1" type="int"/>
-				<param name="reserved2" type="string"/>
-			</res>
-		</twoway>
-		<twoway name="GetMaterialCountEx" overlap="true">
-			<req>
-				<param name="GetHopper" type="array_int"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>		
-			</req>
-			<res>
-				<param name="captured" type="int"/>
-				<param name="hasHopper" type="array_int"/>
-				<param name="CardBoxNo" type="array_string"/>
-				<param name="PsbCode" type="array_string"/>
-				<param name="PsbName" type="array_string"/>
-				<param name="Maintainer" type="array_string"/>
-				<param name="MaintainTime" type="array_string"/>
-				<param name="CardInit" type="array_int"/>
-				<param name="CardPercent" type="array_int"/>
-				<param name="remains" type="array_int"/>
-				<param name="issued" type="array_int"/>
-				<param name="mixed" type="array_int"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>
-			</res>			
-		</twoway>
-		<twoway name="SetMaterialCountEx" overlap="true">
-			<req>
-				<param name="SetHopper" type="array_int"/>
-				<param name="SetCaptured" type="int"/>
-				<param name="captured" type="int"/>
-				<param name="CardBoxNo" type="array_string"/>
-				<param name="PsbCode" type="array_string"/>
-				<param name="PsbName" type="array_string"/>
-				<param name="Maintainer" type="array_string"/>
-				<param name="MaintainTime" type="array_string"/>
-				<param name="CardInit" type="array_int"/>
-				<param name="CardPercent" type="array_int"/>
-				<param name="remains" type="array_int"/>
-				<param name="issued" type="array_int"/>
-				<param name="mixed" type="array_int"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>
-			</req>
-			<res>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>	
-			</res>			
-		</twoway>
-		<twoway name="SetSomeFlag" overlap="true">
-			<req>
-				<param name="IssueBusiness" type="int"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>					
-			</req>
-			<res>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>
-			</res>				
-		</twoway>
-		<twoway name="GetSCIInfo" overlap="true">
-			<req>
-			</req>
-			<res>
-				<param name="connected" type="int"/>
-				<param name="DevSN" type="string"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>
-			</res>			
-		</twoway>
-		<twoway name="IssueEx" overlap="true">
-			<req>
-				<param name="hopper" type="int"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>			
-			</req>
-			<res>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>					
-			</res>			
-		</twoway>
-		<twoway name="OpenSafeLock" overlap="true">
-			<req>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>			
-			</req>
-			<res>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>					
-			</res>			
-		</twoway>
-		<twoway name="SAMICCommand" overlap="true">
-			<req>
-				<param name="cmdType" type="int"/>
-				<param name="param1" type="array_int"/>
-				<param name="param2" type="array_string"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>			
-			</req>
-			<res>
-				<param name="ret1" type="array_int"/>
-				<param name="ret2" type="array_string"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>					
-			</res>			
-		</twoway>
-		<twoway name="QueryPrinterStatus" overlap="true">
-			<req>
-				<param name="param1" type="array_int"/>
-				<param name="param2" type="array_string"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>			
-			</req>
-			<res>
-				<param name="ret1" type="array_int"/>
-				<param name="ret2" type="array_string"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>					
-			</res>			
-		</twoway>
-		<twoway name="Print" overlap="true">
-			<req>
-				<param name="data1" type="blob"/>
-				<param name="data2" type="blob"/>
-				<param name="data3" type="blob"/>
-				<param name="data4" type="blob"/>
-				<param name="data5" type="blob"/>
-				<param name="data6" type="blob"/>				
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>			
-			</req>
-			<res>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>					
-			</res>			
-		</twoway>
-		<twoway name="QuerySCIList" overlap="true">
-			<req>			
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>			
-			</req>
-			<res>
-				<param name="sciNo" type="array_string"/>
-        <param name="arrMateriel" type="array_string"/>
-        <param name="CardGroove" type="array_string"/>
-        <param name="CardBoxNo" type="array_string"/>
-        <param name="PsbCode" type="array_string"/>
-        <param name="PsbName" type="array_string"/>
-        <param name="CardInit" type="array_uint"/>
-        <param name="CardRemains" type="array_uint"/>
-        <param name="CardIssued" type="array_uint"/>
-        <param name="CardMixed" type="array_uint"/>
-        <param name="CardPercent" type="array_uint"/>
-        <param name="Maintainer" type="array_string"/>
-        <param name="MaintainTime" type="array_string"/>
-        <param name="UpdateTime" type="array_string"/>				
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>					
-			</res>			
-		</twoway>		
-		<twoway name="BindSCI" overlap="true">
-			<req>
-				<param name="type" type="int"/>
-				<param name="sciNo" type="string" />			
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>			
-			</req>
-			<res>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>					
-			</res>			
-		</twoway>
-		<twoway name="PreOnlineOnStore" overlap="true">
-			<req>
-				<param name="account" type="string"/>
-				<param name="termNo" type="string"/>
-				<param name="businessData" type="string"/>
-				<param name="slot" type="int"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_int"/>
-				<param name="reserved3" type="array_string"/>
-				<param name="reserved4" type="array_string"/>
-			</req>
-			<res>
-				<param name="findCard" type="int"/>
-				<param name="cardPos" type="int"/>
-				<param name="result" type="string"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_int"/>
-				<param name="reserved3" type="array_string"/>
-				<param name="reserved4" type="array_string"/>				
-			</res>			
-		</twoway>
-		<twoway name="NotifyPreonline" overlap="true">
-			<req>
-				<param name="findCard" type="int"/>
-				<param name="cardPos" type="int"/>			
-				<param name="errCode" type="int"/>			
-				<param name="account" type="string"/>
-				<param name="termNo" type="string"/>
-				<param name="data" type="string"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_int"/>
-				<param name="reserved3" type="array_string"/>
-				<param name="reserved4" type="array_string"/>
-			</req>
-			<res>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_int"/>
-				<param name="reserved3" type="array_string"/>
-				<param name="reserved4" type="array_string"/>				
-			</res>			
-		</twoway>
-		<twoway name="QueryCardInfoOnStore" overlap="true">
-			<req>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_int"/>
-				<param name="reserved3" type="array_string"/>
-				<param name="reserved4" type="array_string"/>
-			</req>
-			<res>
-				<param name="findCard" type="int"/>
-				<param name="cardPos" type="int"/>					
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_int"/>
-				<param name="reserved3" type="array_string"/>
-				<param name="reserved4" type="array_string"/>				
-			</res>			
-		</twoway>
-		<twoway name="GetAddCardInfo" overlap="true">
-			<req>
-				<param name="isSync" type="int"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_int"/>
-				<param name="reserved3" type="array_string"/>
-				<param name="reserved4" type="array_string"/>
-			</req>
-			<res>
-				<param name="count" type="int"/>
-				<param name="slot" type="array_int"/>
-				<param name="account" type="array_string"/>							
-				<param name="cardSerial" type="array_string"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_int"/>
-				<param name="reserved3" type="array_string"/>
-				<param name="reserved4" type="array_string"/>				
-			</res>			
-		</twoway>		
-		<twoway name="PrintCardImmediately" overlap="true">
-			<req>
-				<param name="formFile" type="string"/>
-				<param name="printData" type="string"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_int"/>
-				<param name="reserved3" type="array_string"/>
-				<param name="reserved4" type="array_string"/>
-			</req>
-			<res>
-				<param name="ret" type="int"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_int"/>
-				<param name="reserved3" type="array_string"/>
-				<param name="reserved4" type="array_string"/>				
-			</res>			
-		</twoway>
-		<twoway name="QueryCIStatus" overlap="true">
-			<req>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_int"/>
-				<param name="reserved3" type="array_string"/>
-				<param name="reserved4" type="array_string"/>
-			</req>
-			<res>
-				<param name="retainBin" type="int"/>
-				<param name="hopperNo" type="array_int"/>
-				<param name="hopperStatus" type="array_int"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_int"/>
-				<param name="reserved3" type="array_string"/>
-				<param name="reserved4" type="array_string"/>				
-			</res>			
-		</twoway>																		
-		<twoway name="GetDevInfo" overlap="true" method_id="65535">
-			<req>
-			</req>
-			<res>
-				<param name="type" type="string" />
-				<param name="model" type="string" />
-				<param name="version" type="string" />
-				<param name="state" type="int" />
-			</res>			
-		</twoway>							
-	</class>
-	<message name="FetchCard">
-			<param name="status" type="int"/>
-	</message>
-	<message name="SCIConnect">
-			<param name="status" type="int"/>
-	</message>			
-</entity>

+ 10 - 4
Module/mod_CardIssuerStand/CardIssuer_UserErrorCode.h

@@ -37,7 +37,7 @@
 #define CardIssuer_UserErrorCode_NoCardRemains_Hopper6				(CardIssuer_UserErrorCode_Start + 30)	//卡箱6剩余卡片计数为0(空)
 #define CardIssuer_UserErrorCode_LogInfoAboutTerm					(CardIssuer_UserErrorCode_Start + 31)	//告警上送终端模块信息
 #define CardIssuer_UserErrorCode_KebaDeviceInfo						(CardIssuer_UserErrorCode_Start + 32)	//告警上送科堡机型信息
-//#define CardIssuer_UserErrorCode_RootInfo							(CardIssuer_UserErrorCode_Start + 33)  //root中版本批次号
+#define CardIssuer_UserErrorCode_RootInfo							(CardIssuer_UserErrorCode_Start + 33)  //root中版本批次号
 #define CardIssuer_UserErrorCode_Adapter_Version					(CardIssuer_UserErrorCode_Start + 34)//告警适配器版本号(长城卡库是将驱动版本号告警上来)
 #define CardIssuer_UserErrorCode_DevOpenTime						(CardIssuer_UserErrorCode_Start + 35) //统计DevOpen时长
 
@@ -53,6 +53,7 @@
 #define CardIssuer_UserErrorCode_PrintCardFaceRightNow				(CardIssuer_UserErrorCode_Start + 44) //卡面打印
 #define CardIssuer_UserErrorCode_InsertCardSucceed					(CardIssuer_UserErrorCode_Start + 45) //前端插卡
 
+#define CardIssuer_UserErrorCode_StandEntityInFailState				(CardIssuer_UserErrorCode_Start + 46)	//卡机处于故障态,请稍后重试,重试还有问题请联系厂商维护
 
 #define CardIssuer_UserErrorCode_CardStore_SlotNum					(CardIssuer_UserErrorCode_Start + 49) //记录卡库容量
 #define CardIssuer_UserErrorCode_Invoke_Access_IniDev_Failed		(CardIssuer_UserErrorCode_Start + 50) //建立加密通道时,调用准入接口失败
@@ -91,7 +92,7 @@
 #define CardIssuer_UserErrorCode_AddCardToStoreStepFirst			(CardIssuer_UserErrorCode_Start + 74)	//加卡第一步,从卡箱移到读卡器
 #define CardIssuer_UserErrorCode_AddCardToStoreStepLast				(CardIssuer_UserErrorCode_Start + 75)	//加卡第二步,从读卡器移到卡槽
 #define CardIssuer_UserErrorCode_ReadAccount_Data_Error				(CardIssuer_UserErrorCode_Start + 76)	//加卡过程,卡片数据有误
-//#define CardIssuer_UserErrorCode_FindFirstEmptySlot_Failed			(CardIssuer_UserErrorCode_Start + 77)	//加卡过程,未找到空卡槽
+#define CardIssuer_UserErrorCode_AddCardToStoreStepFirst_Failed		(CardIssuer_UserErrorCode_Start + 77)	//加卡过程,移卡到卡槽失败
 #define CardIssuer_UserErrorCode_NotifyPreonline_Wait_TooLong		(CardIssuer_UserErrorCode_Start + 78)	//NotifyPreonline收到时已经超过等待时间
 
 //临时 后续去除
@@ -183,7 +184,7 @@
 #define CardIssuer_UserErrorCode_HopperCardMixed					(CardIssuer_UserErrorCode_Start + 164)	//卡箱中的卡片放置不对
 #define CardIssuer_UserErrorCode_CardActive_CardStore_OffLine		(CardIssuer_UserErrorCode_Start + 165)	//跨机时卡库不在线
 #define CardIssuer_UserErrorCode_ReadByRF							(CardIssuer_UserErrorCode_Start + 166)	//非接读取成功
-#define CardIssuer_UserErrorCode_CardActive_CardStore_Issuing		(CardIssuer_UserErrorCode_Start + 167)	//跨机时卡库正在本地领卡
+#define CardIssuer_UserErrorCode_CardActive_CardStore_Issuing		(CardIssuer_UserErrorCode_Start + 167)	//跨机时卡库正在本地领卡或加卡
 #define CardIssuer_UserErrorCode_CardActive_CardStore_CallByOther	(CardIssuer_UserErrorCode_Start + 168)	//跨机时卡库正在其他VTM调用
 #define CardIssuer_UserErrorCode_ReadAccount_Cost_Time				(CardIssuer_UserErrorCode_Start + 169)	//ReadAccount耗时
 #define CardIssuer_UserErrorCode_CardActive_CardIssuer_InFaultState	(CardIssuer_UserErrorCode_Start + 170)	//卡库收到跨机请求时卡机未成功打开
@@ -202,4 +203,9 @@
 #define CardIssuer_UserErrorCode_Dev_CardJammed				(CardIssuer_UserErrorCode_Start + 189)//塞卡
 #define CardIssuer_UserErrorCode_Dev_SlotJammed				(CardIssuer_UserErrorCode_Start + 190)//卡槽堵塞
 #define CardIssuer_UserErrorCode_Dev_SlotInvalid			(CardIssuer_UserErrorCode_Start + 191)//卡槽地址非法(越界等)
-#endif //_CARDISSUER_USER_ERRORCODE_H
+
+//盘库异常明细报错
+#define CardIssuer_UserErrorCode_KakuPanKu_MoveCardFromSlot_Failed				(CardIssuer_UserErrorCode_Start + 200)	//卡库盘库失败,卡槽移卡失败
+#define CardIssuer_UserErrorCode_KakuPanKu_ReadAccount_Failed					(CardIssuer_UserErrorCode_Start + 201)	//卡库盘库失败,读卡失败吞卡
+#define CardIssuer_UserErrorCode_KakuPanKu_MoveCardToSlot_Failed				(CardIssuer_UserErrorCode_Start + 202)	//卡库盘库失败,卡移回卡槽失败
+#endif //_CARDISSUERSTAND_USER_ERRORCODE_H

+ 0 - 1607
Module/mod_CardIssuerStand/CardIssuer_client_g.h

@@ -1,1607 +0,0 @@
-
-#ifndef __CARDISSUER_CLIENT_G_H
-#define __CARDISSUER_CLIENT_G_H
-
-#pragma once
-
-// This code is generated by spgen tool!
-
-#include "CardIssuer_def_g.h"
-
-namespace CardIssuer {
-class CardIssuerService_ClientBase : public CClientSessionBase {
-public:
-	explicit CardIssuerService_ClientBase(CEntityBase *pEntity) : m_pEntityBase(pEntity), m_bSysManaged(false) {}
-
-	CardIssuerService_ClientBase* operator () (const linkContext &curLink) 
-	{
-		m_context = curLink;
-		return this;
-	}
-
-protected:
-	virtual ~CardIssuerService_ClientBase()
-	{
-		/// override by user
-	}
-public:
-
-	void OnConnectSucceed()
-	{
-		bSessionClosed = false;
-	}
-	void OnClose(ErrorCodeEnum)
-	{
-		Dbg("session closed.");
-		bSessionClosed = true;
-	}
-	bool QuerySessionClosed()
-	{
-		return bSessionClosed;
-	}
-	ErrorCodeEnum Connect(CSmartPointer<IAsynWaitSp> &spAsyncWait)
-	{
-		CSmartPointer<IEntityFunction> pFunc = m_pEntityBase->GetFunction();
-		ErrorCodeEnum Error = pFunc->ConnectRemoteEntity(this, "CardIssuer", "CardIssuerService", spAsyncWait);
-		if (Error == Error_Succeed) {
-			m_bSysManaged = true;
-			bSessionClosed = false;
-		}
-		return Error;
-	}
-	ErrorCodeEnum Connect()
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Connect(spAsyncWait);
-		if (Error == Error_Succeed) {
-			Error = spAsyncWait->WaitAnswer();
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum Insert(CardIssuerService_Insert_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_Insert, CardIssuerService_MethodSignature_Insert, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum Insert(CardIssuerService_Insert_Req &Req, CardIssuerService_Insert_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Insert(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum Insert(CardIssuerService_Insert_Req &Req, CardIssuerService_Insert_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Insert(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum Insert(CardIssuerService_Insert_Req &Req, CardIssuerService_Insert_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Insert(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum CancelInsert()
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->OnewayCall(CardIssuerService_Method_CancelInsert, CardIssuerService_MethodSignature_CancelInsert, m_context);
-		m_context.clear();
-		return ret;
-	}
-
-	ErrorCodeEnum InsertWaitMore()
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->OnewayCall(CardIssuerService_Method_InsertWaitMore, CardIssuerService_MethodSignature_InsertWaitMore, m_context);
-		m_context.clear();
-		return ret;
-	}
-
-	ErrorCodeEnum Read(CardIssuerService_Read_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_Read, CardIssuerService_MethodSignature_Read, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum Read(CardIssuerService_Read_Req &Req, CardIssuerService_Read_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Read(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum Read(CardIssuerService_Read_Req &Req, CardIssuerService_Read_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Read(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum Read(CardIssuerService_Read_Req &Req, CardIssuerService_Read_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Read(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum Capture(CardIssuerService_Capture_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_Capture, CardIssuerService_MethodSignature_Capture, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum Capture(CardIssuerService_Capture_Req &Req, CardIssuerService_Capture_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Capture(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum Capture(CardIssuerService_Capture_Req &Req, CardIssuerService_Capture_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Capture(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum Capture(CardIssuerService_Capture_Req &Req, CardIssuerService_Capture_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Capture(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum Eject(CardIssuerService_Eject_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_Eject, CardIssuerService_MethodSignature_Eject, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum Eject(CardIssuerService_Eject_Req &Req, CardIssuerService_Eject_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Eject(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum Eject(CardIssuerService_Eject_Req &Req, CardIssuerService_Eject_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Eject(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum Eject(CardIssuerService_Eject_Req &Req, CardIssuerService_Eject_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Eject(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum PreOnline(CardIssuerService_PreOnline_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_PreOnline, CardIssuerService_MethodSignature_PreOnline, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum PreOnline(CardIssuerService_PreOnline_Req &Req, CardIssuerService_PreOnline_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = PreOnline(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum PreOnline(CardIssuerService_PreOnline_Req &Req, CardIssuerService_PreOnline_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = PreOnline(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum PreOnline(CardIssuerService_PreOnline_Req &Req, CardIssuerService_PreOnline_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = PreOnline(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum PostOnline(CardIssuerService_PostOnline_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_PostOnline, CardIssuerService_MethodSignature_PostOnline, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum PostOnline(CardIssuerService_PostOnline_Req &Req, CardIssuerService_PostOnline_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = PostOnline(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum PostOnline(CardIssuerService_PostOnline_Req &Req, CardIssuerService_PostOnline_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = PostOnline(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum PostOnline(CardIssuerService_PostOnline_Req &Req, CardIssuerService_PostOnline_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = PostOnline(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum Exit()
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->OnewayCall(CardIssuerService_Method_Exit, CardIssuerService_MethodSignature_Exit, m_context);
-		m_context.clear();
-		return ret;
-	}
-
-	ErrorCodeEnum Issue(CardIssuerService_Issue_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_Issue, CardIssuerService_MethodSignature_Issue, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum Issue(CardIssuerService_Issue_Req &Req, CardIssuerService_Issue_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Issue(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum Issue(CardIssuerService_Issue_Req &Req, CardIssuerService_Issue_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Issue(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum Issue(CardIssuerService_Issue_Req &Req, CardIssuerService_Issue_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Issue(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum GetMaterialCount(CardIssuerService_GetMaterialCount_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_GetMaterialCount, CardIssuerService_MethodSignature_GetMaterialCount, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum GetMaterialCount(CardIssuerService_GetMaterialCount_Req &Req, CardIssuerService_GetMaterialCount_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetMaterialCount(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetMaterialCount(CardIssuerService_GetMaterialCount_Req &Req, CardIssuerService_GetMaterialCount_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetMaterialCount(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetMaterialCount(CardIssuerService_GetMaterialCount_Req &Req, CardIssuerService_GetMaterialCount_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetMaterialCount(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum SetMaterialCount(CardIssuerService_SetMaterialCount_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_SetMaterialCount, CardIssuerService_MethodSignature_SetMaterialCount, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum SetMaterialCount(CardIssuerService_SetMaterialCount_Req &Req, CardIssuerService_SetMaterialCount_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = SetMaterialCount(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum SetMaterialCount(CardIssuerService_SetMaterialCount_Req &Req, CardIssuerService_SetMaterialCount_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = SetMaterialCount(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum SetMaterialCount(CardIssuerService_SetMaterialCount_Req &Req, CardIssuerService_SetMaterialCount_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = SetMaterialCount(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum SetIssueFlag()
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->OnewayCall(CardIssuerService_Method_SetIssueFlag, CardIssuerService_MethodSignature_SetIssueFlag, m_context);
-		m_context.clear();
-		return ret;
-	}
-
-	ErrorCodeEnum ReadEx(CardIssuerService_ReadEx_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_ReadEx, CardIssuerService_MethodSignature_ReadEx, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum ReadEx(CardIssuerService_ReadEx_Req &Req, CardIssuerService_ReadEx_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = ReadEx(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum ReadEx(CardIssuerService_ReadEx_Req &Req, CardIssuerService_ReadEx_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = ReadEx(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum ReadEx(CardIssuerService_ReadEx_Req &Req, CardIssuerService_ReadEx_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = ReadEx(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum QueryCardInfo(CardIssuerService_QueryCardInfo_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_QueryCardInfo, CardIssuerService_MethodSignature_QueryCardInfo, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum QueryCardInfo(CardIssuerService_QueryCardInfo_Req &Req, CardIssuerService_QueryCardInfo_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = QueryCardInfo(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum QueryCardInfo(CardIssuerService_QueryCardInfo_Req &Req, CardIssuerService_QueryCardInfo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = QueryCardInfo(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum QueryCardInfo(CardIssuerService_QueryCardInfo_Req &Req, CardIssuerService_QueryCardInfo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = QueryCardInfo(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum WriteTrack(CardIssuerService_WriteTrack_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_WriteTrack, CardIssuerService_MethodSignature_WriteTrack, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum WriteTrack(CardIssuerService_WriteTrack_Req &Req, CardIssuerService_WriteTrack_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = WriteTrack(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum WriteTrack(CardIssuerService_WriteTrack_Req &Req, CardIssuerService_WriteTrack_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = WriteTrack(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum WriteTrack(CardIssuerService_WriteTrack_Req &Req, CardIssuerService_WriteTrack_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = WriteTrack(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum GetMaterialCountEx(CardIssuerService_GetMaterialCountEx_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_GetMaterialCountEx, CardIssuerService_MethodSignature_GetMaterialCountEx, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum GetMaterialCountEx(CardIssuerService_GetMaterialCountEx_Req &Req, CardIssuerService_GetMaterialCountEx_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetMaterialCountEx(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetMaterialCountEx(CardIssuerService_GetMaterialCountEx_Req &Req, CardIssuerService_GetMaterialCountEx_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetMaterialCountEx(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetMaterialCountEx(CardIssuerService_GetMaterialCountEx_Req &Req, CardIssuerService_GetMaterialCountEx_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetMaterialCountEx(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum SetMaterialCountEx(CardIssuerService_SetMaterialCountEx_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_SetMaterialCountEx, CardIssuerService_MethodSignature_SetMaterialCountEx, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum SetMaterialCountEx(CardIssuerService_SetMaterialCountEx_Req &Req, CardIssuerService_SetMaterialCountEx_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = SetMaterialCountEx(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum SetMaterialCountEx(CardIssuerService_SetMaterialCountEx_Req &Req, CardIssuerService_SetMaterialCountEx_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = SetMaterialCountEx(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum SetMaterialCountEx(CardIssuerService_SetMaterialCountEx_Req &Req, CardIssuerService_SetMaterialCountEx_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = SetMaterialCountEx(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum SetSomeFlag(CardIssuerService_SetSomeFlag_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_SetSomeFlag, CardIssuerService_MethodSignature_SetSomeFlag, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum SetSomeFlag(CardIssuerService_SetSomeFlag_Req &Req, CardIssuerService_SetSomeFlag_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = SetSomeFlag(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum SetSomeFlag(CardIssuerService_SetSomeFlag_Req &Req, CardIssuerService_SetSomeFlag_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = SetSomeFlag(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum SetSomeFlag(CardIssuerService_SetSomeFlag_Req &Req, CardIssuerService_SetSomeFlag_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = SetSomeFlag(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum GetSCIInfo(CardIssuerService_GetSCIInfo_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_GetSCIInfo, CardIssuerService_MethodSignature_GetSCIInfo, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum GetSCIInfo(CardIssuerService_GetSCIInfo_Req &Req, CardIssuerService_GetSCIInfo_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetSCIInfo(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetSCIInfo(CardIssuerService_GetSCIInfo_Req &Req, CardIssuerService_GetSCIInfo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetSCIInfo(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetSCIInfo(CardIssuerService_GetSCIInfo_Req &Req, CardIssuerService_GetSCIInfo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetSCIInfo(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum IssueEx(CardIssuerService_IssueEx_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_IssueEx, CardIssuerService_MethodSignature_IssueEx, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum IssueEx(CardIssuerService_IssueEx_Req &Req, CardIssuerService_IssueEx_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = IssueEx(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum IssueEx(CardIssuerService_IssueEx_Req &Req, CardIssuerService_IssueEx_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = IssueEx(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum IssueEx(CardIssuerService_IssueEx_Req &Req, CardIssuerService_IssueEx_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = IssueEx(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum OpenSafeLock(CardIssuerService_OpenSafeLock_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_OpenSafeLock, CardIssuerService_MethodSignature_OpenSafeLock, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum OpenSafeLock(CardIssuerService_OpenSafeLock_Req &Req, CardIssuerService_OpenSafeLock_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = OpenSafeLock(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum OpenSafeLock(CardIssuerService_OpenSafeLock_Req &Req, CardIssuerService_OpenSafeLock_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = OpenSafeLock(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum OpenSafeLock(CardIssuerService_OpenSafeLock_Req &Req, CardIssuerService_OpenSafeLock_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = OpenSafeLock(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum SAMICCommand(CardIssuerService_SAMICCommand_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_SAMICCommand, CardIssuerService_MethodSignature_SAMICCommand, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum SAMICCommand(CardIssuerService_SAMICCommand_Req &Req, CardIssuerService_SAMICCommand_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = SAMICCommand(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum SAMICCommand(CardIssuerService_SAMICCommand_Req &Req, CardIssuerService_SAMICCommand_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = SAMICCommand(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum SAMICCommand(CardIssuerService_SAMICCommand_Req &Req, CardIssuerService_SAMICCommand_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = SAMICCommand(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum QueryPrinterStatus(CardIssuerService_QueryPrinterStatus_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_QueryPrinterStatus, CardIssuerService_MethodSignature_QueryPrinterStatus, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum QueryPrinterStatus(CardIssuerService_QueryPrinterStatus_Req &Req, CardIssuerService_QueryPrinterStatus_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = QueryPrinterStatus(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum QueryPrinterStatus(CardIssuerService_QueryPrinterStatus_Req &Req, CardIssuerService_QueryPrinterStatus_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = QueryPrinterStatus(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum QueryPrinterStatus(CardIssuerService_QueryPrinterStatus_Req &Req, CardIssuerService_QueryPrinterStatus_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = QueryPrinterStatus(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum Print(CardIssuerService_Print_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_Print, CardIssuerService_MethodSignature_Print, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum Print(CardIssuerService_Print_Req &Req, CardIssuerService_Print_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Print(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum Print(CardIssuerService_Print_Req &Req, CardIssuerService_Print_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Print(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum Print(CardIssuerService_Print_Req &Req, CardIssuerService_Print_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Print(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum QuerySCIList(CardIssuerService_QuerySCIList_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_QuerySCIList, CardIssuerService_MethodSignature_QuerySCIList, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum QuerySCIList(CardIssuerService_QuerySCIList_Req &Req, CardIssuerService_QuerySCIList_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = QuerySCIList(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum QuerySCIList(CardIssuerService_QuerySCIList_Req &Req, CardIssuerService_QuerySCIList_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = QuerySCIList(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum QuerySCIList(CardIssuerService_QuerySCIList_Req &Req, CardIssuerService_QuerySCIList_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = QuerySCIList(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum BindSCI(CardIssuerService_BindSCI_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_BindSCI, CardIssuerService_MethodSignature_BindSCI, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum BindSCI(CardIssuerService_BindSCI_Req &Req, CardIssuerService_BindSCI_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = BindSCI(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum BindSCI(CardIssuerService_BindSCI_Req &Req, CardIssuerService_BindSCI_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = BindSCI(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum BindSCI(CardIssuerService_BindSCI_Req &Req, CardIssuerService_BindSCI_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = BindSCI(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum PreOnlineOnStore(CardIssuerService_PreOnlineOnStore_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_PreOnlineOnStore, CardIssuerService_MethodSignature_PreOnlineOnStore, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum PreOnlineOnStore(CardIssuerService_PreOnlineOnStore_Req &Req, CardIssuerService_PreOnlineOnStore_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = PreOnlineOnStore(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum PreOnlineOnStore(CardIssuerService_PreOnlineOnStore_Req &Req, CardIssuerService_PreOnlineOnStore_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = PreOnlineOnStore(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum PreOnlineOnStore(CardIssuerService_PreOnlineOnStore_Req &Req, CardIssuerService_PreOnlineOnStore_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = PreOnlineOnStore(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum NotifyPreonline(CardIssuerService_NotifyPreonline_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_NotifyPreonline, CardIssuerService_MethodSignature_NotifyPreonline, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum NotifyPreonline(CardIssuerService_NotifyPreonline_Req &Req, CardIssuerService_NotifyPreonline_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = NotifyPreonline(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum NotifyPreonline(CardIssuerService_NotifyPreonline_Req &Req, CardIssuerService_NotifyPreonline_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = NotifyPreonline(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum NotifyPreonline(CardIssuerService_NotifyPreonline_Req &Req, CardIssuerService_NotifyPreonline_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = NotifyPreonline(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum QueryCardInfoOnStore(CardIssuerService_QueryCardInfoOnStore_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_QueryCardInfoOnStore, CardIssuerService_MethodSignature_QueryCardInfoOnStore, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum QueryCardInfoOnStore(CardIssuerService_QueryCardInfoOnStore_Req &Req, CardIssuerService_QueryCardInfoOnStore_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = QueryCardInfoOnStore(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum QueryCardInfoOnStore(CardIssuerService_QueryCardInfoOnStore_Req &Req, CardIssuerService_QueryCardInfoOnStore_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = QueryCardInfoOnStore(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum QueryCardInfoOnStore(CardIssuerService_QueryCardInfoOnStore_Req &Req, CardIssuerService_QueryCardInfoOnStore_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = QueryCardInfoOnStore(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum GetAddCardInfo(CardIssuerService_GetAddCardInfo_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_GetAddCardInfo, CardIssuerService_MethodSignature_GetAddCardInfo, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum GetAddCardInfo(CardIssuerService_GetAddCardInfo_Req &Req, CardIssuerService_GetAddCardInfo_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetAddCardInfo(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetAddCardInfo(CardIssuerService_GetAddCardInfo_Req &Req, CardIssuerService_GetAddCardInfo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetAddCardInfo(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetAddCardInfo(CardIssuerService_GetAddCardInfo_Req &Req, CardIssuerService_GetAddCardInfo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetAddCardInfo(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum PrintCardImmediately(CardIssuerService_PrintCardImmediately_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_PrintCardImmediately, CardIssuerService_MethodSignature_PrintCardImmediately, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum PrintCardImmediately(CardIssuerService_PrintCardImmediately_Req &Req, CardIssuerService_PrintCardImmediately_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = PrintCardImmediately(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum PrintCardImmediately(CardIssuerService_PrintCardImmediately_Req &Req, CardIssuerService_PrintCardImmediately_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = PrintCardImmediately(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum PrintCardImmediately(CardIssuerService_PrintCardImmediately_Req &Req, CardIssuerService_PrintCardImmediately_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = PrintCardImmediately(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum QueryCIStatus(CardIssuerService_QueryCIStatus_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_QueryCIStatus, CardIssuerService_MethodSignature_QueryCIStatus, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum QueryCIStatus(CardIssuerService_QueryCIStatus_Req &Req, CardIssuerService_QueryCIStatus_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = QueryCIStatus(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum QueryCIStatus(CardIssuerService_QueryCIStatus_Req &Req, CardIssuerService_QueryCIStatus_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = QueryCIStatus(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum QueryCIStatus(CardIssuerService_QueryCIStatus_Req &Req, CardIssuerService_QueryCIStatus_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = QueryCIStatus(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum GetDevInfo(CardIssuerService_GetDevInfo_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(CardIssuerService_Method_GetDevInfo, CardIssuerService_MethodSignature_GetDevInfo, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum GetDevInfo(CardIssuerService_GetDevInfo_Req &Req, CardIssuerService_GetDevInfo_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetDevInfo(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetDevInfo(CardIssuerService_GetDevInfo_Req &Req, CardIssuerService_GetDevInfo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetDevInfo(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetDevInfo(CardIssuerService_GetDevInfo_Req &Req, CardIssuerService_GetDevInfo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetDevInfo(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-
-	bool SafeDelete()
-	{
-		if (!m_bSysManaged) {
-			delete this;
-		}
-		return m_bSysManaged;
-	}
-
-protected:
-	bool m_bSysManaged;
-	CEntityBase *m_pEntityBase;
-	linkContext m_context;
-	bool bSessionClosed;
-};
-
-///////////////////////////
-
-} // namespace CardIssuer
-#endif // __CARDISSUER_CLIENT_G_H

+ 0 - 999
Module/mod_CardIssuerStand/CardIssuer_def_g.h

@@ -1,999 +0,0 @@
-#ifndef __CARDISSUER_DEF_G_H
-#define __CARDISSUER_DEF_G_H
-
-#pragma once
-
-// This code is generated by spgen tool!
-
-#include "SpHelper.h"
-
-namespace CardIssuer {
-//
-// const goes here
-//
-
-#define CardIssuerService_Method_Insert 0
-#define CardIssuerService_Method_CancelInsert 1
-#define CardIssuerService_Method_InsertWaitMore 2
-#define CardIssuerService_Method_Read 3
-#define CardIssuerService_Method_Capture 4
-#define CardIssuerService_Method_Eject 5
-#define CardIssuerService_Method_PreOnline 6
-#define CardIssuerService_Method_PostOnline 7
-#define CardIssuerService_Method_Exit 8
-#define CardIssuerService_Method_Issue 9
-#define CardIssuerService_Method_GetMaterialCount 10
-#define CardIssuerService_Method_SetMaterialCount 11
-#define CardIssuerService_Method_SetIssueFlag 12
-#define CardIssuerService_Method_ReadEx 13
-#define CardIssuerService_Method_QueryCardInfo 14
-#define CardIssuerService_Method_WriteTrack 15
-#define CardIssuerService_Method_GetMaterialCountEx 16
-#define CardIssuerService_Method_SetMaterialCountEx 17
-#define CardIssuerService_Method_SetSomeFlag 18
-#define CardIssuerService_Method_GetSCIInfo 19
-#define CardIssuerService_Method_IssueEx 20
-#define CardIssuerService_Method_OpenSafeLock 21
-#define CardIssuerService_Method_SAMICCommand 22
-#define CardIssuerService_Method_QueryPrinterStatus 23
-#define CardIssuerService_Method_Print 24
-#define CardIssuerService_Method_QuerySCIList 25
-#define CardIssuerService_Method_BindSCI 26
-#define CardIssuerService_Method_PreOnlineOnStore 27
-#define CardIssuerService_Method_NotifyPreonline 28
-#define CardIssuerService_Method_QueryCardInfoOnStore 29
-#define CardIssuerService_Method_GetAddCardInfo 30
-#define CardIssuerService_Method_PrintCardImmediately 31
-#define CardIssuerService_Method_QueryCIStatus 32
-#define CardIssuerService_Method_GetDevInfo 65535
-
-#define CardIssuerService_MethodSignature_Insert 1091033773
-#define CardIssuerService_MethodSignature_CancelInsert -1202478828
-#define CardIssuerService_MethodSignature_InsertWaitMore 493791658
-#define CardIssuerService_MethodSignature_Read 591445479
-#define CardIssuerService_MethodSignature_Capture -1807054569
-#define CardIssuerService_MethodSignature_Eject -377455114
-#define CardIssuerService_MethodSignature_PreOnline 640958030
-#define CardIssuerService_MethodSignature_PostOnline 923284555
-#define CardIssuerService_MethodSignature_Exit -1158854104
-#define CardIssuerService_MethodSignature_Issue 438783077
-#define CardIssuerService_MethodSignature_GetMaterialCount -605917749
-#define CardIssuerService_MethodSignature_SetMaterialCount 870103115
-#define CardIssuerService_MethodSignature_SetIssueFlag 187641303
-#define CardIssuerService_MethodSignature_ReadEx -842531343
-#define CardIssuerService_MethodSignature_QueryCardInfo 154962579
-#define CardIssuerService_MethodSignature_WriteTrack -1424799012
-#define CardIssuerService_MethodSignature_GetMaterialCountEx 1356148904
-#define CardIssuerService_MethodSignature_SetMaterialCountEx -1512312761
-#define CardIssuerService_MethodSignature_SetSomeFlag -2033418025
-#define CardIssuerService_MethodSignature_GetSCIInfo 1097494981
-#define CardIssuerService_MethodSignature_IssueEx 1390328640
-#define CardIssuerService_MethodSignature_OpenSafeLock 177980614
-#define CardIssuerService_MethodSignature_SAMICCommand 406988293
-#define CardIssuerService_MethodSignature_QueryPrinterStatus -890728447
-#define CardIssuerService_MethodSignature_Print 2096006675
-#define CardIssuerService_MethodSignature_QuerySCIList -1772231453
-#define CardIssuerService_MethodSignature_BindSCI -1242011672
-#define CardIssuerService_MethodSignature_PreOnlineOnStore 158325869
-#define CardIssuerService_MethodSignature_NotifyPreonline -808637659
-#define CardIssuerService_MethodSignature_QueryCardInfoOnStore 1217447214
-#define CardIssuerService_MethodSignature_GetAddCardInfo 684031940
-#define CardIssuerService_MethodSignature_PrintCardImmediately -1976184201
-#define CardIssuerService_MethodSignature_QueryCIStatus -1907000703
-#define CardIssuerService_MethodSignature_GetDevInfo 296205965
-
-#define CardIssuerService_LogCode_Insert "QLR040220300"
-#define CardIssuerService_LogCode_CancelInsert "QLR040220301"
-#define CardIssuerService_LogCode_InsertWaitMore "QLR040220302"
-#define CardIssuerService_LogCode_Read "QLR040220303"
-#define CardIssuerService_LogCode_Capture "QLR040220304"
-#define CardIssuerService_LogCode_Eject "QLR040220305"
-#define CardIssuerService_LogCode_PreOnline "QLR040220306"
-#define CardIssuerService_LogCode_PostOnline "QLR040220307"
-#define CardIssuerService_LogCode_Exit "QLR040220308"
-#define CardIssuerService_LogCode_Issue "QLR040220309"
-#define CardIssuerService_LogCode_GetMaterialCount "QLR040220310"
-#define CardIssuerService_LogCode_SetMaterialCount "QLR040220311"
-#define CardIssuerService_LogCode_SetIssueFlag "QLR040220312"
-#define CardIssuerService_LogCode_ReadEx "QLR040220313"
-#define CardIssuerService_LogCode_QueryCardInfo "QLR040220314"
-#define CardIssuerService_LogCode_WriteTrack "QLR040220315"
-#define CardIssuerService_LogCode_GetMaterialCountEx "QLR040220316"
-#define CardIssuerService_LogCode_SetMaterialCountEx "QLR040220317"
-#define CardIssuerService_LogCode_SetSomeFlag "QLR040220318"
-#define CardIssuerService_LogCode_GetSCIInfo "QLR040220319"
-#define CardIssuerService_LogCode_IssueEx "QLR040220320"
-#define CardIssuerService_LogCode_OpenSafeLock "QLR040220321"
-#define CardIssuerService_LogCode_SAMICCommand "QLR040220322"
-#define CardIssuerService_LogCode_QueryPrinterStatus "QLR040220323"
-#define CardIssuerService_LogCode_Print "QLR040220324"
-#define CardIssuerService_LogCode_QuerySCIList "QLR040220325"
-#define CardIssuerService_LogCode_BindSCI "QLR040220326"
-#define CardIssuerService_LogCode_PreOnlineOnStore "QLR040220327"
-#define CardIssuerService_LogCode_NotifyPreonline "QLR040220328"
-#define CardIssuerService_LogCode_QueryCardInfoOnStore "QLR040220329"
-#define CardIssuerService_LogCode_GetAddCardInfo "QLR040220330"
-#define CardIssuerService_LogCode_PrintCardImmediately "QLR040220331"
-#define CardIssuerService_LogCode_QueryCIStatus "QLR040220332"
-#define CardIssuerService_LogCode_GetDevInfo "QLR040220399"
-
-struct CardIssuerService_Insert_Req
-{
-	CSimpleStringA aid;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & aid;
-	}
-
-};
-
-struct CardIssuerService_Insert_Ans
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct CardIssuerService_CancelInsert_Info
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct CardIssuerService_InsertWaitMore_Info
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct CardIssuerService_Read_Req
-{
-	CSimpleStringA aid;
-	int reserved1;
-	int reserved2;
-	CSimpleStringA reserved3;
-	CSimpleStringA reserved4;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & aid & reserved1 & reserved2 & reserved3 & reserved4;
-	}
-
-};
-
-struct CardIssuerService_Read_Ans
-{
-	CSimpleStringA track1;
-	CSimpleStringA track2;
-	CSimpleStringA track3;
-	int ICType;
-	CSimpleStringA ICData;
-	int status;
-	CSimpleStringA t2Account;
-	CSimpleStringA t2Region;
-	CSimpleStringA t2CardSerial;
-	CSimpleStringA t2CVC;
-	CSimpleStringA t2ExpireDate;
-	int reserved1;
-	int reserved2;
-	CSimpleStringA reserved3;
-	CSimpleStringA reserved4;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & track1 & track2 & track3 & ICType & ICData & status & t2Account & t2Region & t2CardSerial & t2CVC & t2ExpireDate & reserved1 & reserved2 & reserved3 & reserved4;
-	}
-
-};
-
-struct CardIssuerService_Capture_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct CardIssuerService_Capture_Ans
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct CardIssuerService_Eject_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct CardIssuerService_Eject_Ans
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct CardIssuerService_PreOnline_Req
-{
-	CSimpleStringA businessData;
-	CSimpleStringA reserved1;
-	CSimpleStringA reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & businessData & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_PreOnline_Ans
-{
-	CSimpleStringA result;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & result;
-	}
-
-};
-
-struct CardIssuerService_PostOnline_Req
-{
-	CSimpleStringA data;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & data;
-	}
-
-};
-
-struct CardIssuerService_PostOnline_Ans
-{
-	CSimpleStringA result;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & result;
-	}
-
-};
-
-struct CardIssuerService_Exit_Info
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct CardIssuerService_Issue_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct CardIssuerService_Issue_Ans
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct CardIssuerService_GetMaterialCount_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct CardIssuerService_GetMaterialCount_Ans
-{
-	int remains;
-	int captured;
-	int issued;
-	int mixed;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & remains & captured & issued & mixed;
-	}
-
-};
-
-struct CardIssuerService_SetMaterialCount_Req
-{
-	int remains;
-	int captured;
-	int issued;
-	bool bRemains;
-	bool bCaptured;
-	bool bIssued;
-	int mixed;
-	bool bMixed;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & remains & captured & issued & bRemains & bCaptured & bIssued & mixed & bMixed;
-	}
-
-};
-
-struct CardIssuerService_SetMaterialCount_Ans
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct CardIssuerService_SetIssueFlag_Info
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct CardIssuerService_ReadEx_Req
-{
-	CSimpleStringA aid;
-	CSimpleStringA reserved1;
-	CSimpleStringA reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & aid & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_ReadEx_Ans
-{
-	CSimpleStringA track1;
-	CSimpleStringA track2;
-	CSimpleStringA track3;
-	int CDType;
-	int ICType;
-	int CMBType;
-	CSimpleStringA ICData;
-	int status;
-	CSimpleStringA t2Account;
-	CSimpleStringA t2Region;
-	CSimpleStringA t2CardSerial;
-	CSimpleStringA t2CVC;
-	CSimpleStringA t2ExpireDate;
-	CSimpleStringA reserved1;
-	CSimpleStringA reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & track1 & track2 & track3 & CDType & ICType & CMBType & ICData & status & t2Account & t2Region & t2CardSerial & t2CVC & t2ExpireDate & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_QueryCardInfo_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct CardIssuerService_QueryCardInfo_Ans
-{
-	int position;
-	int reserved1;
-	CSimpleStringA reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & position & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_WriteTrack_Req
-{
-	int mode;
-	int co;
-	CSimpleStringW track1;
-	CSimpleStringW track2;
-	CSimpleStringW track3;
-	CSimpleStringW reserved;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & mode & co & track1 & track2 & track3 & reserved;
-	}
-
-};
-
-struct CardIssuerService_WriteTrack_Ans
-{
-	int result;
-	int reserved1;
-	CSimpleStringA reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & result & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_GetMaterialCountEx_Req
-{
-	CAutoArray<int> GetHopper;
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & GetHopper & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_GetMaterialCountEx_Ans
-{
-	int captured;
-	CAutoArray<int> hasHopper;
-	CAutoArray<CSimpleStringA> CardBoxNo;
-	CAutoArray<CSimpleStringA> PsbCode;
-	CAutoArray<CSimpleStringA> PsbName;
-	CAutoArray<CSimpleStringA> Maintainer;
-	CAutoArray<CSimpleStringA> MaintainTime;
-	CAutoArray<int> CardInit;
-	CAutoArray<int> CardPercent;
-	CAutoArray<int> remains;
-	CAutoArray<int> issued;
-	CAutoArray<int> mixed;
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & captured & hasHopper & CardBoxNo & PsbCode & PsbName & Maintainer & MaintainTime & CardInit & CardPercent & remains & issued & mixed & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_SetMaterialCountEx_Req
-{
-	CAutoArray<int> SetHopper;
-	int SetCaptured;
-	int captured;
-	CAutoArray<CSimpleStringA> CardBoxNo;
-	CAutoArray<CSimpleStringA> PsbCode;
-	CAutoArray<CSimpleStringA> PsbName;
-	CAutoArray<CSimpleStringA> Maintainer;
-	CAutoArray<CSimpleStringA> MaintainTime;
-	CAutoArray<int> CardInit;
-	CAutoArray<int> CardPercent;
-	CAutoArray<int> remains;
-	CAutoArray<int> issued;
-	CAutoArray<int> mixed;
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & SetHopper & SetCaptured & captured & CardBoxNo & PsbCode & PsbName & Maintainer & MaintainTime & CardInit & CardPercent & remains & issued & mixed & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_SetMaterialCountEx_Ans
-{
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_SetSomeFlag_Req
-{
-	int IssueBusiness;
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & IssueBusiness & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_SetSomeFlag_Ans
-{
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_GetSCIInfo_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct CardIssuerService_GetSCIInfo_Ans
-{
-	int connected;
-	CSimpleStringA DevSN;
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & connected & DevSN & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_IssueEx_Req
-{
-	int hopper;
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & hopper & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_IssueEx_Ans
-{
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_OpenSafeLock_Req
-{
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_OpenSafeLock_Ans
-{
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_SAMICCommand_Req
-{
-	int cmdType;
-	CAutoArray<int> param1;
-	CAutoArray<CSimpleStringA> param2;
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & cmdType & param1 & param2 & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_SAMICCommand_Ans
-{
-	CAutoArray<int> ret1;
-	CAutoArray<CSimpleStringA> ret2;
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & ret1 & ret2 & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_QueryPrinterStatus_Req
-{
-	CAutoArray<int> param1;
-	CAutoArray<CSimpleStringA> param2;
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & param1 & param2 & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_QueryPrinterStatus_Ans
-{
-	CAutoArray<int> ret1;
-	CAutoArray<CSimpleStringA> ret2;
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & ret1 & ret2 & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_Print_Req
-{
-	CBlob data1;
-	CBlob data2;
-	CBlob data3;
-	CBlob data4;
-	CBlob data5;
-	CBlob data6;
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & data1 & data2 & data3 & data4 & data5 & data6 & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_Print_Ans
-{
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_QuerySCIList_Req
-{
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_QuerySCIList_Ans
-{
-	CAutoArray<CSimpleStringA> sciNo;
-	CAutoArray<CSimpleStringA> arrMateriel;
-	CAutoArray<CSimpleStringA> CardGroove;
-	CAutoArray<CSimpleStringA> CardBoxNo;
-	CAutoArray<CSimpleStringA> PsbCode;
-	CAutoArray<CSimpleStringA> PsbName;
-	CAutoArray<unsigned int> CardInit;
-	CAutoArray<unsigned int> CardRemains;
-	CAutoArray<unsigned int> CardIssued;
-	CAutoArray<unsigned int> CardMixed;
-	CAutoArray<unsigned int> CardPercent;
-	CAutoArray<CSimpleStringA> Maintainer;
-	CAutoArray<CSimpleStringA> MaintainTime;
-	CAutoArray<CSimpleStringA> UpdateTime;
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & sciNo & arrMateriel & CardGroove & CardBoxNo & PsbCode & PsbName & CardInit & CardRemains & CardIssued & CardMixed & CardPercent & Maintainer & MaintainTime & UpdateTime & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_BindSCI_Req
-{
-	int type;
-	CSimpleStringA sciNo;
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & type & sciNo & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_BindSCI_Ans
-{
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & reserved1 & reserved2;
-	}
-
-};
-
-struct CardIssuerService_PreOnlineOnStore_Req
-{
-	CSimpleStringA account;
-	CSimpleStringA termNo;
-	CSimpleStringA businessData;
-	int slot;
-	CAutoArray<int> reserved1;
-	CAutoArray<int> reserved2;
-	CAutoArray<CSimpleStringA> reserved3;
-	CAutoArray<CSimpleStringA> reserved4;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & account & termNo & businessData & slot & reserved1 & reserved2 & reserved3 & reserved4;
-	}
-
-};
-
-struct CardIssuerService_PreOnlineOnStore_Ans
-{
-	int findCard;
-	int cardPos;
-	CSimpleStringA result;
-	CAutoArray<int> reserved1;
-	CAutoArray<int> reserved2;
-	CAutoArray<CSimpleStringA> reserved3;
-	CAutoArray<CSimpleStringA> reserved4;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & findCard & cardPos & result & reserved1 & reserved2 & reserved3 & reserved4;
-	}
-
-};
-
-struct CardIssuerService_NotifyPreonline_Req
-{
-	int findCard;
-	int cardPos;
-	int errCode;
-	CSimpleStringA account;
-	CSimpleStringA termNo;
-	CSimpleStringA data;
-	CAutoArray<int> reserved1;
-	CAutoArray<int> reserved2;
-	CAutoArray<CSimpleStringA> reserved3;
-	CAutoArray<CSimpleStringA> reserved4;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & findCard & cardPos & errCode & account & termNo & data & reserved1 & reserved2 & reserved3 & reserved4;
-	}
-
-};
-
-struct CardIssuerService_NotifyPreonline_Ans
-{
-	CAutoArray<int> reserved1;
-	CAutoArray<int> reserved2;
-	CAutoArray<CSimpleStringA> reserved3;
-	CAutoArray<CSimpleStringA> reserved4;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & reserved1 & reserved2 & reserved3 & reserved4;
-	}
-
-};
-
-struct CardIssuerService_QueryCardInfoOnStore_Req
-{
-	CAutoArray<int> reserved1;
-	CAutoArray<int> reserved2;
-	CAutoArray<CSimpleStringA> reserved3;
-	CAutoArray<CSimpleStringA> reserved4;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & reserved1 & reserved2 & reserved3 & reserved4;
-	}
-
-};
-
-struct CardIssuerService_QueryCardInfoOnStore_Ans
-{
-	int findCard;
-	int cardPos;
-	CAutoArray<int> reserved1;
-	CAutoArray<int> reserved2;
-	CAutoArray<CSimpleStringA> reserved3;
-	CAutoArray<CSimpleStringA> reserved4;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & findCard & cardPos & reserved1 & reserved2 & reserved3 & reserved4;
-	}
-
-};
-
-struct CardIssuerService_GetAddCardInfo_Req
-{
-	int isSync;
-	CAutoArray<int> reserved1;
-	CAutoArray<int> reserved2;
-	CAutoArray<CSimpleStringA> reserved3;
-	CAutoArray<CSimpleStringA> reserved4;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & isSync & reserved1 & reserved2 & reserved3 & reserved4;
-	}
-
-};
-
-struct CardIssuerService_GetAddCardInfo_Ans
-{
-	int count;
-	CAutoArray<int> slot;
-	CAutoArray<CSimpleStringA> account;
-	CAutoArray<CSimpleStringA> cardSerial;
-	CAutoArray<int> reserved1;
-	CAutoArray<int> reserved2;
-	CAutoArray<CSimpleStringA> reserved3;
-	CAutoArray<CSimpleStringA> reserved4;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & count & slot & account & cardSerial & reserved1 & reserved2 & reserved3 & reserved4;
-	}
-
-};
-
-struct CardIssuerService_PrintCardImmediately_Req
-{
-	CSimpleStringA formFile;
-	CSimpleStringA printData;
-	CAutoArray<int> reserved1;
-	CAutoArray<int> reserved2;
-	CAutoArray<CSimpleStringA> reserved3;
-	CAutoArray<CSimpleStringA> reserved4;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & formFile & printData & reserved1 & reserved2 & reserved3 & reserved4;
-	}
-
-};
-
-struct CardIssuerService_PrintCardImmediately_Ans
-{
-	int ret;
-	CAutoArray<int> reserved1;
-	CAutoArray<int> reserved2;
-	CAutoArray<CSimpleStringA> reserved3;
-	CAutoArray<CSimpleStringA> reserved4;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & ret & reserved1 & reserved2 & reserved3 & reserved4;
-	}
-
-};
-
-struct CardIssuerService_QueryCIStatus_Req
-{
-	CAutoArray<int> reserved1;
-	CAutoArray<int> reserved2;
-	CAutoArray<CSimpleStringA> reserved3;
-	CAutoArray<CSimpleStringA> reserved4;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & reserved1 & reserved2 & reserved3 & reserved4;
-	}
-
-};
-
-struct CardIssuerService_QueryCIStatus_Ans
-{
-	int retainBin;
-	CAutoArray<int> hopperNo;
-	CAutoArray<int> hopperStatus;
-	CAutoArray<int> reserved1;
-	CAutoArray<int> reserved2;
-	CAutoArray<CSimpleStringA> reserved3;
-	CAutoArray<CSimpleStringA> reserved4;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & retainBin & hopperNo & hopperStatus & reserved1 & reserved2 & reserved3 & reserved4;
-	}
-
-};
-
-struct CardIssuerService_GetDevInfo_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct CardIssuerService_GetDevInfo_Ans
-{
-	CSimpleStringA type;
-	CSimpleStringA model;
-	CSimpleStringA version;
-	int state;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & type & model & version & state;
-	}
-
-};
-
-
-///////////////////////////
-
-} // namespace CardIssuer
-
-#endif // __CARDISSUER_DEF_G_H

+ 0 - 45
Module/mod_CardIssuerStand/CardIssuer_msg_g.h

@@ -1,45 +0,0 @@
-
-#ifndef __CARDISSUER_MSG_G_H
-#define __CARDISSUER_MSG_G_H
-
-#pragma once
-
-// This code is generated by spgen tool!
-
-#include "SpHelper.h"
-
-namespace CardIssuer {
-#define eMsg_FetchCard 0
-#define eMsg_SCIConnect 1
-
-#define eMsgSig_FetchCard 1110804794
-#define eMsgSig_SCIConnect 721962700
-
-struct FetchCard
-{
-	int status;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & status;
-	}
-
-};
-
-///////////////////////////
-
-struct SCIConnect
-{
-	int status;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & status;
-	}
-
-};
-
-///////////////////////////
-
-} // namespace CardIssuer
-#endif // __CARDISSUER_MSG_G_H

+ 0 - 1001
Module/mod_CardIssuerStand/CardIssuer_server_g.h

@@ -1,1001 +0,0 @@
-
-#ifndef __CARDISSUER_SERVER_G_H
-#define __CARDISSUER_SERVER_G_H
-
-#pragma once
-
-// This code is generated by spgen tool!
-
-#include "CardIssuer_def_g.h"
-
-namespace CardIssuer {
-class CardIssuerService_ServerSessionBase : public CServerSessionBase
-{
-public:
-	CardIssuerService_ServerSessionBase()
-	{
-		/// override by user
-	}
-
-	virtual ~CardIssuerService_ServerSessionBase()
-	{
-		/// override by user
-	}
-
-	virtual bool IsExclusive() { return false; }
-
-	virtual bool IsSessionOverlap() { return true; }
-
-	virtual ErrorCodeEnum GetMessageAttr(DWORD dwMessageID, DWORD dwSignature, bool &bOverlap)
-	{
-		ErrorCodeEnum Error = Error_Succeed;
-		switch (dwMessageID) {
-		case CardIssuerService_Method_Insert:
-			if (dwSignature == CardIssuerService_MethodSignature_Insert) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_CancelInsert:
-			if (dwSignature == CardIssuerService_MethodSignature_CancelInsert) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_InsertWaitMore:
-			if (dwSignature == CardIssuerService_MethodSignature_InsertWaitMore) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_Read:
-			if (dwSignature == CardIssuerService_MethodSignature_Read) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_Capture:
-			if (dwSignature == CardIssuerService_MethodSignature_Capture) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_Eject:
-			if (dwSignature == CardIssuerService_MethodSignature_Eject) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_PreOnline:
-			if (dwSignature == CardIssuerService_MethodSignature_PreOnline) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_PostOnline:
-			if (dwSignature == CardIssuerService_MethodSignature_PostOnline) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_Exit:
-			if (dwSignature == CardIssuerService_MethodSignature_Exit) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_Issue:
-			if (dwSignature == CardIssuerService_MethodSignature_Issue) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_GetMaterialCount:
-			if (dwSignature == CardIssuerService_MethodSignature_GetMaterialCount) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_SetMaterialCount:
-			if (dwSignature == CardIssuerService_MethodSignature_SetMaterialCount) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_SetIssueFlag:
-			if (dwSignature == CardIssuerService_MethodSignature_SetIssueFlag) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_ReadEx:
-			if (dwSignature == CardIssuerService_MethodSignature_ReadEx) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_QueryCardInfo:
-			if (dwSignature == CardIssuerService_MethodSignature_QueryCardInfo) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_WriteTrack:
-			if (dwSignature == CardIssuerService_MethodSignature_WriteTrack) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_GetMaterialCountEx:
-			if (dwSignature == CardIssuerService_MethodSignature_GetMaterialCountEx) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_SetMaterialCountEx:
-			if (dwSignature == CardIssuerService_MethodSignature_SetMaterialCountEx) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_SetSomeFlag:
-			if (dwSignature == CardIssuerService_MethodSignature_SetSomeFlag) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_GetSCIInfo:
-			if (dwSignature == CardIssuerService_MethodSignature_GetSCIInfo) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_IssueEx:
-			if (dwSignature == CardIssuerService_MethodSignature_IssueEx) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_OpenSafeLock:
-			if (dwSignature == CardIssuerService_MethodSignature_OpenSafeLock) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_SAMICCommand:
-			if (dwSignature == CardIssuerService_MethodSignature_SAMICCommand) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_QueryPrinterStatus:
-			if (dwSignature == CardIssuerService_MethodSignature_QueryPrinterStatus) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_Print:
-			if (dwSignature == CardIssuerService_MethodSignature_Print) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_QuerySCIList:
-			if (dwSignature == CardIssuerService_MethodSignature_QuerySCIList) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_BindSCI:
-			if (dwSignature == CardIssuerService_MethodSignature_BindSCI) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_PreOnlineOnStore:
-			if (dwSignature == CardIssuerService_MethodSignature_PreOnlineOnStore) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_NotifyPreonline:
-			if (dwSignature == CardIssuerService_MethodSignature_NotifyPreonline) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_QueryCardInfoOnStore:
-			if (dwSignature == CardIssuerService_MethodSignature_QueryCardInfoOnStore) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_GetAddCardInfo:
-			if (dwSignature == CardIssuerService_MethodSignature_GetAddCardInfo) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_PrintCardImmediately:
-			if (dwSignature == CardIssuerService_MethodSignature_PrintCardImmediately) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_QueryCIStatus:
-			if (dwSignature == CardIssuerService_MethodSignature_QueryCIStatus) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_GetDevInfo:
-			if (dwSignature == CardIssuerService_MethodSignature_GetDevInfo) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		default:
-			Error = Error_MethodNotFound;
-			break;
-		}
-		return Error;
-	}
-
-	int CheckMessageSignature(DWORD dwMessageID, DWORD dwSignature)
-	{
-		ErrorCodeEnum Error = Error_Succeed;
-		switch (dwMessageID) {
-		case CardIssuerService_Method_Insert:
-			if (dwSignature != CardIssuerService_MethodSignature_Insert) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_CancelInsert:
-			if (dwSignature != CardIssuerService_MethodSignature_CancelInsert) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_InsertWaitMore:
-			if (dwSignature != CardIssuerService_MethodSignature_InsertWaitMore) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_Read:
-			if (dwSignature != CardIssuerService_MethodSignature_Read) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_Capture:
-			if (dwSignature != CardIssuerService_MethodSignature_Capture) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_Eject:
-			if (dwSignature != CardIssuerService_MethodSignature_Eject) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_PreOnline:
-			if (dwSignature != CardIssuerService_MethodSignature_PreOnline) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_PostOnline:
-			if (dwSignature != CardIssuerService_MethodSignature_PostOnline) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_Exit:
-			if (dwSignature != CardIssuerService_MethodSignature_Exit) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_Issue:
-			if (dwSignature != CardIssuerService_MethodSignature_Issue) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_GetMaterialCount:
-			if (dwSignature != CardIssuerService_MethodSignature_GetMaterialCount) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_SetMaterialCount:
-			if (dwSignature != CardIssuerService_MethodSignature_SetMaterialCount) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_SetIssueFlag:
-			if (dwSignature != CardIssuerService_MethodSignature_SetIssueFlag) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_ReadEx:
-			if (dwSignature != CardIssuerService_MethodSignature_ReadEx) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_QueryCardInfo:
-			if (dwSignature != CardIssuerService_MethodSignature_QueryCardInfo) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_WriteTrack:
-			if (dwSignature != CardIssuerService_MethodSignature_WriteTrack) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_GetMaterialCountEx:
-			if (dwSignature != CardIssuerService_MethodSignature_GetMaterialCountEx) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_SetMaterialCountEx:
-			if (dwSignature != CardIssuerService_MethodSignature_SetMaterialCountEx) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_SetSomeFlag:
-			if (dwSignature != CardIssuerService_MethodSignature_SetSomeFlag) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_GetSCIInfo:
-			if (dwSignature != CardIssuerService_MethodSignature_GetSCIInfo) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_IssueEx:
-			if (dwSignature != CardIssuerService_MethodSignature_IssueEx) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_OpenSafeLock:
-			if (dwSignature != CardIssuerService_MethodSignature_OpenSafeLock) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_SAMICCommand:
-			if (dwSignature != CardIssuerService_MethodSignature_SAMICCommand) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_QueryPrinterStatus:
-			if (dwSignature != CardIssuerService_MethodSignature_QueryPrinterStatus) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_Print:
-			if (dwSignature != CardIssuerService_MethodSignature_Print) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_QuerySCIList:
-			if (dwSignature != CardIssuerService_MethodSignature_QuerySCIList) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_BindSCI:
-			if (dwSignature != CardIssuerService_MethodSignature_BindSCI) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_PreOnlineOnStore:
-			if (dwSignature != CardIssuerService_MethodSignature_PreOnlineOnStore) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_NotifyPreonline:
-			if (dwSignature != CardIssuerService_MethodSignature_NotifyPreonline) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_QueryCardInfoOnStore:
-			if (dwSignature != CardIssuerService_MethodSignature_QueryCardInfoOnStore) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_GetAddCardInfo:
-			if (dwSignature != CardIssuerService_MethodSignature_GetAddCardInfo) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_PrintCardImmediately:
-			if (dwSignature != CardIssuerService_MethodSignature_PrintCardImmediately) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_QueryCIStatus:
-			if (dwSignature != CardIssuerService_MethodSignature_QueryCIStatus) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case CardIssuerService_Method_GetDevInfo:
-			if (dwSignature != CardIssuerService_MethodSignature_GetDevInfo) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		default:
-			Error = Error_MethodNotFound;
-			break;
-		}
-		return Error;
-	}
-
-	virtual void Handle_Insert(SpReqAnsContext<CardIssuerService_Insert_Req, CardIssuerService_Insert_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_CancelInsert(SpOnewayCallContext<CardIssuerService_CancelInsert_Info>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_InsertWaitMore(SpOnewayCallContext<CardIssuerService_InsertWaitMore_Info>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_Read(SpReqAnsContext<CardIssuerService_Read_Req, CardIssuerService_Read_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_Capture(SpReqAnsContext<CardIssuerService_Capture_Req, CardIssuerService_Capture_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_Eject(SpReqAnsContext<CardIssuerService_Eject_Req, CardIssuerService_Eject_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_PreOnline(SpReqAnsContext<CardIssuerService_PreOnline_Req, CardIssuerService_PreOnline_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_PostOnline(SpReqAnsContext<CardIssuerService_PostOnline_Req, CardIssuerService_PostOnline_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_Exit(SpOnewayCallContext<CardIssuerService_Exit_Info>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_Issue(SpReqAnsContext<CardIssuerService_Issue_Req, CardIssuerService_Issue_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_GetMaterialCount(SpReqAnsContext<CardIssuerService_GetMaterialCount_Req, CardIssuerService_GetMaterialCount_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_SetMaterialCount(SpReqAnsContext<CardIssuerService_SetMaterialCount_Req, CardIssuerService_SetMaterialCount_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_SetIssueFlag(SpOnewayCallContext<CardIssuerService_SetIssueFlag_Info>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_ReadEx(SpReqAnsContext<CardIssuerService_ReadEx_Req, CardIssuerService_ReadEx_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_QueryCardInfo(SpReqAnsContext<CardIssuerService_QueryCardInfo_Req, CardIssuerService_QueryCardInfo_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_WriteTrack(SpReqAnsContext<CardIssuerService_WriteTrack_Req, CardIssuerService_WriteTrack_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_GetMaterialCountEx(SpReqAnsContext<CardIssuerService_GetMaterialCountEx_Req, CardIssuerService_GetMaterialCountEx_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_SetMaterialCountEx(SpReqAnsContext<CardIssuerService_SetMaterialCountEx_Req, CardIssuerService_SetMaterialCountEx_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_SetSomeFlag(SpReqAnsContext<CardIssuerService_SetSomeFlag_Req, CardIssuerService_SetSomeFlag_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_GetSCIInfo(SpReqAnsContext<CardIssuerService_GetSCIInfo_Req, CardIssuerService_GetSCIInfo_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_IssueEx(SpReqAnsContext<CardIssuerService_IssueEx_Req, CardIssuerService_IssueEx_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_OpenSafeLock(SpReqAnsContext<CardIssuerService_OpenSafeLock_Req, CardIssuerService_OpenSafeLock_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_SAMICCommand(SpReqAnsContext<CardIssuerService_SAMICCommand_Req, CardIssuerService_SAMICCommand_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_QueryPrinterStatus(SpReqAnsContext<CardIssuerService_QueryPrinterStatus_Req, CardIssuerService_QueryPrinterStatus_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_Print(SpReqAnsContext<CardIssuerService_Print_Req, CardIssuerService_Print_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_QuerySCIList(SpReqAnsContext<CardIssuerService_QuerySCIList_Req, CardIssuerService_QuerySCIList_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_BindSCI(SpReqAnsContext<CardIssuerService_BindSCI_Req, CardIssuerService_BindSCI_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_PreOnlineOnStore(SpReqAnsContext<CardIssuerService_PreOnlineOnStore_Req, CardIssuerService_PreOnlineOnStore_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_NotifyPreonline(SpReqAnsContext<CardIssuerService_NotifyPreonline_Req, CardIssuerService_NotifyPreonline_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_QueryCardInfoOnStore(SpReqAnsContext<CardIssuerService_QueryCardInfoOnStore_Req, CardIssuerService_QueryCardInfoOnStore_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_GetAddCardInfo(SpReqAnsContext<CardIssuerService_GetAddCardInfo_Req, CardIssuerService_GetAddCardInfo_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_PrintCardImmediately(SpReqAnsContext<CardIssuerService_PrintCardImmediately_Req, CardIssuerService_PrintCardImmediately_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_QueryCIStatus(SpReqAnsContext<CardIssuerService_QueryCIStatus_Req, CardIssuerService_QueryCIStatus_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_GetDevInfo(SpReqAnsContext<CardIssuerService_GetDevInfo_Req, CardIssuerService_GetDevInfo_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void OnRequest(CSmartPointer<ITransactionContext> pTransactionContext)
-	{
-		CAutoBuffer Buf;
-		DWORD dwMessageID;
-		DWORD dwMessageSignature;
-		ErrorCodeEnum Error = pTransactionContext->GetReceiveBuffer(dwMessageID, dwMessageSignature, Buf);
-		if (Error == Error_Succeed) {
-#ifdef DEBUG
-			assert(CheckMessageSignature(dwMessageID, dwMessageSignature) == Error_Succeed);
-#else
-			if (CheckMessageSignature(dwMessageID, dwMessageSignature) != Error_Succeed) {
-				pTransactionContext->SendAnswer(Error_MethodSignatureFailed);
-				return;
-			}
-#endif
-			switch (dwMessageID) {
-				case CardIssuerService_Method_Insert:
-					{
-						SpReqAnsContext<CardIssuerService_Insert_Req,CardIssuerService_Insert_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_Insert_Req,CardIssuerService_Insert_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_Insert(ctx);
-					}
-					break;
-				case CardIssuerService_Method_CancelInsert:
-					{
-						SpOnewayCallContext<CardIssuerService_CancelInsert_Info>::Pointer ctx;
-						ctx.Attach(new SpOnewayCallContext<CardIssuerService_CancelInsert_Info>());
-						SpBuffer2Object(Buf, ctx->Info);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_CancelInsert(ctx);
-					}
-					break;
-				case CardIssuerService_Method_InsertWaitMore:
-					{
-						SpOnewayCallContext<CardIssuerService_InsertWaitMore_Info>::Pointer ctx;
-						ctx.Attach(new SpOnewayCallContext<CardIssuerService_InsertWaitMore_Info>());
-						SpBuffer2Object(Buf, ctx->Info);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_InsertWaitMore(ctx);
-					}
-					break;
-				case CardIssuerService_Method_Read:
-					{
-						SpReqAnsContext<CardIssuerService_Read_Req,CardIssuerService_Read_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_Read_Req,CardIssuerService_Read_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_Read(ctx);
-					}
-					break;
-				case CardIssuerService_Method_Capture:
-					{
-						SpReqAnsContext<CardIssuerService_Capture_Req,CardIssuerService_Capture_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_Capture_Req,CardIssuerService_Capture_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_Capture(ctx);
-					}
-					break;
-				case CardIssuerService_Method_Eject:
-					{
-						SpReqAnsContext<CardIssuerService_Eject_Req,CardIssuerService_Eject_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_Eject_Req,CardIssuerService_Eject_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_Eject(ctx);
-					}
-					break;
-				case CardIssuerService_Method_PreOnline:
-					{
-						SpReqAnsContext<CardIssuerService_PreOnline_Req,CardIssuerService_PreOnline_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_PreOnline_Req,CardIssuerService_PreOnline_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_PreOnline(ctx);
-					}
-					break;
-				case CardIssuerService_Method_PostOnline:
-					{
-						SpReqAnsContext<CardIssuerService_PostOnline_Req,CardIssuerService_PostOnline_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_PostOnline_Req,CardIssuerService_PostOnline_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_PostOnline(ctx);
-					}
-					break;
-				case CardIssuerService_Method_Exit:
-					{
-						SpOnewayCallContext<CardIssuerService_Exit_Info>::Pointer ctx;
-						ctx.Attach(new SpOnewayCallContext<CardIssuerService_Exit_Info>());
-						SpBuffer2Object(Buf, ctx->Info);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_Exit(ctx);
-					}
-					break;
-				case CardIssuerService_Method_Issue:
-					{
-						SpReqAnsContext<CardIssuerService_Issue_Req,CardIssuerService_Issue_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_Issue_Req,CardIssuerService_Issue_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_Issue(ctx);
-					}
-					break;
-				case CardIssuerService_Method_GetMaterialCount:
-					{
-						SpReqAnsContext<CardIssuerService_GetMaterialCount_Req,CardIssuerService_GetMaterialCount_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_GetMaterialCount_Req,CardIssuerService_GetMaterialCount_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_GetMaterialCount(ctx);
-					}
-					break;
-				case CardIssuerService_Method_SetMaterialCount:
-					{
-						SpReqAnsContext<CardIssuerService_SetMaterialCount_Req,CardIssuerService_SetMaterialCount_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_SetMaterialCount_Req,CardIssuerService_SetMaterialCount_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_SetMaterialCount(ctx);
-					}
-					break;
-				case CardIssuerService_Method_SetIssueFlag:
-					{
-						SpOnewayCallContext<CardIssuerService_SetIssueFlag_Info>::Pointer ctx;
-						ctx.Attach(new SpOnewayCallContext<CardIssuerService_SetIssueFlag_Info>());
-						SpBuffer2Object(Buf, ctx->Info);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_SetIssueFlag(ctx);
-					}
-					break;
-				case CardIssuerService_Method_ReadEx:
-					{
-						SpReqAnsContext<CardIssuerService_ReadEx_Req,CardIssuerService_ReadEx_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_ReadEx_Req,CardIssuerService_ReadEx_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_ReadEx(ctx);
-					}
-					break;
-				case CardIssuerService_Method_QueryCardInfo:
-					{
-						SpReqAnsContext<CardIssuerService_QueryCardInfo_Req,CardIssuerService_QueryCardInfo_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_QueryCardInfo_Req,CardIssuerService_QueryCardInfo_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_QueryCardInfo(ctx);
-					}
-					break;
-				case CardIssuerService_Method_WriteTrack:
-					{
-						SpReqAnsContext<CardIssuerService_WriteTrack_Req,CardIssuerService_WriteTrack_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_WriteTrack_Req,CardIssuerService_WriteTrack_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_WriteTrack(ctx);
-					}
-					break;
-				case CardIssuerService_Method_GetMaterialCountEx:
-					{
-						SpReqAnsContext<CardIssuerService_GetMaterialCountEx_Req,CardIssuerService_GetMaterialCountEx_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_GetMaterialCountEx_Req,CardIssuerService_GetMaterialCountEx_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_GetMaterialCountEx(ctx);
-					}
-					break;
-				case CardIssuerService_Method_SetMaterialCountEx:
-					{
-						SpReqAnsContext<CardIssuerService_SetMaterialCountEx_Req,CardIssuerService_SetMaterialCountEx_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_SetMaterialCountEx_Req,CardIssuerService_SetMaterialCountEx_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_SetMaterialCountEx(ctx);
-					}
-					break;
-				case CardIssuerService_Method_SetSomeFlag:
-					{
-						SpReqAnsContext<CardIssuerService_SetSomeFlag_Req,CardIssuerService_SetSomeFlag_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_SetSomeFlag_Req,CardIssuerService_SetSomeFlag_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_SetSomeFlag(ctx);
-					}
-					break;
-				case CardIssuerService_Method_GetSCIInfo:
-					{
-						SpReqAnsContext<CardIssuerService_GetSCIInfo_Req,CardIssuerService_GetSCIInfo_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_GetSCIInfo_Req,CardIssuerService_GetSCIInfo_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_GetSCIInfo(ctx);
-					}
-					break;
-				case CardIssuerService_Method_IssueEx:
-					{
-						SpReqAnsContext<CardIssuerService_IssueEx_Req,CardIssuerService_IssueEx_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_IssueEx_Req,CardIssuerService_IssueEx_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_IssueEx(ctx);
-					}
-					break;
-				case CardIssuerService_Method_OpenSafeLock:
-					{
-						SpReqAnsContext<CardIssuerService_OpenSafeLock_Req,CardIssuerService_OpenSafeLock_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_OpenSafeLock_Req,CardIssuerService_OpenSafeLock_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_OpenSafeLock(ctx);
-					}
-					break;
-				case CardIssuerService_Method_SAMICCommand:
-					{
-						SpReqAnsContext<CardIssuerService_SAMICCommand_Req,CardIssuerService_SAMICCommand_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_SAMICCommand_Req,CardIssuerService_SAMICCommand_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_SAMICCommand(ctx);
-					}
-					break;
-				case CardIssuerService_Method_QueryPrinterStatus:
-					{
-						SpReqAnsContext<CardIssuerService_QueryPrinterStatus_Req,CardIssuerService_QueryPrinterStatus_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_QueryPrinterStatus_Req,CardIssuerService_QueryPrinterStatus_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_QueryPrinterStatus(ctx);
-					}
-					break;
-				case CardIssuerService_Method_Print:
-					{
-						SpReqAnsContext<CardIssuerService_Print_Req,CardIssuerService_Print_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_Print_Req,CardIssuerService_Print_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_Print(ctx);
-					}
-					break;
-				case CardIssuerService_Method_QuerySCIList:
-					{
-						SpReqAnsContext<CardIssuerService_QuerySCIList_Req,CardIssuerService_QuerySCIList_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_QuerySCIList_Req,CardIssuerService_QuerySCIList_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_QuerySCIList(ctx);
-					}
-					break;
-				case CardIssuerService_Method_BindSCI:
-					{
-						SpReqAnsContext<CardIssuerService_BindSCI_Req,CardIssuerService_BindSCI_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_BindSCI_Req,CardIssuerService_BindSCI_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_BindSCI(ctx);
-					}
-					break;
-				case CardIssuerService_Method_PreOnlineOnStore:
-					{
-						SpReqAnsContext<CardIssuerService_PreOnlineOnStore_Req,CardIssuerService_PreOnlineOnStore_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_PreOnlineOnStore_Req,CardIssuerService_PreOnlineOnStore_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_PreOnlineOnStore(ctx);
-					}
-					break;
-				case CardIssuerService_Method_NotifyPreonline:
-					{
-						SpReqAnsContext<CardIssuerService_NotifyPreonline_Req,CardIssuerService_NotifyPreonline_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_NotifyPreonline_Req,CardIssuerService_NotifyPreonline_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_NotifyPreonline(ctx);
-					}
-					break;
-				case CardIssuerService_Method_QueryCardInfoOnStore:
-					{
-						SpReqAnsContext<CardIssuerService_QueryCardInfoOnStore_Req,CardIssuerService_QueryCardInfoOnStore_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_QueryCardInfoOnStore_Req,CardIssuerService_QueryCardInfoOnStore_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_QueryCardInfoOnStore(ctx);
-					}
-					break;
-				case CardIssuerService_Method_GetAddCardInfo:
-					{
-						SpReqAnsContext<CardIssuerService_GetAddCardInfo_Req,CardIssuerService_GetAddCardInfo_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_GetAddCardInfo_Req,CardIssuerService_GetAddCardInfo_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_GetAddCardInfo(ctx);
-					}
-					break;
-				case CardIssuerService_Method_PrintCardImmediately:
-					{
-						SpReqAnsContext<CardIssuerService_PrintCardImmediately_Req,CardIssuerService_PrintCardImmediately_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_PrintCardImmediately_Req,CardIssuerService_PrintCardImmediately_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_PrintCardImmediately(ctx);
-					}
-					break;
-				case CardIssuerService_Method_QueryCIStatus:
-					{
-						SpReqAnsContext<CardIssuerService_QueryCIStatus_Req,CardIssuerService_QueryCIStatus_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_QueryCIStatus_Req,CardIssuerService_QueryCIStatus_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_QueryCIStatus(ctx);
-					}
-					break;
-				case CardIssuerService_Method_GetDevInfo:
-					{
-						SpReqAnsContext<CardIssuerService_GetDevInfo_Req,CardIssuerService_GetDevInfo_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<CardIssuerService_GetDevInfo_Req,CardIssuerService_GetDevInfo_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_GetDevInfo(ctx);
-					}
-					break;
-				default:
-					assert(0);
-					break;
-			}
-			
-		} else {
-			pTransactionContext->SendAnswer(Error);
-		}
-	}
-
-};
-
-
-///////////////////////////
-
-} // namespace CardIssuer
-#endif // __CARDISSUER_SERVER_G_H

+ 4 - 0
Module/mod_CardIssuerStand/mod_cardissuer.h

@@ -257,9 +257,13 @@ public:
 	void IssueEx(SpReqAnsContext<CardIssuerService_IssueEx_Req, CardIssuerService_IssueEx_Ans>::Pointer ctx)
 	{
 		LOG_FUNCTION();
+		int state = m_fsm.GetFSMState();
 		if (!m_fsm.GetDevInitFlag()) {
 			ctx->Answer(Error_DevNotAvailable, CardIssuer_UserErrorCode_DevOpen_Failed);
 		}
+		else if (state == 9) {
+			ctx->Answer(Error_InvalidState, CardIssuer_UserErrorCode_StandEntityInFailState);
+		}
 		else {
 			m_bNewSessionInit = false;
 			CardIssueExEvent* pEvt = new CardIssueExEvent();

+ 6 - 6
Module/mod_FingerPrint/FingerPrintFSM.cpp

@@ -931,13 +931,13 @@ ErrorCodeEnum CFingerPrintFSM::GetDevCatInfo(DevCategoryInfo& devInfo)
 {
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("DevCatgoryInfo len:%d, %d, %d", strlen(m_devCatInfo.szModel), strlen(m_devCatInfo.szType), strlen(m_devCatInfo.szVendor));
 #ifdef RVC_OS_WIN
-	strncpy_s(devInfo.szModel, m_devCatInfo.szModel, (MAX_DEV_MODEL_LEN > strlen(m_devCatInfo.szModel)) ? strlen(m_devCatInfo.szModel) : MAX_DEV_MODEL_LEN);
-	strncpy_s(devInfo.szType, m_devCatInfo.szType, (MAX_DEV_TYPE_LEN > strlen(m_devCatInfo.szType)) ? strlen(m_devCatInfo.szType) : MAX_DEV_TYPE_LEN);
-	strncpy_s(devInfo.szVendor, m_devCatInfo.szVendor, (MAX_DEV_VENDOR_LEN > strlen(m_devCatInfo.szVendor)) ? strlen(m_devCatInfo.szVendor) : MAX_DEV_VENDOR_LEN);
+	strncpy_s(devInfo.szModel, m_devCatInfo.szModel, (MAX_DEV_MODEL_LEN > strlen(m_devCatInfo.szModel)) ? strlen(m_devCatInfo.szModel) : MAX_DEV_MODEL_LEN-1);
+	strncpy_s(devInfo.szType, m_devCatInfo.szType, (MAX_DEV_TYPE_LEN > strlen(m_devCatInfo.szType)) ? strlen(m_devCatInfo.szType) : MAX_DEV_TYPE_LEN-1);
+	strncpy_s(devInfo.szVendor, m_devCatInfo.szVendor, (MAX_DEV_VENDOR_LEN > strlen(m_devCatInfo.szVendor)) ? strlen(m_devCatInfo.szVendor) : MAX_DEV_VENDOR_LEN-1);
 #else
-	strncpy(devInfo.szModel, m_devCatInfo.szModel, (MAX_DEV_MODEL_LEN > strlen(m_devCatInfo.szModel)) ? strlen(m_devCatInfo.szModel) : MAX_DEV_MODEL_LEN);
-	strncpy(devInfo.szType, m_devCatInfo.szType, (MAX_DEV_TYPE_LEN > strlen(m_devCatInfo.szType)) ? strlen(m_devCatInfo.szType) : MAX_DEV_TYPE_LEN);
-	strncpy(devInfo.szVendor, m_devCatInfo.szVendor, (MAX_DEV_VENDOR_LEN > strlen(m_devCatInfo.szVendor)) ? strlen(m_devCatInfo.szVendor) : MAX_DEV_VENDOR_LEN);
+	strncpy(devInfo.szModel, m_devCatInfo.szModel, (MAX_DEV_MODEL_LEN > strlen(m_devCatInfo.szModel)) ? strlen(m_devCatInfo.szModel) : MAX_DEV_MODEL_LEN-1);
+	strncpy(devInfo.szType, m_devCatInfo.szType, (MAX_DEV_TYPE_LEN > strlen(m_devCatInfo.szType)) ? strlen(m_devCatInfo.szType) : MAX_DEV_TYPE_LEN-1);
+	strncpy(devInfo.szVendor, m_devCatInfo.szVendor, (MAX_DEV_VENDOR_LEN > strlen(m_devCatInfo.szVendor)) ? strlen(m_devCatInfo.szVendor) : MAX_DEV_VENDOR_LEN-1);
 #endif // RVC_OS_WIN
 
 	return Error_Succeed;

+ 3 - 1
Module/mod_FingerPrint/FingerPrintFSM.h

@@ -278,7 +278,9 @@ public:
 	void ResetDevInitFlag() { m_bOpened = false; }//À¶ÑÀ¶àºÏһʹÓÃ
 	void SetInWhatPage(int bValue) { m_iInWhatPage = bValue; }
 
-
+	DevStateEnum GetDevState(){
+		return m_devState;
+	}
 
 	void SelfTest(EntityTestEnum eTestType,CSmartPointer<ITransactionContext> pTransactionContext);
 

+ 2 - 1
Module/mod_FingerPrint/mod_FingerPrint.h

@@ -144,13 +144,14 @@ public:
 		LogWarn(Severity_Low, Error_Unexpect, LOG_ERR_FINGERPRINT_REQUEST_REFUSE, "web invoke CheckAndMatch request refuse");
 		ctx->Answer(Error_Exception);
 	}
-	//废弃
+	//设备安装状态使用
 	void GetDevInfo(SpReqAnsContext<FingerPrintService_GetDevInfo_Req, FingerPrintService_GetDevInfo_Ans>::Pointer ctx)
 	{
 		DevCategoryInfo devCatInfo;
 		m_fsm.GetDevCatInfo(devCatInfo);
 		ctx->Ans.model = devCatInfo.szModel;
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetDevInfo model is:%s", (const char*)ctx->Ans.model);
+		ctx->Ans.state = (int)m_fsm.GetDevState();
 		ctx->Answer(Error_Succeed);
 	}
 	//废弃

+ 10 - 0
Module/mod_IDCertificate/mod_IDCertificate.h

@@ -183,6 +183,16 @@ public:
 		if (ctx->Ans.model.GetLength() < 256)
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetDevInfo")
 			("%s", (const char*)ctx->Ans.model);
+
+		if (m_fsm.GetDevInitFlag())
+		{
+			ctx->Ans.state = DEVICE_STATUS_NORMAL;
+		}
+		else
+		{
+			ctx->Ans.state = DEVICE_STATUS_NOT_READY;
+		}
+
 		ctx->Answer(Error_Succeed);
 	}
 

+ 33 - 33
Module/mod_cardissuer/CardIssuer.xml

@@ -1,18 +1,18 @@
 <?xml version="1.0" encoding="gb2312" ?>
 <entity name="CardIssuer">
 	<class name="CardIssuerService" overlap="true" exclusive="false">	
-		<twoway name="Insert" overlap="true">
+		<twoway name="Insert" overlap="true" method_id="0">
 			<req>
 				<param name="aid" type="string"/>
 			</req>
 			<res>
 			</res>			
 		</twoway>
-		<oneway name="CancelInsert" overlap="true">			
+		<oneway name="CancelInsert" overlap="true" method_id="1">			
 		</oneway>
-		<oneway name="InsertWaitMore" overlap="true">			
+		<oneway name="InsertWaitMore" overlap="true" method_id="2">			
 		</oneway>					
-		<twoway name="Read" overlap="true">
+		<twoway name="Read" overlap="true" method_id="3">
 			<req>
 				<param name="aid" type="string"/>
 				<param name="reserved1" type="int"/>
@@ -38,19 +38,19 @@
 				<param name="reserved4" type="string"/>
 			</res>
 		</twoway>			
-		<twoway name="Capture" overlap="true">
+		<twoway name="Capture" overlap="true" method_id="4">
 			<req>
 			</req>
 			<res>
 			</res>			
 		</twoway>
-		<twoway name="Eject" overlap="true">
+		<twoway name="Eject" overlap="true" method_id="5">
 			<req>
 			</req>
 			<res>
 			</res>			
 		</twoway>						
-		<twoway name="PreOnline" overlap="true">
+		<twoway name="PreOnline" overlap="true" method_id="6">
 			<req>
 				<param name="businessData" type="string"/>
 				<param name="reserved1" type="string"/>
@@ -60,7 +60,7 @@
 				<param name="result" type="string"/>
 			</res>			
 		</twoway>
-		<twoway name="PostOnline" overlap="true">
+		<twoway name="PostOnline" overlap="true" method_id="7">
 			<req>
 				<param name="data" type="string"/>
 			</req>
@@ -68,15 +68,15 @@
 				<param name="result" type="string"/>
 			</res>			
 		</twoway>
-		<oneway name="Exit" overlap="true">			
+		<oneway name="Exit" overlap="true" method_id="8">			
 		</oneway>			
-		<twoway name="Issue" overlap="true">
+		<twoway name="Issue" overlap="true" method_id="9">
 			<req>
 			</req>
 			<res>
 			</res>			
 		</twoway>				
-		<twoway name="GetMaterialCount" overlap="true">
+		<twoway name="GetMaterialCount" overlap="true" method_id="10">
 			<req>
 			</req>
 			<res>
@@ -86,7 +86,7 @@
 				<param name="mixed" type="int"/>
 			</res>			
 		</twoway>
-		<twoway name="SetMaterialCount" overlap="true">
+		<twoway name="SetMaterialCount" overlap="true" method_id="11">
 			<req>
 				<param name="remains" type="int"/>
 				<param name="captured" type="int"/>
@@ -100,9 +100,9 @@
 			<res>
 			</res>			
 		</twoway>
-		<oneway name="SetIssueFlag" overlap="true">			
+		<oneway name="SetIssueFlag" overlap="true" method_id="12">			
 		</oneway>
-		<twoway name="ReadEx" overlap="true">
+		<twoway name="ReadEx" overlap="true" method_id="13">
 			<req>
 				<param name="aid" type="string"/>
 				<param name="reserved1" type="string"/>
@@ -126,7 +126,7 @@
 				<param name="reserved2" type="string"/>
 			</res>
 		</twoway>
-		<twoway name="QueryCardInfo" overlap="true">
+		<twoway name="QueryCardInfo" overlap="true" method_id="14">
 			<req>
 			</req>
 			<res>
@@ -135,7 +135,7 @@
 				<param name="reserved2" type="string"/>
 			</res>			
 		</twoway>
-		<twoway name="WriteTrack" overlap="true">
+		<twoway name="WriteTrack" overlap="true" method_id="15">
 			<req>
 				<param name="mode" type="int"/>
 				<param name="co" type="int"/>
@@ -150,7 +150,7 @@
 				<param name="reserved2" type="string"/>
 			</res>
 		</twoway>
-		<twoway name="GetMaterialCountEx" overlap="true">
+		<twoway name="GetMaterialCountEx" overlap="true" method_id="16">
 			<req>
 				<param name="GetHopper" type="array_int"/>
 				<param name="reserved1" type="array_int"/>
@@ -173,7 +173,7 @@
 				<param name="reserved2" type="array_string"/>
 			</res>			
 		</twoway>
-		<twoway name="SetMaterialCountEx" overlap="true">
+		<twoway name="SetMaterialCountEx" overlap="true" method_id="17">
 			<req>
 				<param name="SetHopper" type="array_int"/>
 				<param name="SetCaptured" type="int"/>
@@ -196,7 +196,7 @@
 				<param name="reserved2" type="array_string"/>	
 			</res>			
 		</twoway>
-		<twoway name="SetSomeFlag" overlap="true">
+		<twoway name="SetSomeFlag" overlap="true" method_id="18">
 			<req>
 				<param name="IssueBusiness" type="int"/>
 				<param name="reserved1" type="array_int"/>
@@ -207,7 +207,7 @@
 				<param name="reserved2" type="array_string"/>
 			</res>				
 		</twoway>
-		<twoway name="GetSCIInfo" overlap="true">
+		<twoway name="GetSCIInfo" overlap="true" method_id="19">
 			<req>
 			</req>
 			<res>
@@ -217,7 +217,7 @@
 				<param name="reserved2" type="array_string"/>
 			</res>			
 		</twoway>
-		<twoway name="IssueEx" overlap="true">
+		<twoway name="IssueEx" overlap="true" method_id="20">
 			<req>
 				<param name="hopper" type="int"/>
 				<param name="reserved1" type="array_int"/>
@@ -228,7 +228,7 @@
 				<param name="reserved2" type="array_string"/>					
 			</res>			
 		</twoway>
-		<twoway name="OpenSafeLock" overlap="true">
+		<twoway name="OpenSafeLock" overlap="true" method_id="21">
 			<req>
 				<param name="reserved1" type="array_int"/>
 				<param name="reserved2" type="array_string"/>			
@@ -238,7 +238,7 @@
 				<param name="reserved2" type="array_string"/>					
 			</res>			
 		</twoway>
-		<twoway name="SAMICCommand" overlap="true">
+		<twoway name="SAMICCommand" overlap="true" method_id="22">
 			<req>
 				<param name="cmdType" type="int"/>
 				<param name="param1" type="array_int"/>
@@ -253,7 +253,7 @@
 				<param name="reserved2" type="array_string"/>					
 			</res>			
 		</twoway>
-		<twoway name="QueryPrinterStatus" overlap="true">
+		<twoway name="QueryPrinterStatus" overlap="true" method_id="23">
 			<req>
 				<param name="param1" type="array_int"/>
 				<param name="param2" type="array_string"/>
@@ -267,7 +267,7 @@
 				<param name="reserved2" type="array_string"/>					
 			</res>			
 		</twoway>
-		<twoway name="Print" overlap="true">
+		<twoway name="Print" overlap="true" method_id="24">
 			<req>
 				<param name="data1" type="blob"/>
 				<param name="data2" type="blob"/>
@@ -283,7 +283,7 @@
 				<param name="reserved2" type="array_string"/>					
 			</res>			
 		</twoway>
-		<twoway name="QuerySCIList" overlap="true">
+		<twoway name="QuerySCIList" overlap="true" method_id="25">
 			<req>			
 				<param name="reserved1" type="array_int"/>
 				<param name="reserved2" type="array_string"/>			
@@ -307,7 +307,7 @@
 				<param name="reserved2" type="array_string"/>					
 			</res>			
 		</twoway>		
-		<twoway name="BindSCI" overlap="true">
+		<twoway name="BindSCI" overlap="true" method_id="26">
 			<req>
 				<param name="type" type="int"/>
 				<param name="sciNo" type="string" />			
@@ -319,7 +319,7 @@
 				<param name="reserved2" type="array_string"/>					
 			</res>			
 		</twoway>
-		<twoway name="PreOnlineOnStore" overlap="true">
+		<twoway name="PreOnlineOnStore" overlap="true" method_id="27">
 			<req>
 				<param name="account" type="string"/>
 				<param name="termNo" type="string"/>
@@ -340,7 +340,7 @@
 				<param name="reserved4" type="array_string"/>				
 			</res>			
 		</twoway>
-		<twoway name="NotifyPreonline" overlap="true">
+		<twoway name="NotifyPreonline" overlap="true" method_id="28">
 			<req>
 				<param name="findCard" type="int"/>
 				<param name="cardPos" type="int"/>			
@@ -360,7 +360,7 @@
 				<param name="reserved4" type="array_string"/>				
 			</res>			
 		</twoway>
-		<twoway name="QueryCardInfoOnStore" overlap="true">
+		<twoway name="QueryCardInfoOnStore" overlap="true" method_id="29">
 			<req>
 				<param name="reserved1" type="array_int"/>
 				<param name="reserved2" type="array_int"/>
@@ -376,7 +376,7 @@
 				<param name="reserved4" type="array_string"/>				
 			</res>			
 		</twoway>
-		<twoway name="GetAddCardInfo" overlap="true">
+		<twoway name="GetAddCardInfo" overlap="true" method_id="30">
 			<req>
 				<param name="isSync" type="int"/>
 				<param name="reserved1" type="array_int"/>
@@ -395,7 +395,7 @@
 				<param name="reserved4" type="array_string"/>				
 			</res>			
 		</twoway>		
-		<twoway name="PrintCardImmediately" overlap="true">
+		<twoway name="PrintCardImmediately" overlap="true" method_id="31">
 			<req>
 				<param name="formFile" type="string"/>
 				<param name="printData" type="string"/>
@@ -412,7 +412,7 @@
 				<param name="reserved4" type="array_string"/>				
 			</res>			
 		</twoway>
-		<twoway name="QueryCIStatus" overlap="true">
+		<twoway name="QueryCIStatus" overlap="true" method_id="32">
 			<req>
 				<param name="reserved1" type="array_int"/>
 				<param name="reserved2" type="array_int"/>

+ 10 - 4
Module/mod_cardissuer/CardIssuer_UserErrorCode.h

@@ -1,5 +1,5 @@
-#ifndef _CARDISSUERSTAND_USER_ERRORCODE_H
-#define _CARDISSUERSTAND_USER_ERRORCODE_H
+#ifndef _CARDISSUER_USER_ERRORCODE_H
+#define _CARDISSUER_USER_ERRORCODE_H
 #pragma once
 
 #define CardIssuer_UserErrorCode_Start 0x20300200
@@ -53,6 +53,7 @@
 #define CardIssuer_UserErrorCode_PrintCardFaceRightNow				(CardIssuer_UserErrorCode_Start + 44) //卡面打印
 #define CardIssuer_UserErrorCode_InsertCardSucceed					(CardIssuer_UserErrorCode_Start + 45) //前端插卡
 
+#define CardIssuer_UserErrorCode_StandEntityInFailState				(CardIssuer_UserErrorCode_Start + 46)	//卡机处于故障态,请稍后重试,重试还有问题请联系厂商维护
 
 #define CardIssuer_UserErrorCode_CardStore_SlotNum					(CardIssuer_UserErrorCode_Start + 49) //记录卡库容量
 #define CardIssuer_UserErrorCode_Invoke_Access_IniDev_Failed		(CardIssuer_UserErrorCode_Start + 50) //建立加密通道时,调用准入接口失败
@@ -91,7 +92,7 @@
 #define CardIssuer_UserErrorCode_AddCardToStoreStepFirst			(CardIssuer_UserErrorCode_Start + 74)	//加卡第一步,从卡箱移到读卡器
 #define CardIssuer_UserErrorCode_AddCardToStoreStepLast				(CardIssuer_UserErrorCode_Start + 75)	//加卡第二步,从读卡器移到卡槽
 #define CardIssuer_UserErrorCode_ReadAccount_Data_Error				(CardIssuer_UserErrorCode_Start + 76)	//加卡过程,卡片数据有误
-//#define CardIssuer_UserErrorCode_FindFirstEmptySlot_Failed			(CardIssuer_UserErrorCode_Start + 77)	//加卡过程,未找到空卡槽
+#define CardIssuer_UserErrorCode_AddCardToStoreStepFirst_Failed		(CardIssuer_UserErrorCode_Start + 77)	//加卡过程,移卡到卡槽失败
 #define CardIssuer_UserErrorCode_NotifyPreonline_Wait_TooLong		(CardIssuer_UserErrorCode_Start + 78)	//NotifyPreonline收到时已经超过等待时间
 
 //临时 后续去除
@@ -183,7 +184,7 @@
 #define CardIssuer_UserErrorCode_HopperCardMixed					(CardIssuer_UserErrorCode_Start + 164)	//卡箱中的卡片放置不对
 #define CardIssuer_UserErrorCode_CardActive_CardStore_OffLine		(CardIssuer_UserErrorCode_Start + 165)	//跨机时卡库不在线
 #define CardIssuer_UserErrorCode_ReadByRF							(CardIssuer_UserErrorCode_Start + 166)	//非接读取成功
-#define CardIssuer_UserErrorCode_CardActive_CardStore_Issuing		(CardIssuer_UserErrorCode_Start + 167)	//跨机时卡库正在本地领卡
+#define CardIssuer_UserErrorCode_CardActive_CardStore_Issuing		(CardIssuer_UserErrorCode_Start + 167)	//跨机时卡库正在本地领卡或加卡
 #define CardIssuer_UserErrorCode_CardActive_CardStore_CallByOther	(CardIssuer_UserErrorCode_Start + 168)	//跨机时卡库正在其他VTM调用
 #define CardIssuer_UserErrorCode_ReadAccount_Cost_Time				(CardIssuer_UserErrorCode_Start + 169)	//ReadAccount耗时
 #define CardIssuer_UserErrorCode_CardActive_CardIssuer_InFaultState	(CardIssuer_UserErrorCode_Start + 170)	//卡库收到跨机请求时卡机未成功打开
@@ -202,4 +203,9 @@
 #define CardIssuer_UserErrorCode_Dev_CardJammed				(CardIssuer_UserErrorCode_Start + 189)//塞卡
 #define CardIssuer_UserErrorCode_Dev_SlotJammed				(CardIssuer_UserErrorCode_Start + 190)//卡槽堵塞
 #define CardIssuer_UserErrorCode_Dev_SlotInvalid			(CardIssuer_UserErrorCode_Start + 191)//卡槽地址非法(越界等)
+
+//盘库异常明细报错
+#define CardIssuer_UserErrorCode_KakuPanKu_MoveCardFromSlot_Failed				(CardIssuer_UserErrorCode_Start + 200)	//卡库盘库失败,卡槽移卡失败
+#define CardIssuer_UserErrorCode_KakuPanKu_ReadAccount_Failed					(CardIssuer_UserErrorCode_Start + 201)	//卡库盘库失败,读卡失败吞卡
+#define CardIssuer_UserErrorCode_KakuPanKu_MoveCardToSlot_Failed				(CardIssuer_UserErrorCode_Start + 202)	//卡库盘库失败,卡移回卡槽失败
 #endif //_CARDISSUER_USER_ERRORCODE_H

+ 4 - 0
Module/mod_cardissuer/mod_cardissuer.h

@@ -257,9 +257,13 @@ public:
 	void IssueEx(SpReqAnsContext<CardIssuerService_IssueEx_Req, CardIssuerService_IssueEx_Ans>::Pointer ctx)
 	{
 		LOG_FUNCTION();
+		int state = m_fsm.GetFSMState();
 		if (!m_fsm.GetDevInitFlag()) {
 			ctx->Answer(Error_DevNotAvailable, CardIssuer_UserErrorCode_DevOpen_Failed);
 		}
+		else if (state == 9) {
+			ctx->Answer(Error_InvalidState, CardIssuer_UserErrorCode_StandEntityInFailState);
+		}
 		else {
 			m_bNewSessionInit = false;
 			CardIssueExEvent* pEvt = new CardIssueExEvent();

+ 10 - 20
Module/mod_chromium/CModTools.cpp

@@ -122,14 +122,14 @@ namespace Chromium {
 
 		return true;
 #else
-		do 
+		do
 		{
-            boost::process::child child_process("sudo killall -9 cefclient");
-            child_process.wait();
+			boost::process::child child_process("sudo killall -9 uosbrowser");
+			child_process.wait();
 		} while (false);
 		do 
 		{
-            boost::process::child child_process("sudo killall -9 uosbrowser");
+            boost::process::child child_process("sudo killall -9 cefclient");
             child_process.wait();
 		} while (false);
 
@@ -231,20 +231,10 @@ namespace Chromium {
 		break;
 		case ERR_PAGE_REASON::ErrNotify:
 		{
-			errPageParams.Append(CSimpleStringA("reason=")).Append(std::get<0>(exParam).c_str())
-			.Append(CSimpleStringA(generate_url_prefix())).Append("&errmsg=").Append(std::get<1>(exParam).c_str());
-            if (std::get<2>(exParam).length() > 5 && showRebootTime)
-				errPageParams.Append(CSimpleStringA(generate_url_prefix())).Append("&reboottime=").Append(std::get<2>(exParam).c_str());
+			errPageParams.Append(CSimpleStringA("reason=")).Append(std::get<0>(exParam).c_str()).Append(CSimpleStringA(generate_url_prefix()));
 
 			errPageParams.Append(CSimpleStringA(generate_url_prefix())).Append(CSimpleStringA("&showlimit=")).Append(std::to_string((unsigned long long)1).c_str());
-			errPageParams.Append(CSimpleStringA(generate_url_prefix())).Append(CSimpleStringA("&terminalno=")).Append(std::get<0>(norParam).c_str());
-			errPageParams.Append(CSimpleStringA(generate_url_prefix())).Append(CSimpleStringA("&errtime=")).Append(std::get<1>(norParam).c_str());
-
-            CSimpleStringA strSysCode = CSimpleStringA::Format("0x%X", std::get<3>(exParam));
-            CSimpleStringA strUsrCode = CSimpleStringA::Format("0x%X", std::get<4>(exParam));
 
-			errPageParams.Append(CSimpleStringA(generate_url_prefix())).Append(CSimpleStringA("&syscode=")).Append(strSysCode);
-			errPageParams.Append(CSimpleStringA(generate_url_prefix())).Append(CSimpleStringA("&usercode=")).Append(strUsrCode);
 		}
 		break;
 		default:
@@ -516,7 +506,7 @@ namespace Chromium {
 	std::string CModTools::generateInstallCmd(std::string installUrl)
 	{
 #if defined(RVC_OS_LINUX)
-		return generateBrowserCMDForEverything(installUrl, 1);
+		return generateBrowserCMDForEverything(installUrl, 0);
 #else
 		CSimpleStringA strChromiumPath = GetCefHead(this->m_pEntity), strCmdLine = "";
 		strCmdLine.Append(strChromiumPath).Append(" --url=").Append(installUrl.c_str());
@@ -768,8 +758,8 @@ namespace Chromium {
 		{
 			std::vector<std::string> installUrls;
 #ifdef DEVOPS_ON_ST /*DevOps流水线编译,ST环境*/
-			installUrls.push_back("http://deviceinstallweb.paasst.cmbchina.cn");
-			installUrls.push_back("http://deviceinstallweb.paasst.cmbchina.com");
+			installUrls.push_back("https://deviceinstallweb.paasst.cmbchina.cn/inputTerminalNo");
+			installUrls.push_back("https://deviceinstallweb.paasst.cmbchina.cn/inputTerminalNo");
 #elif defined(DEVOPS_ON_UAT)/*DevOps流水线编译,UAT环境*/
 			installUrls.push_back("http://deviceinstallweb.paasuat.cmbchina.cn");
 			installUrls.push_back("http://deviceinstallweb.paasuat.cmbchina.com");
@@ -777,8 +767,8 @@ namespace Chromium {
 			installUrls.push_back("http://deviceinstallweb.paas.cmbchina.cn");
 			installUrls.push_back("http://deviceinstallweb.paas.cmbchina.com");
 #else/*本地编译等非DevOps环境编译的版本*/
-			installUrls.push_back("http://deviceinstallweb.paasst.cmbchina.cn");
-			installUrls.push_back("http://deviceinstallweb.paasst.cmbchina.com");
+			installUrls.push_back("https://deviceinstallweb.paasst.cmbchina.cn/inputTerminalNo");
+			installUrls.push_back("https://deviceinstallweb.paasst.cmbchina.cn/inputTerminalNo");
 #endif
 			auto checkRet = DetectActiveHttp(installUrls);
 			if (!checkRet.first)

+ 2 - 0
Module/mod_chromium/CSocketClient.cpp

@@ -9,7 +9,9 @@
 #include <vector>
 #include <string>
 #include "publicFunExport.h"
+#if defined(RVC_OS_LINUX)
 #include <RestfulFunc.h>
+#endif
 #pragma comment(lib, "libpublicFun.lib")
 
 using boost::asio::ip::tcp;

+ 4 - 2
Module/mod_chromium/CWebsocketServer.cpp

@@ -269,7 +269,7 @@ namespace Chromium {
 
 
 			auto logType = json_deal::getStringFromCjsonObj(pJson.get(), msg_logType);//it can be equal to Sys/User
-			LOG_TYPE_E t_type = (logType.second.Compare("User", true) == 0) ? LOG_TYPE_USER : LOG_TYPE_SYSTEM;
+			LOG_TYPE_E t_type = (logType.second.Compare("User", true) == 0) ? LOG_TYPE_BUSINESS_USER : LOG_TYPE_BUSINESS_SYSTEM;
 
 			//通过变量方式进行处理
 			DbgWithLink t_obj(changeMessageTypeToLogLevel(messageType), t_type);
@@ -642,7 +642,8 @@ namespace Chromium {
 
 	void CWebsocketServer::open_handler(websocketpp::connection_hdl hdl) {
 		// hand shake here
-		DbgEx("new connection to ws server : %u", hdl.lock().get());
+		server::connection_ptr con = m_wsserver.get_con_from_hdl(hdl);
+		DbgEx("new connection to ws server : %u, isSecure:%d, curUrl:%s", hdl.lock().get(), con->get_uri()->get_secure(), con->get_uri()->str().c_str());
 
 		m_connection_hdls.insert(std::pair<unsigned int, websocketpp::connection_hdl>((long)hdl.lock().get(), hdl));
 	}
@@ -1016,6 +1017,7 @@ namespace Chromium {
 			catch (...)
 			{
 				bSockUseError = true;
+				DbgEx("%s sock %d error", __FUNCTION__, DEFAULT_SERVER_PORT);
 			}
 			//释放
 			if (!bSockUseError && pSockTcp != NULL)

+ 2 - 0
Module/mod_chromium/CWebsocketServer.h

@@ -25,6 +25,7 @@ namespace Chromium {
 		
 		static void stopServer() {
 			m_wsserver.stop();
+			DbgEx("%s end", __FUNCTION__);
 		}
 
 		~CWebsocketServer()
@@ -34,6 +35,7 @@ namespace Chromium {
 			m_doRunThread.join();
 			m_doReLinkThread.join();
 			m_wsserver.stop();
+			DbgEx("%s end", __FUNCTION__);
 		}
 
 		void run();

+ 2 - 0
Module/mod_chromium/mod_chromium.cpp

@@ -501,9 +501,11 @@ namespace Chromium {
 
 	void CChromiumEntity::openInstallPage()
 	{
+		/*
 		LogWarn(Severity_Middle, Error_NotSupport, LOG_WARN_CHROMIUM_INSTALL_NOTSURPORT,
 			CSimpleStringA::Format("Not surport install mode").GetData());
 		return;
+		*/
 		auto openRet = CModTools::get_mutable_instance().StartChromiumBrowser(ERR_PAGE_REASON::Install);
 		DbgEx("open page install %s, pid:%d", Error_Succeed == openRet.first ? "success" : "fail", openRet.second);
 	}

+ 11 - 7
Module/mod_healthmanager/HealthManagerFSM.cpp

@@ -145,9 +145,10 @@ ErrorCodeEnum CHealthManagerFSM::Initial()
 	if (m_wkUpdatePeriod <= 0 || m_wkUpdatePeriod > 365)
 		m_wkUpdatePeriod = 30;//default
 	spConfigCen->ReadConfigValueInt(GetEntityBase()->GetEntityName(), "DoNotUpdateWKDaily", m_iDoNotUpdateWKDaily);
-
-	//oilyang@20210929
-	GetEntityBase()->GetFunction()->SetSysVar("TerminalStage", "X");
+	CSimpleStringA csTmpTS("");
+	GetEntityBase()->GetFunction()->GetSysVar("TerminalStage", csTmpTS);
+	if (csTmpTS.Compare("N") != 0)
+		GetEntityBase()->GetFunction()->SetSysVar("TerminalStage", "X");
 	WaitDeamonFinishTask* task = new WaitDeamonFinishTask(this);
 	GetEntityBase()->GetFunction()->PostThreadPoolTask(task);
 
@@ -1806,11 +1807,14 @@ void CHealthManagerFSM::WKUpdatePeriod()
 	else
 	{
 		//if have exceed the time,we should update working key in the next peroid
-		int xTerm = atoi(m_sysInfo.strTerminalID.SubString(m_sysInfo.strTerminalID.GetLength() - 7, 7));
-		if ((todayDays % m_wkUpdatePeriod) != (xTerm % m_wkUpdatePeriod))
+		if (todayDays - lastUpdateDays < m_wkUpdatePeriod * 2)
 		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("todayDays:%d, xTerm:%d, m_wkUpdatePeriod:%d", todayDays, xTerm, m_wkUpdatePeriod);
-			return;
+			int xTerm = atoi(m_sysInfo.strTerminalID.SubString(m_sysInfo.strTerminalID.GetLength() - 7, 7));
+			if ((todayDays % m_wkUpdatePeriod) != (xTerm % m_wkUpdatePeriod))
+			{
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("todayDays:%d, xTerm:%d, m_wkUpdatePeriod:%d", todayDays, xTerm, m_wkUpdatePeriod);
+				return;
+			}
 		}
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("begin update WK now");
 		ErrorCodeEnum eErrCode = Error_Succeed;

+ 5 - 2
Module/mod_healthmanager/mod_healthmanager.cpp

@@ -1107,7 +1107,9 @@ bool CHealthManagerEntity::DoRestart()
 
 	m_currentVer = m_sysStaticInfo.InstallVersion.ToString();
 	DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI("DoRestart")("get current version [%s]", (LPCTSTR)m_currentVer);
-	if(csimpleStrMachineTypeCfg.IndexOf(m_sysStaticInfo.strMachineType)>=0)
+	CSimpleStringA csTermStage("");
+	GetFunction()->GetSysVar("TerminalStage", csTermStage);
+	if(csimpleStrMachineTypeCfg.IndexOf(m_sysStaticInfo.strMachineType)>=0 || csTermStage.Compare("N") == 0)//oilyang@20240104 N for install vtm app
 	{
 		LogWarn(Severity_Low, Error_Unexpect, HealthManager_UserErrorCode_Need_No_Guardian, "terminal is not need start up guardian");
 		bool bStop = StopGuardian();
@@ -1621,7 +1623,8 @@ void CHealthManagerEntity::OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nL
 
 		if (msg.GetLength() != 0)
 		{
-			StartManagerDesktopPage("warnPrompt.html");
+			WarnPromptTask* task = new WarnPromptTask(this); //通过工作线程弹窗并告警
+			GetFunction()->PostThreadPoolTask(task);
 		}
 
 		break;

+ 10 - 0
Module/mod_healthmanager/mod_healthmanager.h

@@ -347,4 +347,14 @@ struct FrameworkRestartTask : public ITaskSp
 	{
 		m_entity->WarnAndRestartFramwork();
 	}
+};
+
+struct WarnPromptTask : public ITaskSp
+{
+	CHealthManagerEntity* m_entity;
+	WarnPromptTask(CHealthManagerEntity* entity) : m_entity(entity) {}
+	void Process()
+	{
+		m_entity->StartManagerDesktopPage("warnPrompt.html");
+	}
 };

+ 695 - 11
Module/mod_vtmloader/VtmLoaderFSM.cpp

@@ -3,8 +3,10 @@
 #include "VtmLoaderFSM.h"
 #include "VtmLoader_UserCode.h"
 #include "EventCode.h"
+
 #if defined(RVC_OS_WIN)
 #include <io.h>
+#include "..\RvcVer.h"
 #else
 #include <unistd.h>
 #include <fcntl.h>
@@ -12,7 +14,23 @@
 #include "RestfulFunc.h"
 #endif //RVC_OS_WIN
 #include "../mod_healthmanager/HealthManager_client_g.h"
+#include "../mod_pinpad/PinPad_client_g.h"
+#include "../mod_cardissuer/CardIssuer_client_g.h"
+#include "../mod_IDCertificate/IDCertificate_client_g.h"
+#include "../mod_HSPScanner/HSPScanner_client_g.h"
+#include "../mod_ContactlessCard/ContactlessCard_client_g.h"
+#include "../mod_FingerPrint/FingerPrint_client_g.h"
+#include "../mod_gpio/Gpio_client_g.h"
+
 using namespace HealthManager;
+using namespace PinPad;
+using namespace CardIssuer;
+using namespace IDCertificate;
+using namespace HSPScanner;
+using namespace ContactlessCard;
+using namespace FingerPrint;
+using namespace Gpio;
+
 using namespace SP::Module::Net;
 
 #define ALLOW_MULTI_NETWORKD_CARDS
@@ -129,6 +147,7 @@ CVtmLoaderFSM::CVtmLoaderFSM()
 	m_iCanIgnoreAddrDetect = 0;
 	m_ullMaxAddrDetectTime = 10*60*1000;//10 minutes
 	m_iDetectInterval = 5000;
+	m_terminalNoFromWeb = "";
 }
 
 CVtmLoaderFSM::~CVtmLoaderFSM()
@@ -170,9 +189,27 @@ unsigned int CVtmLoaderFSM::s0_on_event(FSMEvent* pEvt)
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s0_on_event,pEvt:%d,pEvt->param1:%d", pEvt->iEvt, pEvt->param1);
 	switch (pEvt->iEvt)
 	{
-	case Event_NetworkCheck_Passed:
+	case USER_EVT_NetworkCheck_Passed:
 		pEvt->SetHandled();
 		return pEvt->param1;
+	case USER_EVT_CHECK_DEVICE_ENTITY:
+		pEvt->SetHandled();
+		{
+			CheckDeviceEntityEvent* cdee = dynamic_cast<CheckDeviceEntityEvent*>(pEvt);
+			CheckDeviceEntityTask* pTask = new CheckDeviceEntityTask(this);
+			pTask->ctx = cdee->ctx;
+			GetEntityBase()->GetFunction()->PostThreadPoolTask(pTask);
+		}
+		break;
+	case USER_EVT_SAVE_TERMINALNO:
+		pEvt->SetHandled();
+		{
+			SaveTerminalNoEvent* stne = dynamic_cast<SaveTerminalNoEvent*>(pEvt);
+			SaveTerminalNoTask* pTask = new SaveTerminalNoTask(this);
+			pTask->ctx = stne->ctx;
+			GetEntityBase()->GetFunction()->PostThreadPoolTask(pTask);
+		}
+		break;
 	default:
 		break;
 	}
@@ -738,7 +775,7 @@ unsigned int CVtmLoaderFSM::s4_on_event(FSMEvent* pEvt)
 void CVtmLoaderFSM::s5_on_entry()
 {
 	LOG_FUNCTION();
-	LogWarn(Severity_High, Error_Unexpect, VtmLoader_BootInfoPrint, "实体加载失败,启动终止。请排查启动失败实体或重启应用");
+	LogWarn(Severity_High, Error_Unexpect, VtmLoader_EntityLoad_Failed, "实体加载失败,启动终止。请排查启动失败实体或重启应用");
 	NoticeEntityLoadTask* pTask = new NoticeEntityLoadTask(this, Event_VtmLoader_EntityLoad_Failed);
 	GetEntityBase()->GetFunction()->PostThreadPoolTask(pTask);
 	CSmartPointer<IConfigInfo> spConfigCen, spConfigRun;
@@ -888,6 +925,7 @@ int CVtmLoaderFSM::NetWorkCheckAndGetSetting()
 	}
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040210F11")("connect to http(s) service ok.");
 	m_ullNetDetectCost = (SP::Module::Comm::RVCGetTickCount() - ullTmpStart) / 1000;//second
+	ToCheckIfInstalling();
 	ullTmpStart = SP::Module::Comm::RVCGetTickCount();
 	//拉取配置并通知提前启动的实体(Chromium)
 	//重试5次,失败则放弃
@@ -905,11 +943,22 @@ int CVtmLoaderFSM::NetWorkCheckAndGetSetting()
 		}
 	}
 
+	if (!VerifyVer())
+		return -1;
+
+	
+
 	m_ullGetConfigCost = (SP::Module::Comm::RVCGetTickCount() - ullTmpStart) / 1000;//second
 	//加载实体列表
-	EntityLoad();
 
-	return 0;
+	CSimpleStringA csTmpRootIni("");
+	if (!IsRootINIExist(csTmpRootIni))
+	{
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)(CSimpleStringA::Format("root.ini不存在(%s),Set TerminalStage N ", csTmpRootIni.GetData()).GetData());
+		GetEntityBase()->GetFunction()->SetSysVar("TerminalStage", "N");
+	}
+	return EntityLoad();
+
 }
 int CVtmLoaderFSM::EntityLoad()
 {
@@ -1055,6 +1104,46 @@ int CVtmLoaderFSM::EntityLoad()
 		//m_operatingOpt[arrEntity[0].GetData()].initSn = opNum;
 		//opNum++;
 	}
+
+	//oilyang if install VTM ,just wait for msg to start entity
+	CSimpleStringA csTermStage("");
+	ErrorCodeEnum eErrCode;
+	eErrCode = GetEntityBase()->GetFunction()->GetSysVar("TerminalStage", csTermStage);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("TerminalStage %s.", csTermStage.GetData());
+	if (csTermStage.Compare("N") == 0)//"N" for installing
+	{
+		//start UpgradeManager
+		CSmartPointer<IEntityFunctionPrivilege> pFuncPrivilege = m_pEntity->GetFunction().ConvertCase<IEntityFunctionPrivilege>();
+		CSmartPointer<IAsynWaitSp> spWait;
+		eErrCode = pFuncPrivilege->StartEntity("UpgradeManager", NULL, spWait);
+		if (eErrCode == Error_Succeed)
+		{
+			if (spWait != NULL)
+				eErrCode = spWait->WaitAnswer(MAX_AYSNC_TIMEOUT);
+		}
+		else
+		{
+			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("StartEntity UpgradeManager failed(%d).", eErrCode);
+			return -1;
+		}
+		eErrCode = pFuncPrivilege->StartEntity("HealthManager", NULL, spWait);
+		if (eErrCode == Error_Succeed)
+		{
+			if (spWait != NULL)
+				eErrCode = spWait->WaitAnswer(MAX_AYSNC_TIMEOUT);
+		}
+		else
+		{
+			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("StartEntity HealthManager failed(%d).", eErrCode);
+			return -1;
+		}
+		//wait for all the things have beed done,then save TerminalNo to root.ini
+		while (true)
+		{	
+			m_hSaveTerminalNoVar.Wait();
+			return 1;
+		}
+	}
 	return 0;
 }
 int CVtmLoaderFSM::CheckLoadResult(LoadStage eStage)
@@ -1362,13 +1451,57 @@ bool CVtmLoaderFSM::IsRootINIExist(CSimpleStringA& path)
 		return false;
 	}
 }
+
+bool CVtmLoaderFSM::VerifyVer()
+{
+	CSmartPointer<IConfigInfo> pConfig;
+	GetEntityBase()->GetFunction()->OpenConfig(Config_CenterSetting, pConfig);
+
+
+	int VerifyVersion = 0;
+	CSimpleStringA activeVer;
+	bool isVerEqual = false;
+	if (Error_Succeed != pConfig->ReadConfigValueInt("Common", "VerifyVersion", VerifyVersion) || Error_Succeed != GetEntityBase()->GetFunction()->GetRunningVersion(activeVer))
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("read [Common]VerifyVersion failed");
+#ifdef RVC_OS_WIN
+	std::string curVer = std::to_string((ULONGLONG)VER_Major) + "." + std::to_string((ULONGLONG)VER_Minor)
+		+ "." + std::to_string((ULONGLONG)VER_Revision) + "." + std::to_string((ULONGLONG)VER_Build);
+#else
+	std::string curVer = std::string(RVC_VERSION_STR);
+#endif
+	if (curVer == activeVer.GetData())
+		isVerEqual = true;
+	if (!isVerEqual)
+	{
+		CSimpleString showMsg = CSimpleString::Format("version not equal, file version:%s, acitve verion:%s", curVer.c_str(), activeVer.GetData());
+		switch (VerifyVersion)
+		{
+		case 0:
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)(showMsg.GetData());
+			break;
+		case 1:
+			LogWarn(Severity_Middle, Error_Unexpect, VtmLoader_DETECT_VERSION_ERR, showMsg.GetData());
+			break;
+		case 2:
+			LogWarn(Severity_Middle, Error_Unexpect, VtmLoader_DETECT_VERSION_ERR, showMsg.GetData());
+			return false;
+			break;
+		default:
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("VerifyVersion not support param:%d", VerifyVersion);
+			break;
+		}
+	}
+	return true;
+}
+
+
 bool CVtmLoaderFSM::GetConfig()
 {
 	//拉取配置前先检查root.ini文件
 	CSimpleStringA csTmpRootIni("");
-	if (!IsRootINIExist(csTmpRootIni))
+	if (!IsRootINIExist(csTmpRootIni) && m_terminalNoFromWeb.IsNullOrEmpty())
 	{
-		LogWarn(Severity_High, Error_Unexpect, VtmLoader_BootInfoPrint, CSimpleStringA::Format("root.ini不存在,请检查(%s)", csTmpRootIni.GetData()));
+		LogWarn(Severity_High, Error_Unexpect, VtmLoader_BootInfoPrint, CSimpleStringA::Format("root.ini不存在或安装页面未设置终端号,请检查(%s)", csTmpRootIni.GetData()).GetData());
 		return false;
 	}
 	ErrorCodeEnum eErr = Error_Succeed;
@@ -1394,7 +1527,8 @@ bool CVtmLoaderFSM::GetConfig()
 	CSimpleString CenterConfigTotal = "https://accessproxy-service.paasst.cmbchina.cn/centerconfig";
 #endif
 	LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, "开始拉取配置");
-	if (Error_Succeed != (eErr = GetEntityBase()->GetFunction()->GetPrivilegeFunction()->InitCfgUrl(channelId, tokenSecret, CommonLaunchUrl, CenterConfigTotal)))
+	VTMInitParam vtmInitParam(m_terminalNoFromWeb.GetData(), channelId, tokenSecret, CommonLaunchUrl, CenterConfigTotal);
+	if (Error_Succeed != (eErr = GetEntityBase()->GetFunction()->GetPrivilegeFunction()->InitCfgUrl(vtmInitParam)))
 	{
 		LogWarn(Severity_High, Error_Unexpect, VtmLoader_BootInfoPrint, CSimpleStringA::Format("拉取配置,初始化配置地址失败:0x%x(%s)", eErr, SpStrError(eErr)).GetData());
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040210F13").setResultCode("RTA1F01")("Get config,InitCfgUrl failed.");
@@ -1465,6 +1599,10 @@ bool CVtmLoaderFSM::GetConfig()
 		GetEntityBase()->GetFunction()->GetPrivilegeFunction()->BeginLogSend(default_endpoint, topicSys, topicUser, topicBeidou, topicBussSys, topicBussUser);
 	}
 
+	
+	
+	
+
 	GetEntityBase()->GetFunction()->GetSystemStaticInfo(m_sysInfo);
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("terminalNo:%s, MachineType:%s, MachineVersion:%s, Site:%s, Screen:%d, EnrolGPS:%f.%f, EnrolAddr:%s"
 		, m_sysInfo.strTerminalID.GetData(), m_sysInfo.strMachineType.GetData(), m_sysInfo.MachineVersion.ToString().GetData()
@@ -1521,7 +1659,7 @@ int CVtmLoaderFSM::HttpConnCheck(CSimpleStringA csHttAddr, HttpAddrType eType)
 #endif
 		if (!bCheckOK)
 		{
-			LogWarn(Severity_Middle, Error_Unexpect, VtmLoader_BootInfoPrint, CSimpleStringA::Format("尝试连接总行服务失败(%s),%d 秒后自动重试(第%d次重试)。请确认终端到总行服务网络是否正常", csHttAddr.GetData(), m_iDetectInterval/1000, httpcheckCount).GetData());
+			LogWarn(Severity_Middle, Error_Unexpect, VtmLoader_ConnectDetect_Failed, CSimpleStringA::Format("尝试连接总行服务失败(%s),%d 秒后自动重试(第%d次重试)。请确认终端到总行服务网络是否正常", csHttAddr.GetData(), m_iDetectInterval/1000, httpcheckCount).GetData());
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040210F11").setResultCode("RTA1F06")("connect to http(s) service(%s) failed.", csHttAddr.GetData());
 			m_httpCheckResult[eType] = HttpConnResult_Failed;
 			Sleep(m_iDetectInterval);
@@ -1532,7 +1670,7 @@ int CVtmLoaderFSM::HttpConnCheck(CSimpleStringA csHttAddr, HttpAddrType eType)
 				string tmpDns;
 				GetDns(tmpDns);
 				for (int i = 0; i < netList.GetCount(); i++) {
-					LogWarn(Severity_Middle, Error_Unexpect, VtmLoader_BootInfoPrint, CSimpleStringA::Format("(%d)interface:%s; ip:%s; mac:%s; %s", i, netList[i].description.c_str()
+					LogWarn(Severity_Low, Error_Unexpect, VtmLoader_BootInfoPrint, CSimpleStringA::Format("(%d)interface:%s; ip:%s; mac:%s; %s", i, netList[i].description.c_str()
 						, netList[i].ip.c_str(), netList[i].mac.c_str(), tmpDns.c_str()).GetData());
 				}
 			}
@@ -1542,10 +1680,10 @@ int CVtmLoaderFSM::HttpConnCheck(CSimpleStringA csHttAddr, HttpAddrType eType)
 			m_httpCheckResult[eType] = HttpConnResult_OK;
 			if ((SP::Module::Comm::RVCGetTickCount() - beginTick) > 3000)
 			{
-				LogWarn(Severity_Low, Error_Unexpect, VtmLoader_BootInfoPrint, CSimpleStringA::Format("第(%d)次尝试连接总行服务成功(%s),但是网络偏慢,连接花了(%d)秒,请检查网络!"
+				LogWarn(Severity_Middle, Error_Unexpect, VtmLoader_ConnectDetect_Slow, CSimpleStringA::Format("第(%d)次尝试连接总行服务成功(%s),但是网络偏慢,连接花了(%d)秒,请检查网络!"
 					, httpcheckCount, csHttAddr.GetData(), (SP::Module::Comm::RVCGetTickCount() - beginTick)/1000).GetData());
 			}
-			LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("尝试连接总行服务成功(%s)", csHttAddr.GetData()).GetData());
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040210F11")("尝试连接总行服务成功(%s)", csHttAddr.GetData());
 			return 0;
 		}
 	} 
@@ -1584,3 +1722,549 @@ void CVtmLoaderFSM::GetDns(string& dns)
 #endif
 	return;
 }
+void CVtmLoaderFSM::ToCheckIfInstalling()
+{
+	//拉取配置前先检查root.ini文件
+	CSimpleStringA csTmpRootIni("");
+	if (!IsRootINIExist(csTmpRootIni))
+	{
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)(CSimpleStringA::Format("root.ini is not exist(%s).maybe we are in installing,to wait for terminalno", csTmpRootIni.GetData()).GetData());
+		//oiltest
+		//OilTestTask* task = new OilTestTask(this);
+		//GetEntityBase()->GetFunction()->PostThreadPoolTask(task);
+		while (true)
+		{
+			m_hWaitTerminalNoVar.Wait();
+			break;
+		}
+	}
+}
+void CVtmLoaderFSM::CheckDeviceEntity(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx)
+{
+	if (!RefreshDeviceConfig(ctx))
+	{
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("RefreshDeviceConfig failed.");
+		ctx->Answer(Error_Unexpect);
+	}
+
+	CEntityStaticInfo staticInfo;
+	if (m_pEntity->GetFunction()->GetEntityStaticInfo(ctx->Req.entityName.GetData(), staticInfo) != Error_Succeed)
+	{
+		ctx->Answer(Error_Unexpect, VtmLoader_FailToGetEntityInfo);
+		return;
+	}
+
+	switch (staticInfo.wEntityDevelopID)
+	{
+	case 0x201:
+	case 0x203:
+	case 0x204:
+	case 0x206:
+	case 0x213:
+	case 0x217:
+		CheckDeviceBaseEntity(ctx, staticInfo.wEntityDevelopID);
+		break;
+	case 0x209://Gpio
+	case 0x301://SIPPhone
+		CheckEntityRestartIdle(ctx);
+		break;
+	case 0x208://MediaController
+		CheckVideo(ctx);
+	default:
+		break;
+	}
+	return;
+}
+void CVtmLoaderFSM::SaveTerminalNo(SpReqAnsContext<VtmLoaderService_SaveTerminalNo_Req, VtmLoaderService_SaveTerminalNo_Ans>::Pointer ctx)
+{
+	if (ctx->Req.terminalNo.IsNullOrEmpty())
+	{
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("terminalNo is null or empty");
+		ctx->Answer(Error_Param);
+		return;
+	}
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("write terminalNo[%s] to root.ini", ctx->Req.terminalNo.GetData());
+	ErrorCodeEnum eErr = GetEntityBase()->GetFunction()->GetPrivilegeFunction()->WriteTerminalNoToRootIni(ctx->Req.terminalNo);
+	ctx->Answer(eErr);
+}
+bool CVtmLoaderFSM::RefreshDeviceConfig(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx)
+{
+	if (ctx->Req.entityName.IsNullOrEmpty() || ctx->Req.paramNum <= 0)
+	{
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("param error! nothing to refresh");
+		return false;
+	}
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_USER)("entityName:%s,paramNum:%d,module.GetCount:%d",ctx->Req.entityName.GetData(),ctx->Req.paramNum,ctx->Req.module.GetCount());
+	if (ctx->Req.module.GetCount() < ctx->Req.paramNum || ctx->Req.name.GetCount() < ctx->Req.paramNum || ctx->Req.value.GetCount() < ctx->Req.paramNum)
+	{
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("param array length error! nothing to refresh");
+		return false;
+	}
+	for (int i = 0; i < ctx->Req.paramNum; i++)
+	{
+		MemCfgParam tmpParam("root", ctx->Req.module[i].GetData(), ctx->Req.name[i].GetData(), ctx->Req.value[i].GetData());
+		GetEntityBase()->GetFunction()->GetPrivilegeFunction()->ModifyMemCfgParam(tmpParam);
+	}
+	return true;
+}
+void CVtmLoaderFSM::CheckDeviceBaseEntity(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx, WORD wEntityID)
+{
+	CSmartPointer<IEntityFunctionPrivilege> pFuncPrivilege = m_pEntity->GetFunction().ConvertCase<IEntityFunctionPrivilege>();
+	CSmartPointer<IAsynWaitSp> spWait;
+	CEntityRunInfo runInfo;
+
+	//to check entity state
+	ErrorCodeEnum eErrCode = m_pEntity->GetFunction()->GetEntityRunInfo(ctx->Req.entityName.GetData(), runInfo);
+	if (eErrCode == Error_Succeed)
+	{
+		if (runInfo.eState != EntityState_NoStart)
+		{
+			eErrCode = pFuncPrivilege->TerminateEntity(ctx->Req.entityName.GetData(), spWait);
+			if (spWait != NULL)
+				eErrCode = spWait->WaitAnswer(MAX_AYSNC_TIMEOUT);
+		}
+	}
+	else
+	{
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("GetEntityRunInfo %s failed(%d).", ctx->Req.entityName.GetData(), eErrCode);
+		ctx->Answer(Error_Unexpect, VtmLoader_FailToGetEntityInfo);
+		return;
+	}
+
+	//(re)start entity
+	eErrCode = pFuncPrivilege->StartEntity(ctx->Req.entityName.GetData(), NULL, spWait);
+	if (eErrCode == Error_Succeed)
+	{
+		if (spWait != NULL)
+			eErrCode = spWait->WaitAnswer(MAX_AYSNC_TIMEOUT);
+	}
+	else
+	{
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("StartEntity %s failed(%d).", ctx->Req.entityName.GetData(), eErrCode);
+		ctx->Answer(Error_Unexpect, VtmLoader_FailToStartEntity);
+		return;
+	}
+
+	//TODO we should wait for device entity open suc?
+	int count = 0;
+	do
+	{
+		CEntityRunInfo runInfo;
+		eErrCode = m_pEntity->GetFunction()->GetEntityRunInfo(ctx->Req.entityName.GetData(), runInfo);
+		if (eErrCode == Error_Succeed)
+		{
+			if (runInfo.eState == EntityState_Idle)
+				break;
+			else if (runInfo.eState == EntityState_Lost || runInfo.eState == EntityState_Close || runInfo.eState == EntityState_Killed)
+			{
+				ctx->Answer(Error_Unexpect, VtmLoader_FailToStartEntity);
+				return;
+			}
+			count++;
+			if (count > 3)
+			{
+				ctx->Answer(Error_Unexpect, VtmLoader_FailToStartEntity);
+				return;
+			}
+			Sleep(1000);
+		}
+		else
+		{
+			ctx->Answer(Error_Unexpect, VtmLoader_FailToStartEntity);
+			return;
+		}
+	} while (true);
+	
+	const int retryGetDevInfoInterval = 5000;//5 seconds
+	CClientSessionBase* pClient;
+	int entityState = 0;
+	switch (wEntityID)
+	{
+	case 0x206: //pinpad
+	{
+		PinPadService_ClientBase* pClient = new PinPadService_ClientBase(this->m_pEntity);
+		if (pClient != NULL)
+		{
+			eErrCode = pClient->Connect();
+			if (eErrCode == Error_Succeed)
+			{
+				int retryTimes = 12;
+				do {
+					PinPadService_GetDevInfo_Req reqQ;
+					PinPadService_GetDevInfo_Ans ansQ;
+					eErrCode = (*pClient)(EntityResource::getLink().upgradeLink())->GetDevInfo(reqQ, ansQ, 5000);
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("eErrCode:%d,ansQ.state:%d", eErrCode, ansQ.state);
+					if (eErrCode == Error_Succeed && ansQ.state == 1)// 1 for "DEVICE_STATUS_NORMAL" defined in  DeviceBaseClass.h
+					{
+						DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("return to caller");
+						ctx->Answer(Error_Succeed);
+						break;
+					}
+					Sleep(retryGetDevInfoInterval);
+					retryTimes--;
+				} while (retryTimes > 0);
+				if (retryTimes == 0)
+					ctx->Answer(Error_Unexpect, VtmLoader_EntityNotInNormal);
+			}
+			else {
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("connect to %s failed.error code:%d", ctx->Req.entityName.GetData(), eErrCode);
+				ctx->Answer(Error_Unexpect, VtmLoader_FailToConnectEntity);
+			}
+		}
+		else
+			ctx->Answer(Error_Unexpect, VtmLoader_FailToConnectEntity);
+	}
+		break;
+	case 0x201: //IDCertificate
+	{
+		IDCertService_ClientBase* pClient = new IDCertService_ClientBase(this->m_pEntity);
+		if (pClient != NULL)
+		{
+			eErrCode = pClient->Connect();
+			if (eErrCode == Error_Succeed)
+			{
+				int retryTimes = 12;
+				do {
+					IDCertService_GetDevInfo_Req reqQ;
+					IDCertService_GetDevInfo_Ans ansQ;
+					eErrCode = (*pClient)(EntityResource::getLink().upgradeLink())->GetDevInfo(reqQ, ansQ, 5000);
+					if (eErrCode == Error_Succeed && ansQ.state == 1)// 1 for "DEVICE_STATUS_NORMAL" defined in  DeviceBaseClass.h
+					{
+						DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("return to caller");
+						ctx->Answer(Error_Succeed);
+						break;
+					}
+					Sleep(retryGetDevInfoInterval);
+					retryTimes--;
+				} while (retryTimes > 0);
+				if (retryTimes == 0)
+					ctx->Answer(Error_Unexpect, VtmLoader_EntityNotInNormal);
+			}
+			else {
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("connect to %s failed.error code:%d", ctx->Req.entityName.GetData(), eErrCode);
+				ctx->Answer(Error_Unexpect, VtmLoader_FailToConnectEntity);
+			}
+		}
+		else
+			ctx->Answer(Error_Unexpect, VtmLoader_FailToConnectEntity);
+	}
+		break;
+	case 0x204: //FingerPrint
+	{
+		FingerPrintService_ClientBase* pClient = new FingerPrintService_ClientBase(this->m_pEntity);
+		if (pClient != NULL)
+		{
+			eErrCode = pClient->Connect();
+			if (eErrCode == Error_Succeed)
+			{
+				int retryTimes = 12;
+				do {
+					FingerPrintService_GetDevInfo_Req reqQ;
+					FingerPrintService_GetDevInfo_Ans ansQ;
+					eErrCode = (*pClient)(EntityResource::getLink().upgradeLink())->GetDevInfo(reqQ, ansQ, 5000);
+					if (eErrCode == Error_Succeed && ansQ.state == 1)// 1 for "DEVICE_STATUS_NORMAL" defined in  DeviceBaseClass.h
+					{
+						DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("return to caller");
+						ctx->Answer(Error_Succeed);
+						break;
+					}
+					Sleep(retryGetDevInfoInterval);
+					retryTimes--;
+				} while (retryTimes > 0);
+				if (retryTimes == 0)
+					ctx->Answer(Error_Unexpect, VtmLoader_EntityNotInNormal);
+			}
+			else {
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("connect to %s failed.error code:%d", ctx->Req.entityName.GetData(), eErrCode);
+				ctx->Answer(Error_Unexpect, VtmLoader_FailToConnectEntity);
+			}
+		}
+		else
+			ctx->Answer(Error_Unexpect, VtmLoader_FailToConnectEntity);
+	}
+	break;
+	case 0x203: //CardIssuer
+	{
+		CardIssuerService_ClientBase* pClient = new CardIssuerService_ClientBase(this->m_pEntity);
+		if (pClient != NULL)
+		{
+			eErrCode = pClient->Connect();
+			if (eErrCode == Error_Succeed)
+			{
+				int retryTimes = 12;
+				do {
+					CardIssuerService_GetDevInfo_Req reqQ;
+					CardIssuerService_GetDevInfo_Ans ansQ;
+					eErrCode = (*pClient)(EntityResource::getLink().upgradeLink())->GetDevInfo(reqQ, ansQ, 5000);
+					if (eErrCode == Error_Succeed && ansQ.state == 1)// 1 for "DEVICE_STATUS_NORMAL" defined in  DeviceBaseClass.h
+					{
+						DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("return to caller");
+						ctx->Answer(Error_Succeed);
+						break;
+					}
+					Sleep(retryGetDevInfoInterval);
+					retryTimes--;
+				} while (retryTimes > 0);
+				if (retryTimes == 0)
+					ctx->Answer(Error_Unexpect, VtmLoader_EntityNotInNormal);
+			}
+			else {
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("connect to %s failed.error code:%d", ctx->Req.entityName.GetData(), eErrCode);
+				ctx->Answer(Error_Unexpect, VtmLoader_FailToConnectEntity);
+			}
+		}
+		else
+			ctx->Answer(Error_Unexpect, VtmLoader_FailToConnectEntity);
+	}
+	break;
+	case 0x213: //ContactlessCard
+	{
+		ContactlessCardService_ClientBase* pClient = new ContactlessCardService_ClientBase(this->m_pEntity);
+		if (pClient != NULL)
+		{
+			eErrCode = pClient->Connect();
+			if (eErrCode == Error_Succeed)
+			{
+				int retryTimes = 12;
+				do {
+					ContactlessCardService_GetDevInfo_Req reqQ;
+					ContactlessCardService_GetDevInfo_Ans ansQ;
+					eErrCode = (*pClient)(EntityResource::getLink().upgradeLink())->GetDevInfo(reqQ, ansQ, 5000);
+					if (eErrCode == Error_Succeed && ansQ.state == 1)// 1 for "DEVICE_STATUS_NORMAL" defined in  DeviceBaseClass.h
+					{
+						DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("return to caller");
+						ctx->Answer(Error_Succeed);
+						break;
+					}
+					Sleep(retryGetDevInfoInterval);
+					retryTimes--;
+				} while (retryTimes > 0);
+				if (retryTimes == 0)
+					ctx->Answer(Error_Unexpect, VtmLoader_EntityNotInNormal);
+			}
+			else {
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("connect to %s failed.error code:%d", ctx->Req.entityName.GetData(), eErrCode);
+				ctx->Answer(Error_Unexpect, VtmLoader_FailToConnectEntity);
+			}
+		}
+		else
+			ctx->Answer(Error_Unexpect, VtmLoader_FailToConnectEntity);
+	}
+	break;
+	case 0x217:
+	{
+		HSPScannerService_ClientBase* pClient = new HSPScannerService_ClientBase(this->m_pEntity);
+		if (pClient != NULL)
+		{
+			eErrCode = pClient->Connect();
+			if (eErrCode == Error_Succeed)
+			{
+				int retryTimes = 12;
+				do {
+					HSPScannerService_GetDevInfo_Req reqQ;
+					HSPScannerService_GetDevInfo_Ans ansQ;
+					eErrCode = (*pClient)(EntityResource::getLink().upgradeLink())->GetDevInfo(reqQ, ansQ, 5000);
+					if (eErrCode == Error_Succeed && ansQ.state == 1)// 1 for "DEVICE_STATUS_NORMAL" defined in  DeviceBaseClass.h
+					{
+						DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("return to caller");
+						ctx->Answer(Error_Succeed);
+						break;
+					}
+					Sleep(retryGetDevInfoInterval);
+					retryTimes--;
+				} while (retryTimes > 0);
+				if (retryTimes == 0)
+					ctx->Answer(Error_Unexpect, VtmLoader_EntityNotInNormal);
+			}
+			else {
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("connect to %s failed.error code:%d", ctx->Req.entityName.GetData(), eErrCode);
+				ctx->Answer(Error_Unexpect, VtmLoader_FailToConnectEntity);
+			}
+		}
+		else
+			ctx->Answer(Error_Unexpect, VtmLoader_FailToConnectEntity);
+	}
+	break;
+	default:
+		break;
+	}
+	return;
+}
+void CVtmLoaderFSM::CheckEntityRestartIdle(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx)
+{
+	CSmartPointer<IEntityFunctionPrivilege> pFuncPrivilege = m_pEntity->GetFunction().ConvertCase<IEntityFunctionPrivilege>();
+	CSmartPointer<IAsynWaitSp> spWait;
+	CEntityRunInfo runInfo;
+
+	//to check entity state
+	ErrorCodeEnum eErrCode = m_pEntity->GetFunction()->GetEntityRunInfo(ctx->Req.entityName.GetData(), runInfo);
+	if (eErrCode == Error_Succeed)
+	{
+		if (runInfo.eState != EntityState_NoStart)
+		{
+			eErrCode = pFuncPrivilege->TerminateEntity(ctx->Req.entityName.GetData(), spWait);
+			if (spWait != NULL)
+				eErrCode = spWait->WaitAnswer(MAX_AYSNC_TIMEOUT);
+		}
+	}
+	else
+	{
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("GetEntityRunInfo %s failed(%d).", ctx->Req.entityName.GetData(), eErrCode);
+		ctx->Answer(Error_Unexpect, VtmLoader_FailToGetEntityInfo);
+		return;
+	}
+
+	//(re)start entity
+	eErrCode = pFuncPrivilege->StartEntity(ctx->Req.entityName.GetData(), NULL, spWait);
+	if (eErrCode == Error_Succeed)
+	{
+		if (spWait != NULL)
+			eErrCode = spWait->WaitAnswer(MAX_AYSNC_TIMEOUT);
+	}
+	else
+	{
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("StartEntity %s failed(%d).", ctx->Req.entityName.GetData(), eErrCode);
+		ctx->Answer(Error_Unexpect, VtmLoader_FailToStartEntity);
+		return;
+	}
+
+	//TODO we should wait for device entity open suc?
+	int count = 0;
+	do
+	{
+		CEntityRunInfo runInfo;
+		eErrCode = m_pEntity->GetFunction()->GetEntityRunInfo(ctx->Req.entityName.GetData(), runInfo);
+		if (eErrCode == Error_Succeed)
+		{
+			if (runInfo.eState == EntityState_Idle)
+			{
+				ctx->Answer(Error_Succeed);
+				return;
+			}
+			else if (runInfo.eState == EntityState_Lost || runInfo.eState == EntityState_Close || runInfo.eState == EntityState_Killed)
+			{
+				ctx->Answer(Error_Unexpect, VtmLoader_FailToStartEntity);
+				return;
+			}
+			count++;
+			if (count > 5)
+			{
+				ctx->Answer(Error_Unexpect, VtmLoader_FailToStartEntity);
+				return;
+			}
+			Sleep(2000);
+		}
+		else
+		{
+			ctx->Answer(Error_Unexpect, VtmLoader_FailToStartEntity);
+			return;
+		}
+	} while (true);
+
+}
+void CVtmLoaderFSM::CheckVideo(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx)
+{
+	CSmartPointer<IEntityFunctionPrivilege> pFuncPrivilege = m_pEntity->GetFunction().ConvertCase<IEntityFunctionPrivilege>();
+	CSmartPointer<IAsynWaitSp> spWait;
+	CEntityRunInfo runInfo;
+
+	//to check entity state
+	ErrorCodeEnum eErrCode = m_pEntity->GetFunction()->GetEntityRunInfo(ctx->Req.entityName.GetData(), runInfo);
+	if (eErrCode == Error_Succeed)
+	{
+		if (runInfo.eState != EntityState_NoStart)
+		{
+			eErrCode = pFuncPrivilege->TerminateEntity(ctx->Req.entityName.GetData(), spWait);
+			if (spWait != NULL)
+				eErrCode = spWait->WaitAnswer(MAX_AYSNC_TIMEOUT);
+		}
+	}
+	else
+	{
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("GetEntityRunInfo %s failed(%d).", ctx->Req.entityName.GetData(), eErrCode);
+		ctx->Answer(Error_Unexpect, VtmLoader_FailToGetEntityInfo);
+		return;
+	}
+
+	//(re)start entity
+	eErrCode = pFuncPrivilege->StartEntity(ctx->Req.entityName.GetData(), NULL, spWait);
+	if (eErrCode == Error_Succeed)
+	{
+		if (spWait != NULL)
+			eErrCode = spWait->WaitAnswer(MAX_AYSNC_TIMEOUT);
+	}
+	else
+	{
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("StartEntity %s failed(%d).", ctx->Req.entityName.GetData(), eErrCode);
+		ctx->Answer(Error_Unexpect, VtmLoader_FailToStartEntity);
+		return;
+	}
+
+	//TODO we should wait for device entity open suc?
+	int count = 0;
+	do
+	{
+		CEntityRunInfo runInfo;
+		eErrCode = m_pEntity->GetFunction()->GetEntityRunInfo(ctx->Req.entityName.GetData(), runInfo);
+		if (eErrCode == Error_Succeed)
+		{
+			if (runInfo.eState == EntityState_Idle)
+			{
+				CSimpleStringA csCameraState("");
+				eErrCode = GetEntityBase()->GetFunction()->GetSysVar("CameraState", csCameraState);
+				if (eErrCode == Error_Succeed && csCameraState.Compare("N") == 0)
+					ctx->Answer(Error_Succeed);
+				else
+					ctx->Answer(Error_Unexpect, VtmLoader_FailToStartEntity);
+				return;
+			}
+			else if (runInfo.eState == EntityState_Lost || runInfo.eState == EntityState_Close || runInfo.eState == EntityState_Killed)
+			{
+				ctx->Answer(Error_Unexpect, VtmLoader_FailToStartEntity);
+				return;
+			}
+			count++;
+			if (count > 5)
+			{
+				ctx->Answer(Error_Unexpect, VtmLoader_FailToStartEntity);
+				return;
+			}
+			Sleep(2000);
+		}
+		else
+		{
+			ctx->Answer(Error_Unexpect, VtmLoader_FailToStartEntity);
+			return;
+		}
+	} while (true);
+}
+void CVtmLoaderFSM::Oiltest()
+{
+	CSmartPointer<IEntityFunctionPrivilege> pFuncPrivilege = m_pEntity->GetFunction().ConvertCase<IEntityFunctionPrivilege>();
+	CSmartPointer<IAsynWaitSp> spWait;
+	//(re)start entity
+	ErrorCodeEnum eErrCode = pFuncPrivilege->StartEntity("HealthManager", NULL, spWait);
+	if (eErrCode == Error_Succeed)
+	{
+		if (spWait != NULL)
+			eErrCode = spWait->WaitAnswer(MAX_AYSNC_TIMEOUT);
+	}
+	else
+	{
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("StartEntity %s failed(%d).", "HealthManager", eErrCode);
+		return;
+	}
+
+	DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("StartEntity %s suc.", "HealthManager");
+	return;
+
+
+	SetTerminalNo(NULL);
+	Sleep(11000);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to save to root.ini");
+	SaveTerminalNo(NULL);
+	m_hSaveTerminalNoVar.Broadcast();
+	
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("continue boot");
+	
+}

+ 86 - 6
Module/mod_vtmloader/VtmLoaderFSM.h

@@ -2,15 +2,21 @@
 #include "SpBase.h"
 #include "SpFSM.h"
 //#include "IHttpFunc.h"
+#include "SpUtility.h"
 #include "CommEntityUtil.hpp"
+#include "VtmLoader_server_g.h"
+using namespace VtmLoader;
+
 enum EvtType
 {
-	Event_NetworkCheck_Passed = EVT_USER + 1,		// 网络检查通过,包括网卡及到总行服务的连通性
+	USER_EVT_NetworkCheck_Passed = EVT_USER + 1,		// 网络检查通过,包括网卡及到总行服务的连通性
 	USER_EVT_COREBOOT_FINISHED,
 	USER_EVT_SAFELOAD_FINISHED,
 	USER_EVT_SAFELOAD_EXMINE_FINISHED,
 	USER_EVT_OPERATING_FINISHED,
 	USER_EVT_ACCESSAUTH_FINISHED,
+	USER_EVT_CHECK_DEVICE_ENTITY,
+	USER_EVT_SAVE_TERMINALNO,
 };
 
 enum LoadStage
@@ -90,7 +96,7 @@ private:
 	END_FSM_STATE()
 
 	BEGIN_FSM_RULE(CVtmLoaderFSM,s0)
-		FSM_RULE_ENTRY(s0, s1, Event_NetworkCheck_Passed,0)
+		FSM_RULE_ENTRY(s0, s1, USER_EVT_NetworkCheck_Passed,0)
 		FSM_RULE_ENTRY(s1, s2, USER_EVT_COREBOOT_FINISHED, 0)
 		FSM_RULE_ENTRY(s1, s2, USER_EVT_COREBOOT_FINISHED, 1)
 		FSM_RULE_ENTRY(s1, s5, USER_EVT_COREBOOT_FINISHED, 2)
@@ -104,6 +110,7 @@ public:
 	int m_refreshWaitSec, m_uploadLogInfo_waitSec;
 	int NetWorkCheckAndGetSetting();
 	bool GetConfig();
+	bool VerifyVer();
 	bool DetectHttpActive();
 	bool refreshToken();
 	int EntityLoad();
@@ -112,7 +119,18 @@ public:
 	BOOL DetectNetworkLegality(CSimpleStringA& strInfo);
 	int CheckLoadResult(LoadStage eStage);
 	int HttpConnCheck(CSimpleStringA csHttAddr, HttpAddrType eType);
-	
+	SP::Toolkit::CConditionVarPlus m_hWaitTerminalNoVar,m_hWaiDeviceEntityVar,m_hSaveTerminalNoVar;
+	void SetTerminalNo(SpReqAnsContext<VtmLoaderService_SetTerminalNo_Req, VtmLoaderService_SetTerminalNo_Ans>::Pointer ctx)
+	{
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("set terminalNo to [%s]", ctx->Req.terminalNo.GetData());
+		m_terminalNoFromWeb = ctx->Req.terminalNo;
+		ctx->Answer(Error_Succeed);
+		m_hWaitTerminalNoVar.Broadcast();
+	}
+	void NoticeAppReady(SpReqAnsContext<VtmLoaderService_NoticeAppReady_Req, VtmLoaderService_NoticeAppReady_Ans>::Pointer ctx) { }
+	void CheckDeviceEntity(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx);
+	void SaveTerminalNo(SpReqAnsContext<VtmLoaderService_SaveTerminalNo_Req, VtmLoaderService_SaveTerminalNo_Ans>::Pointer ctx);
+	void Oiltest();
 private:
 	void s0_on_entry();
 	void s0_on_exit();
@@ -144,10 +162,12 @@ private:
 	ErrorCodeEnum SubscribeEntitysEvents();
 	void ShowEntityBootFailedAtFront(LPCTSTR lpcszEntityName, ErrorCodeEnum bootFailedResult, bool isBlock = true);
 	void GetDns(string& dns);
+	void ToCheckIfInstalling();
+
 
 private:
 	CSystemStaticInfo m_sysInfo;
-	CSimpleStringA m_strNetworkCheckUrl, m_csErrEntity, m_defaultSystemId;
+	CSimpleStringA m_strNetworkCheckUrl, m_csErrEntity, m_defaultSystemId, m_terminalNoFromWeb;
 	int m_sleepEnterOpMS, m_iCanIgnoreAddrDetect, m_iDetectInterval;
 	ULLINT m_ullMaxAddrDetectTime, m_ullNetCardCost, m_ullNetDetectCost, m_ullGetConfigCost, m_ullEntityLoadStart;
 	int m_httpCheckResult[2];
@@ -159,15 +179,45 @@ private:
 	map<CSimpleStringA, EntityLoadInfo> m_coreBootOpt;
 	map<CSimpleStringA, EntityLoadInfo> m_safeLoadOpt;
 	map<CSimpleStringA, EntityLoadInfo> m_operatingOpt;
-};
 
+	bool RefreshDeviceConfig(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx);
+	void CheckDeviceBaseEntity(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx, WORD wEntityID);
+	void CheckEntityRestartIdle(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx);
+	void CheckVideo(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx);
+	
+	
+};
+class CheckDeviceEntityEvent : public FSMEvent
+{
+public:
+	CheckDeviceEntityEvent() : FSMEvent(USER_EVT_CHECK_DEVICE_ENTITY) {}
+	~CheckDeviceEntityEvent() {}
+	SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx;
+	virtual void OnUnhandled()
+	{
+		if (ctx != NULL)
+			ctx->Answer(Error_InvalidState);
+	}
+};
+class SaveTerminalNoEvent : public FSMEvent
+{
+public:
+	SaveTerminalNoEvent() : FSMEvent(USER_EVT_SAVE_TERMINALNO) {}
+	~SaveTerminalNoEvent() {}
+	SpReqAnsContext<VtmLoaderService_SaveTerminalNo_Req, VtmLoaderService_SaveTerminalNo_Ans>::Pointer ctx;
+	virtual void OnUnhandled()
+	{
+		if (ctx != NULL)
+			ctx->Answer(Error_InvalidState);
+	}
+};
 struct NetWorkCheckAndGetSettingTask : public ITaskSp
 {
 	CVtmLoaderFSM* fsm;
 	NetWorkCheckAndGetSettingTask(CVtmLoaderFSM* f) : fsm(f) {}
 	void Process()
 	{
-		FSMEvent* pEvt = new FSMEvent(Event_NetworkCheck_Passed);
+		FSMEvent* pEvt = new FSMEvent(USER_EVT_NetworkCheck_Passed);
 		pEvt->param1 = fsm->NetWorkCheckAndGetSetting();
 		fsm->PostEventFIFO(pEvt);
 	}
@@ -195,3 +245,33 @@ struct HttpConnCheckTask : public ITaskSp
 		fsm->HttpConnCheck(csHttAddr, eType);
 	}
 };
+
+struct CheckDeviceEntityTask : public ITaskSp
+{
+	CVtmLoaderFSM* fsm;
+	SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx;
+	CheckDeviceEntityTask(CVtmLoaderFSM* f) : fsm(f){}
+	void Process()
+	{
+		fsm->CheckDeviceEntity(ctx);
+	}
+};
+struct SaveTerminalNoTask : public ITaskSp
+{
+	CVtmLoaderFSM* fsm;
+	SpReqAnsContext<VtmLoaderService_SaveTerminalNo_Req, VtmLoaderService_SaveTerminalNo_Ans>::Pointer ctx;
+	SaveTerminalNoTask(CVtmLoaderFSM* f) : fsm(f) {}
+	void Process()
+	{
+		fsm->SaveTerminalNo(ctx);
+	}
+};
+struct OilTestTask : public ITaskSp
+{
+	CVtmLoaderFSM* fsm;
+	OilTestTask(CVtmLoaderFSM* f) : fsm(f) {}
+	void Process()
+	{
+		fsm->Oiltest();
+	}
+};

+ 5 - 0
Module/mod_vtmloader/VtmLoader_UserCode.h

@@ -11,3 +11,8 @@ const int VtmLoader_FailToStartEntity = 0x10f0020a;
 const int VtmLoader_FailToConnectEntity = 0x10f0020b;
 const int VtmLoader_EntityNotInNormal = 0x10f0020c;
 const int VtmLoader_FailToGetEntityInfo = 0x10f0020d;
+const int VtmLoader_FailToTermEntity = 0x10f0020e;
+const int VtmLoader_EntityLoad_Failed = 0x10f0020f;
+const int VtmLoader_ConnectDetect_Failed = 0x10f00210;
+const int VtmLoader_ConnectDetect_Slow = 0x10f00211;
+const int VtmLoader_DETECT_VERSION_ERR = 0x10f00212;

+ 155 - 8
Module/mod_vtmloader/VtmLoader_client_g.h

@@ -59,7 +59,7 @@ public:
 		return Error;
 	}
 
-	ErrorCodeEnum notice(VtmLoaderService_notice_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
+	ErrorCodeEnum SetTerminalNo(VtmLoaderService_SetTerminalNo_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
 	{
 		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
 		CAutoBuffer Buf = SpObject2Buffer(Req);
@@ -69,14 +69,14 @@ public:
 			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
 			m_context = m_context.upgradeLink();
 		}
-		auto ret = pFunc->AsyncRequest(VtmLoaderService_Method_notice, VtmLoaderService_MethodSignature_notice, Buf, spAsyncWait, m_context, dwTimeout);
+		auto ret = pFunc->AsyncRequest(VtmLoaderService_Method_SetTerminalNo, VtmLoaderService_MethodSignature_SetTerminalNo, Buf, spAsyncWait, m_context, dwTimeout);
 		m_context.clear();
 		return ret;
 	}
-	ErrorCodeEnum notice(VtmLoaderService_notice_Req &Req, VtmLoaderService_notice_Ans &Ans, DWORD dwTimeout)
+	ErrorCodeEnum SetTerminalNo(VtmLoaderService_SetTerminalNo_Req &Req, VtmLoaderService_SetTerminalNo_Ans &Ans, DWORD dwTimeout)
 	{
 		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = notice(Req, spAsyncWait, dwTimeout);
+		ErrorCodeEnum Error = SetTerminalNo(Req, spAsyncWait, dwTimeout);
 		if (Error == Error_Succeed) {
 			bool bEnd = false;
 			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
@@ -84,10 +84,10 @@ public:
 		}
 		return Error;
 	}
-	ErrorCodeEnum notice(VtmLoaderService_notice_Req &Req, VtmLoaderService_notice_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
+	ErrorCodeEnum SetTerminalNo(VtmLoaderService_SetTerminalNo_Req &Req, VtmLoaderService_SetTerminalNo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
 	{
 		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = notice(Req, spAsyncWait, dwTimeout);
+		ErrorCodeEnum Error = SetTerminalNo(Req, spAsyncWait, dwTimeout);
 		if (Error == Error_Succeed) {
 			bool bEnd = false;
 			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
@@ -95,10 +95,157 @@ public:
 		}
 		return Error;
 	}
-	ErrorCodeEnum notice(VtmLoaderService_notice_Req &Req, VtmLoaderService_notice_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
+	ErrorCodeEnum SetTerminalNo(VtmLoaderService_SetTerminalNo_Req &Req, VtmLoaderService_SetTerminalNo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
 	{
 		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = notice(Req, spAsyncWait, dwTimeout);
+		ErrorCodeEnum Error = SetTerminalNo(Req, spAsyncWait, dwTimeout);
+		if (Error == Error_Succeed) {
+			bool bEnd = false;
+			CSimpleString str;
+			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
+			LOG_ASSERT(Error || bEnd);
+		}
+		return Error;
+	}
+
+	ErrorCodeEnum NoticeAppReady(VtmLoaderService_NoticeAppReady_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
+	{
+		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
+		CAutoBuffer Buf = SpObject2Buffer(Req);
+		if (m_context.checkEmpty())
+		{
+			m_context.AutoGenerate();
+			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
+			m_context = m_context.upgradeLink();
+		}
+		auto ret = pFunc->AsyncRequest(VtmLoaderService_Method_NoticeAppReady, VtmLoaderService_MethodSignature_NoticeAppReady, Buf, spAsyncWait, m_context, dwTimeout);
+		m_context.clear();
+		return ret;
+	}
+	ErrorCodeEnum NoticeAppReady(VtmLoaderService_NoticeAppReady_Req &Req, VtmLoaderService_NoticeAppReady_Ans &Ans, DWORD dwTimeout)
+	{
+		CSmartPointer<IAsynWaitSp> spAsyncWait;
+		ErrorCodeEnum Error = NoticeAppReady(Req, spAsyncWait, dwTimeout);
+		if (Error == Error_Succeed) {
+			bool bEnd = false;
+			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
+			LOG_ASSERT(Error || bEnd);
+		}
+		return Error;
+	}
+	ErrorCodeEnum NoticeAppReady(VtmLoaderService_NoticeAppReady_Req &Req, VtmLoaderService_NoticeAppReady_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
+	{
+		CSmartPointer<IAsynWaitSp> spAsyncWait;
+		ErrorCodeEnum Error = NoticeAppReady(Req, spAsyncWait, dwTimeout);
+		if (Error == Error_Succeed) {
+			bool bEnd = false;
+			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
+			LOG_ASSERT(Error || bEnd);
+		}
+		return Error;
+	}
+	ErrorCodeEnum NoticeAppReady(VtmLoaderService_NoticeAppReady_Req &Req, VtmLoaderService_NoticeAppReady_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
+	{
+		CSmartPointer<IAsynWaitSp> spAsyncWait;
+		ErrorCodeEnum Error = NoticeAppReady(Req, spAsyncWait, dwTimeout);
+		if (Error == Error_Succeed) {
+			bool bEnd = false;
+			CSimpleString str;
+			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
+			LOG_ASSERT(Error || bEnd);
+		}
+		return Error;
+	}
+
+	ErrorCodeEnum CheckDeviceEntity(VtmLoaderService_CheckDeviceEntity_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
+	{
+		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
+		CAutoBuffer Buf = SpObject2Buffer(Req);
+		if (m_context.checkEmpty())
+		{
+			m_context.AutoGenerate();
+			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
+			m_context = m_context.upgradeLink();
+		}
+		auto ret = pFunc->AsyncRequest(VtmLoaderService_Method_CheckDeviceEntity, VtmLoaderService_MethodSignature_CheckDeviceEntity, Buf, spAsyncWait, m_context, dwTimeout);
+		m_context.clear();
+		return ret;
+	}
+	ErrorCodeEnum CheckDeviceEntity(VtmLoaderService_CheckDeviceEntity_Req &Req, VtmLoaderService_CheckDeviceEntity_Ans &Ans, DWORD dwTimeout)
+	{
+		CSmartPointer<IAsynWaitSp> spAsyncWait;
+		ErrorCodeEnum Error = CheckDeviceEntity(Req, spAsyncWait, dwTimeout);
+		if (Error == Error_Succeed) {
+			bool bEnd = false;
+			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
+			LOG_ASSERT(Error || bEnd);
+		}
+		return Error;
+	}
+	ErrorCodeEnum CheckDeviceEntity(VtmLoaderService_CheckDeviceEntity_Req &Req, VtmLoaderService_CheckDeviceEntity_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
+	{
+		CSmartPointer<IAsynWaitSp> spAsyncWait;
+		ErrorCodeEnum Error = CheckDeviceEntity(Req, spAsyncWait, dwTimeout);
+		if (Error == Error_Succeed) {
+			bool bEnd = false;
+			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
+			LOG_ASSERT(Error || bEnd);
+		}
+		return Error;
+	}
+	ErrorCodeEnum CheckDeviceEntity(VtmLoaderService_CheckDeviceEntity_Req &Req, VtmLoaderService_CheckDeviceEntity_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
+	{
+		CSmartPointer<IAsynWaitSp> spAsyncWait;
+		ErrorCodeEnum Error = CheckDeviceEntity(Req, spAsyncWait, dwTimeout);
+		if (Error == Error_Succeed) {
+			bool bEnd = false;
+			CSimpleString str;
+			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
+			LOG_ASSERT(Error || bEnd);
+		}
+		return Error;
+	}
+
+	ErrorCodeEnum SaveTerminalNo(VtmLoaderService_SaveTerminalNo_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
+	{
+		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
+		CAutoBuffer Buf = SpObject2Buffer(Req);
+		if (m_context.checkEmpty())
+		{
+			m_context.AutoGenerate();
+			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
+			m_context = m_context.upgradeLink();
+		}
+		auto ret = pFunc->AsyncRequest(VtmLoaderService_Method_SaveTerminalNo, VtmLoaderService_MethodSignature_SaveTerminalNo, Buf, spAsyncWait, m_context, dwTimeout);
+		m_context.clear();
+		return ret;
+	}
+	ErrorCodeEnum SaveTerminalNo(VtmLoaderService_SaveTerminalNo_Req &Req, VtmLoaderService_SaveTerminalNo_Ans &Ans, DWORD dwTimeout)
+	{
+		CSmartPointer<IAsynWaitSp> spAsyncWait;
+		ErrorCodeEnum Error = SaveTerminalNo(Req, spAsyncWait, dwTimeout);
+		if (Error == Error_Succeed) {
+			bool bEnd = false;
+			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
+			LOG_ASSERT(Error || bEnd);
+		}
+		return Error;
+	}
+	ErrorCodeEnum SaveTerminalNo(VtmLoaderService_SaveTerminalNo_Req &Req, VtmLoaderService_SaveTerminalNo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
+	{
+		CSmartPointer<IAsynWaitSp> spAsyncWait;
+		ErrorCodeEnum Error = SaveTerminalNo(Req, spAsyncWait, dwTimeout);
+		if (Error == Error_Succeed) {
+			bool bEnd = false;
+			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
+			LOG_ASSERT(Error || bEnd);
+		}
+		return Error;
+	}
+	ErrorCodeEnum SaveTerminalNo(VtmLoaderService_SaveTerminalNo_Req &Req, VtmLoaderService_SaveTerminalNo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
+	{
+		CSmartPointer<IAsynWaitSp> spAsyncWait;
+		ErrorCodeEnum Error = SaveTerminalNo(Req, spAsyncWait, dwTimeout);
 		if (Error == Error_Succeed) {
 			bool bEnd = false;
 			CSimpleString str;

+ 96 - 7
Module/mod_vtmloader/VtmLoader_def_g.h

@@ -12,27 +12,116 @@ namespace VtmLoader {
 // const goes here
 //
 
-#define VtmLoaderService_Method_notice 0
+#define VtmLoaderService_Method_SetTerminalNo 1
+#define VtmLoaderService_Method_NoticeAppReady 2
+#define VtmLoaderService_Method_CheckDeviceEntity 3
+#define VtmLoaderService_Method_SaveTerminalNo 4
+
+#define VtmLoaderService_MethodSignature_SetTerminalNo 616197282
+#define VtmLoaderService_MethodSignature_NoticeAppReady -656753321
+#define VtmLoaderService_MethodSignature_CheckDeviceEntity 217616252
+#define VtmLoaderService_MethodSignature_SaveTerminalNo -1817061577
+
+#define VtmLoaderService_LogCode_SetTerminalNo "QLR040210F01"
+#define VtmLoaderService_LogCode_NoticeAppReady "QLR040210F02"
+#define VtmLoaderService_LogCode_CheckDeviceEntity "QLR040210F03"
+#define VtmLoaderService_LogCode_SaveTerminalNo "QLR040210F04"
+
+struct VtmLoaderService_SetTerminalNo_Req
+{
+	CSimpleStringA terminalNo;
+	CSimpleStringA reqReserved1;
+
+	void Serialize(SpBuffer &Buf)
+	{
+		auto & buf = Buf & terminalNo & reqReserved1;
+	}
+
+};
+
+struct VtmLoaderService_SetTerminalNo_Ans
+{
+	CSimpleStringA resReserved1;
+
+	void Serialize(SpBuffer &Buf)
+	{
+		auto & buf = Buf & resReserved1;
+	}
+
+};
+
+struct VtmLoaderService_NoticeAppReady_Req
+{
+	CSimpleStringA reqReserved1;
+
+	void Serialize(SpBuffer &Buf)
+	{
+		auto & buf = Buf & reqReserved1;
+	}
+
+};
 
-#define VtmLoaderService_MethodSignature_notice -1920069053
+struct VtmLoaderService_NoticeAppReady_Ans
+{
+	CSimpleStringA resReserved1;
+
+	void Serialize(SpBuffer &Buf)
+	{
+		auto & buf = Buf & resReserved1;
+	}
+
+};
+
+struct VtmLoaderService_CheckDeviceEntity_Req
+{
+	CSimpleStringA entityName;
+	int paramNum;
+	CAutoArray<CSimpleStringA> module;
+	CAutoArray<CSimpleStringA> name;
+	CAutoArray<CSimpleStringA> value;
+	CSimpleStringA reqReserved1;
+	CSimpleStringA reqReserved2;
+
+	void Serialize(SpBuffer &Buf)
+	{
+		auto & buf = Buf & entityName & paramNum & module & name & value & reqReserved1 & reqReserved2;
+	}
+
+};
+
+struct VtmLoaderService_CheckDeviceEntity_Ans
+{
+	int devState;
+	CSimpleStringA msg;
+	CSimpleStringA resReserved1;
+	CSimpleStringA resReserved2;
+
+	void Serialize(SpBuffer &Buf)
+	{
+		auto & buf = Buf & devState & msg & resReserved1 & resReserved2;
+	}
+
+};
 
-struct VtmLoaderService_notice_Req
+struct VtmLoaderService_SaveTerminalNo_Req
 {
-	int stage;
-	CSimpleStringA test1;
+	CSimpleStringA terminalNo;
+	CSimpleStringA reqReserved1;
 
 	void Serialize(SpBuffer &Buf)
 	{
-		auto & buf = Buf & stage & test1;
+		auto & buf = Buf & terminalNo & reqReserved1;
 	}
 
 };
 
-struct VtmLoaderService_notice_Ans
+struct VtmLoaderService_SaveTerminalNo_Ans
 {
+	CSimpleStringA resReserved1;
 
 	void Serialize(SpBuffer &Buf)
 	{
+		auto & buf = Buf & resReserved1;
 	}
 
 };

+ 87 - 9
Module/mod_vtmloader/VtmLoader_server_g.h

@@ -30,8 +30,29 @@ public:
 	{
 		ErrorCodeEnum Error = Error_Succeed;
 		switch (dwMessageID) {
-		case VtmLoaderService_Method_notice:
-			if (dwSignature == VtmLoaderService_MethodSignature_notice) {
+		case VtmLoaderService_Method_SetTerminalNo:
+			if (dwSignature == VtmLoaderService_MethodSignature_SetTerminalNo) {
+				bOverlap = true;
+			} else {
+				Error = Error_MethodSignatureFailed;
+			}
+			break;
+		case VtmLoaderService_Method_NoticeAppReady:
+			if (dwSignature == VtmLoaderService_MethodSignature_NoticeAppReady) {
+				bOverlap = true;
+			} else {
+				Error = Error_MethodSignatureFailed;
+			}
+			break;
+		case VtmLoaderService_Method_CheckDeviceEntity:
+			if (dwSignature == VtmLoaderService_MethodSignature_CheckDeviceEntity) {
+				bOverlap = true;
+			} else {
+				Error = Error_MethodSignatureFailed;
+			}
+			break;
+		case VtmLoaderService_Method_SaveTerminalNo:
+			if (dwSignature == VtmLoaderService_MethodSignature_SaveTerminalNo) {
 				bOverlap = true;
 			} else {
 				Error = Error_MethodSignatureFailed;
@@ -48,8 +69,23 @@ public:
 	{
 		ErrorCodeEnum Error = Error_Succeed;
 		switch (dwMessageID) {
-		case VtmLoaderService_Method_notice:
-			if (dwSignature != VtmLoaderService_MethodSignature_notice) {
+		case VtmLoaderService_Method_SetTerminalNo:
+			if (dwSignature != VtmLoaderService_MethodSignature_SetTerminalNo) {
+				Error = Error_MethodSignatureFailed;
+			}
+			break;
+		case VtmLoaderService_Method_NoticeAppReady:
+			if (dwSignature != VtmLoaderService_MethodSignature_NoticeAppReady) {
+				Error = Error_MethodSignatureFailed;
+			}
+			break;
+		case VtmLoaderService_Method_CheckDeviceEntity:
+			if (dwSignature != VtmLoaderService_MethodSignature_CheckDeviceEntity) {
+				Error = Error_MethodSignatureFailed;
+			}
+			break;
+		case VtmLoaderService_Method_SaveTerminalNo:
+			if (dwSignature != VtmLoaderService_MethodSignature_SaveTerminalNo) {
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
@@ -60,7 +96,22 @@ public:
 		return Error;
 	}
 
-	virtual void Handle_notice(SpReqAnsContext<VtmLoaderService_notice_Req, VtmLoaderService_notice_Ans>::Pointer ctx)
+	virtual void Handle_SetTerminalNo(SpReqAnsContext<VtmLoaderService_SetTerminalNo_Req, VtmLoaderService_SetTerminalNo_Ans>::Pointer ctx)
+	{
+	/// override by user
+	}
+
+	virtual void Handle_NoticeAppReady(SpReqAnsContext<VtmLoaderService_NoticeAppReady_Req, VtmLoaderService_NoticeAppReady_Ans>::Pointer ctx)
+	{
+	/// override by user
+	}
+
+	virtual void Handle_CheckDeviceEntity(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx)
+	{
+	/// override by user
+	}
+
+	virtual void Handle_SaveTerminalNo(SpReqAnsContext<VtmLoaderService_SaveTerminalNo_Req, VtmLoaderService_SaveTerminalNo_Ans>::Pointer ctx)
 	{
 	/// override by user
 	}
@@ -81,13 +132,40 @@ public:
 			}
 #endif
 			switch (dwMessageID) {
-				case VtmLoaderService_Method_notice:
+				case VtmLoaderService_Method_SetTerminalNo:
+					{
+						SpReqAnsContext<VtmLoaderService_SetTerminalNo_Req,VtmLoaderService_SetTerminalNo_Ans>::Pointer ctx;
+						ctx.Attach(new SpReqAnsContext<VtmLoaderService_SetTerminalNo_Req,VtmLoaderService_SetTerminalNo_Ans>(pTransactionContext));
+						SpBuffer2Object(Buf, ctx->Req);
+						pTransactionContext->GetLinkContext(ctx->link);
+						Handle_SetTerminalNo(ctx);
+					}
+					break;
+				case VtmLoaderService_Method_NoticeAppReady:
+					{
+						SpReqAnsContext<VtmLoaderService_NoticeAppReady_Req,VtmLoaderService_NoticeAppReady_Ans>::Pointer ctx;
+						ctx.Attach(new SpReqAnsContext<VtmLoaderService_NoticeAppReady_Req,VtmLoaderService_NoticeAppReady_Ans>(pTransactionContext));
+						SpBuffer2Object(Buf, ctx->Req);
+						pTransactionContext->GetLinkContext(ctx->link);
+						Handle_NoticeAppReady(ctx);
+					}
+					break;
+				case VtmLoaderService_Method_CheckDeviceEntity:
+					{
+						SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req,VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx;
+						ctx.Attach(new SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req,VtmLoaderService_CheckDeviceEntity_Ans>(pTransactionContext));
+						SpBuffer2Object(Buf, ctx->Req);
+						pTransactionContext->GetLinkContext(ctx->link);
+						Handle_CheckDeviceEntity(ctx);
+					}
+					break;
+				case VtmLoaderService_Method_SaveTerminalNo:
 					{
-						SpReqAnsContext<VtmLoaderService_notice_Req,VtmLoaderService_notice_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<VtmLoaderService_notice_Req,VtmLoaderService_notice_Ans>(pTransactionContext));
+						SpReqAnsContext<VtmLoaderService_SaveTerminalNo_Req,VtmLoaderService_SaveTerminalNo_Ans>::Pointer ctx;
+						ctx.Attach(new SpReqAnsContext<VtmLoaderService_SaveTerminalNo_Req,VtmLoaderService_SaveTerminalNo_Ans>(pTransactionContext));
 						SpBuffer2Object(Buf, ctx->Req);
 						pTransactionContext->GetLinkContext(ctx->link);
-						Handle_notice(ctx);
+						Handle_SaveTerminalNo(ctx);
 					}
 					break;
 				default:

+ 16 - 4
Module/mod_vtmloader/mod_vtmloader.cpp

@@ -7,6 +7,22 @@
 #include "tokenDefine.h"
 #include <SpIni.h>
 
+void VtmLoaderServerSession::Handle_SetTerminalNo(SpReqAnsContext<VtmLoaderService_SetTerminalNo_Req, VtmLoaderService_SetTerminalNo_Ans>::Pointer ctx)
+{
+	m_pEntity->SetTerminalNo(ctx);
+}
+void VtmLoaderServerSession::Handle_NoticeAppReady(SpReqAnsContext<VtmLoaderService_NoticeAppReady_Req, VtmLoaderService_NoticeAppReady_Ans>::Pointer ctx)
+{
+	//m_pEntity->NoticeAppReady(ctx);
+}
+void VtmLoaderServerSession::Handle_CheckDeviceEntity(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx)
+{
+	m_pEntity->CheckDeviceEntity(ctx);
+}
+void VtmLoaderServerSession::Handle_SaveTerminalNo(SpReqAnsContext<VtmLoaderService_SaveTerminalNo_Req, VtmLoaderService_SaveTerminalNo_Ans>::Pointer ctx)
+{
+	m_pEntity->SaveTerminalNo(ctx);
+}
 
 void CVtmLoaderEntity::OnPreStart(CAutoArray<CSimpleStringA> strArgs,CSmartPointer<ITransactionContext> pTransactionContext) 
 {
@@ -22,10 +38,6 @@ void CVtmLoaderEntity::OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer
 	pTransactionContext->SendAnswer(Error_Succeed); 
 }	
 
-CServerSessionBase *CVtmLoaderEntity::OnNewSession(const char* /*pszRemoteEntityName*/, const char * /*pszParam*/)
-{
-	return new CVtmLoaderSession(this);
-}
 
 void CVtmLoaderEntity::OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
 	const DWORD dwSysError,const DWORD dwUserCode,const DWORD dwEntityInstanceID, const WORD wEntityDevelID, 

+ 33 - 13
Module/mod_vtmloader/mod_vtmloader.h

@@ -5,8 +5,21 @@
 //#include "IHttpFunc.h"
 #include "VtmLoader_server_g.h"
 using namespace VtmLoader;
+class CVtmLoaderEntity;
+
+class VtmLoaderServerSession : public VtmLoaderService_ServerSessionBase
+{
+public:
+	VtmLoaderServerSession(CVtmLoaderEntity* pEntity) :m_pEntity(pEntity) {}
+	virtual ~VtmLoaderServerSession() {}
+	virtual void Handle_SetTerminalNo(SpReqAnsContext<VtmLoaderService_SetTerminalNo_Req, VtmLoaderService_SetTerminalNo_Ans>::Pointer ctx);
+	virtual void Handle_NoticeAppReady(SpReqAnsContext<VtmLoaderService_NoticeAppReady_Req, VtmLoaderService_NoticeAppReady_Ans>::Pointer ctx);
+	virtual void Handle_CheckDeviceEntity(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx);
+	virtual void Handle_SaveTerminalNo(SpReqAnsContext<VtmLoaderService_SaveTerminalNo_Req, VtmLoaderService_SaveTerminalNo_Ans>::Pointer ctx);
+private:
+	CVtmLoaderEntity* m_pEntity;
+};
 
-// 
 class CVtmLoaderEntity : public CEntityBase, public ILogListener
 {
 public:
@@ -21,7 +34,10 @@ public:
 
 	virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs,CSmartPointer<ITransactionContext> pTransactionContext);
 	virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext) ;
-	virtual CServerSessionBase *OnNewSession(const char* /*pszRemoteEntityName*/, const char * /*pszParam*/);
+	virtual CServerSessionBase *OnNewSession(const char* /*pszRemoteEntityName*/, const char * /*pszParam*/)
+	{
+		return new VtmLoaderServerSession(this);
+	}
 	virtual void OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
 		const DWORD dwSysError,const DWORD dwUserCode,const DWORD dwEntityInstanceID, const WORD wEntityDevelID, 
 		const CAutoArray<DWORD> &Param, const char *pszEntityName, const char *pszModuleName,const char *pszMessage, const linkContext &pLinkInfo);
@@ -29,7 +45,21 @@ public:
 	ErrorCodeEnum UnsubscribeEntitysEvents();
 	CSimpleStringA GetCurMaintainer(){ return m_strUserID;}
 
-
+	void SetTerminalNo(SpReqAnsContext<VtmLoaderService_SetTerminalNo_Req, VtmLoaderService_SetTerminalNo_Ans>::Pointer ctx) { m_FSM.SetTerminalNo(ctx); }
+	//void NoticeAppReady(SpReqAnsContext<VtmLoaderService_NoticeAppReady_Req, VtmLoaderService_NoticeAppReady_Ans>::Pointer ctx);
+	void CheckDeviceEntity(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx)
+	{
+		CheckDeviceEntityEvent* pEvt = new CheckDeviceEntityEvent();
+		pEvt->ctx = ctx;
+		m_FSM.PostEventFIFO(pEvt);
+	}
+	void SaveTerminalNo(SpReqAnsContext<VtmLoaderService_SaveTerminalNo_Req, VtmLoaderService_SaveTerminalNo_Ans>::Pointer ctx)
+	{
+		SaveTerminalNoEvent* pEvt = new SaveTerminalNoEvent();
+		pEvt->ctx = ctx;
+		m_FSM.PostEventFIFO(pEvt);
+	}
+	
 protected:
 	//GUITask m_task;
 	CVtmLoaderFSM m_FSM;
@@ -51,13 +81,3 @@ public:
 	//IHttpFunc* m_pHttpFunc;
 };
 
-class CVtmLoaderSession : public VtmLoaderService_ServerSessionBase
-{
-public:
-	CVtmLoaderSession(CVtmLoaderEntity *pEntity) : m_pEntity(pEntity) {}
-	virtual ~CVtmLoaderSession() {}
-	
-private:
-	CVtmLoaderEntity *m_pEntity;
-};
-

+ 50 - 3
Module/mod_vtmloader/vtmloader.xml

@@ -1,11 +1,58 @@
 <?xml version="1.0" encoding="gb2312"?>
 <entity name="VtmLoader">
   <class name="VtmLoaderService" overlap="true" exclusive="false">
-	<twoway name="notice" overlap="true">
+	<!--终端号检查通过后,通知终端应用-->
+	<twoway name="SetTerminalNo" overlap="true" method_id="1">
       <req>
-        <param name="stage" type="int"/>
-		<param name="test1" type="string"/>
+	  <!--terminalNo:终端号-->
+		<param name="terminalNo" type="string"/>
+		<param name="reqReserved1" type="string"/>
       </req>
+	  <res>
+		<param name="resReserved1" type="string"/>
+	  </res>
+    </twoway>
+	<!--暂未使用-->
+	<twoway name="NoticeAppReady" overlap="true" method_id="2">
+      <req>
+		<param name="reqReserved1" type="string"/>
+      </req>
+	  <res>
+		<param name="resReserved1" type="string"/>
+	  </res>
+    </twoway>
+	<!--硬件实体验证-->
+	<twoway name="CheckDeviceEntity" overlap="true" method_id="3">
+      <req>
+		<!--实体名称,与终端应用的GetEntityName相同-->
+        <param name="entityName" type="string"/>
+		<!--需要刷新的配置数量-->
+		<param name="paramNum" type="int"/>
+		<!--配置模块名-->
+		<param name="module" type="array_string"/>
+		<!--配置项名称-->
+		<param name="name" type="array_string"/>
+		<!--配置值-->
+		<param name="value" type="array_string"/>
+        <param name="reqReserved1" type="string" />
+        <param name="reqReserved2" type="string" />		
+      </req>
+	  <res>
+        <param name="devState" type="int" />
+        <param name="msg" type="string" />
+        <param name="resReserved1" type="string" />
+        <param name="resReserved2" type="string" />
+	  </res>	  
+    </twoway>
+	<twoway name="SaveTerminalNo" overlap="true" method_id="4">
+      <req>
+	  <!--terminalNo:终端号-->
+        <param name="terminalNo" type="string"/>
+		<param name="reqReserved1" type="string" />
+      </req>
+	  <res>
+		<param name="resReserved1" type="string"/>
+	  </res>	  
     </twoway>
   </class>
 </entity>

+ 1 - 0
addin/cfg/UserCodeToMsgTip.ini

@@ -15,6 +15,7 @@
 0x20200239=[RTA2208] [HW] 设备离线,请检查设备是否已经连上
 0x2020023A=[RTA2209] [HW] 设备离线,请检查设备是否已经连上
 
+0x2030022E=[RTA2300] [HW] 读/发卡器故障,请稍后重试或联系厂商排查
 0x2030000D=[RTA2302] [HW] 读卡失败,请重试或联系厂商排查
 0x2030002E=[RTA2303] [HW] 卡片从读卡器移回到卡槽失败,请联系卡库厂商排查
 0x2030002F=[RTA2304] [HW] 从卡槽移动卡片到读卡器失败,请联系卡库厂商排查