/***************************************************************************** ** Descriptions: 读取冲正包 ** Parameters: SDK_8583_ST8583 *pstReversalBag ** Returned value: ** Created By: huacong 2016.03.10 ** Remarks: *****************************************************************************/ s32 ReadReversalBag(SDK_8583_ST8583 *pstReversalBag) { s32 ret = SDK_ESC, len; u8 temp[SDK_8583_BAGMAXLEN]; Log("zbq", "jump into ReadReversalBag"); memset(temp, 0, sizeof(temp)); if ((len = ProviderGetTagValue(TAG_TRADE_REVERSALBAG, temp)) > 0) { memcpy(pstReversalBag->ucBagData, temp, len); pstReversalBag->nBagLen = len; if (ParseField8583(pstReversalBag) < SDK_EQU) { return SDK_ERR; } else { //xiaox 有55域则写入 emvtag 缓存链表 if (sdk8583IsDomainExist(pstReversalBag, 55)) { if (gstEmvTempTagList.ItemCount > 0) { FreeTagList(&gstEmvTempTagList); } memset(temp, 0, sizeof(temp)); InitTagList(&gstEmvTempTagList); len = GetFieldData(pstReversalBag, 55, temp, sizeof(temp)); BuildTagListOneLevel(temp, len, &gstEmvTempTagList); TraceHex("xiaox","55field",temp,len); } } } else { return SDK_ERR; } }
/***************************************************************************** ** Descriptions: 读取发送包 ** Parameters: SDK_8583_ST8583 *pstSendBag ** Returned value: ** Created By: huacong 2016.03.04 修改 wangb 2016 0315 ** Remarks: *****************************************************************************/ s32 ReadSendBag(SDK_8583_ST8583 *pstSendBag) { u8 temp[2048]; s32 len; memset(temp, 0, sizeof(temp)); if (pstSendBag == NULL) { return SDK_ERR; } if ((len = ProviderGetTagValue(TAG_8583_SENDBAG, temp)) > 2) { memcpy(pstSendBag->ucBagData, temp + 2, len - 2); pstSendBag->nBagLen = len - 2; if (ParseField8583(pstSendBag) < SDK_EQU) { return SDK_ERR; } else { //xiaox 有55域则写入 emvtag 缓存链表 if (sdk8583IsDomainExist(pstSendBag, 55)) { if (gstEmvTempTagList.ItemCount > 0) { FreeTagList(&gstEmvTempTagList); } memset(temp, 0, sizeof(temp)); InitTagList(&gstEmvTempTagList); len = GetFieldData(pstSendBag, 55, temp, sizeof(temp)); BuildTagListOneLevel(temp, len, &gstEmvTempTagList); TraceHex("xiaox","55field",temp,len); } } } else { return SDK_ERR; } return SDK_OK; }
/* * .KB_C_FN_DEFINITION_START * void ParseCommand(char *) * This private function executes matching functions. * .KB_C_FN_DEFINITION_END */ static void ParseCommand(char *buffer) { int argc, i; if ((argc = BreakCommand(buffer)) < 1) return; switch (StringToCommand(argv[0])) { case COMMAND_COPY: { // "c <to> <from> <size in bytes>" // copy memory char *to, *from; unsigned size; if (argc > 3) { to = (char *)p_ASCIIToHex(argv[1]); from = (char *)p_ASCIIToHex(argv[2]); size = p_ASCIIToHex(argv[3]); memcpy(to, from, size); } break; } case COMMAND_DUMP: // display boot commands DumpBootCommands(); break; case COMMAND_EXEC: { // "e <address>" // execute at address void (*execAddr)(unsigned, unsigned, unsigned); if (argc > 1) { /* in future, include machtypes (MACH_KB9200 = 612) */ execAddr = (void (*)(unsigned, unsigned, unsigned)) p_ASCIIToHex(argv[1]); (*execAddr)(0, 612, tagAddress); } break; } case COMMAND_TFTP: { // "tftp <local_dest_addr filename>" // tftp download unsigned address = 0; if (argc > 2) address = p_ASCIIToHex(argv[1]); TFTP_Download(address, argv[2]); break; } case COMMAND_SERVER_IP: // "server_ip <server IP 192 200 1 20>" // set download server address if (argc > 4) SetServerIPAddress(BuildIP()); break; case COMMAND_HELP: // dump command info printf("Commands:\n" "\tc\n" "\td\n" "\te\n" "\tip\n" "\tserver_ip\n" "\tm\n" "\ttftp\n" "\ts\n" #ifdef SUPPORT_TAG_LIST "\tt\n" #endif "\tw\n" "\tx\n"); break; case COMMAND_LOCAL_IP: // "local_ip <local IP 192 200 1 21> // set ip of this module if (argc > 4) SetLocalIPAddress(BuildIP()); break; case COMMAND_MAC: { // "m <mac address 12 34 56 78 9a bc> // set mac address using 6 byte values unsigned char mac[6]; if (argc > 6) { for (i = 0; i < 6; i++) mac[i] = p_ASCIIToHex(argv[i + 1]); EMAC_SetMACAddress(mac); } break; } case COMMAND_SET: { // s <index> <new boot command> // set the boot command at index (0-based) unsigned index; if (argc > 1) { RestoreSpace(2); index = p_ASCIIToHex(argv[1]); SetBootCommand(index, argv[2]); } break; } #ifdef SUPPORT_TAG_LIST case COMMAND_TAG: // t <address> <boot command line> // create tag-list for linux boot if (argc > 2) { RestoreSpace(2); tagAddress = p_ASCIIToHex(argv[1]); InitTagList(argv[2], (void*)tagAddress); } break; #endif case COMMAND_WRITE: // write the command table to non-volatile WriteCommandTable(); break; case COMMAND_XMODEM: { // "x <address>" // download X-modem record at address if (argc > 1) xmodem_rx((char *)p_ASCIIToHex(argv[1])); break; } default: break; } printf("\n"); }
LRESULT CALLBACK FormTagManager::DlgProc( _In_ HWND hwnd, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam ) { //::PrintLog(L"Message: 0x%x, wParam = 0x%x, lParam = 0x%x, hwnd = 0x%x", uMsg, wParam, lParam, hwnd); switch(uMsg) { case WM_INITDIALOG: { ::PrintLog(L"Message: WM_INITDIALOG"); // init this->_hwnd = hwnd; this->_handler = (CHandler *)lParam; this->_handler->AddRef(); // to keep the instance after the Form opend, will be released in WM_NCDESTROY. SHGetImageList(SHIL_SMALL,IID_IImageList,(void **)&_sysImgList); _sysImgList->AddRef(); // will be released in ~ctor. _hErrorInfo = GetDlgItem(_hwnd,IDC_TAGMANAGER_STATIC_ERROR_INFO); _hListTags = GetDlgItem(_hwnd,IDC_TAGMANAGER_LIST_TAGS); _hListFiles = GetDlgItem(_hwnd,IDC_TAGMANAGER_LIST_SelectedFiles); _hEditCtlNewTag = GetDlgItem(_hwnd,IDC_TAGMANAGER_EDIT_TagWord); _hCheckAttachToFiles = GetDlgItem(_hwnd, IDC_TAGMANAGER_CHECK_AttachNewTagToFiles); _hBuAdd = GetDlgItem(_hwnd,IDC_TAGMANAGER_BU_ADD); _hBuEdit = GetDlgItem(_hwnd,IDC_TAGMANAGER_BU_EDIT); _hBuDel = GetDlgItem(_hwnd,IDC_TAGMANAGER_BU_DEL); InitText(); InitTagList(); InitFileList(); Button_SetCheck(_hCheckAttachToFiles,BST_CHECKED); Button_Enable(_hBuAdd,false); Edit_TakeFocus(_hEditCtlNewTag); break; } case MSG_TRANSFER_INSTANCES: ::PrintLog(L"Message: MSG_TRANSFER_INSTANCES: wParam: %d, lParam: %d",wParam, lParam); break; case WM_CTLCOLORSTATIC: { // change the text color of static label ERROR_INFO if( (UINT)lParam == (UINT)_hErrorInfo){ HDC hdcStatic = (HDC) wParam; SetTextColor(hdcStatic, _msgColor); // the background color will be changed to white, that is not what I want, so, restore the background color manual. auto oldBkColor = GetSysColor(CTLCOLOR_DLG); SetBkColor(hdcStatic,oldBkColor); if (_hbrBkgnd == NULL) { _hbrBkgnd = CreateSolidBrush(oldBkColor); } // the return value is a handle to a brush that the system uses to paint the background of the static control. // http://msdn.microsoft.com/en-us/library/windows/desktop/bb787524(v=vs.85).aspx return (INT_PTR)_hbrBkgnd; } } case WM_SYSCOMMAND: { switch (wParam) { case SC_KEYMENU: { ::PrintLog(L"Message: SC_KEYMENU: wParam: %d, lParam: %d",wParam, lParam); break; } case SC_CLOSE: { DestroyWindow(hwnd); break; } default: break; } } break; case WM_COMMAND: { ::PrintLog(L"Message: WM_COMMAND"); switch(LOWORD(wParam)) { case IDC_TAGMANAGER_BU_DEL: { DelTags(); break; } case IDC_TAGMANAGER_BU_EDIT: { EditTag(); break; } case IDC_TAGMANAGER_BU_ADD: { AddTag(); break; } case IDC_TAGMANAGER_CHECK_AttachNewTagToFiles: ::PrintLog(L"Message: IDC_CHECK_AttachNewTagToFiles"); break; case IDC_TAGMANAGER_BU_CANCEL: DestroyWindow(hwnd); break; case IDC_TAGMANAGER_EDIT_TagWord: { OnNewTagChanged(wParam,lParam); break; } default: break; } } break; //case WM_SIZE: // { // auto hTreeView = GetDlgItem(hdlg, IDC_TREE1); // if(hTreeView!=NULL) // { // } // return 0; // } case WM_KEYDOWN: { ::PrintLog(L"Message: WM_KEYDOWN"); } break; case WM_KEYUP: { ::PrintLog(L"Message: WM_KEYUP"); if(wParam==VK_ESCAPE) { DestroyWindow(hwnd); } else if( wParam == VK_RETURN ) { // simulate text changed to validate the new tag. OnNewTagChanged(MAKEWPARAM(IDC_TAGMANAGER_EDIT_TagWord, EN_SETFOCUS),(LPARAM)_hEditCtlNewTag); // simulate the button ADD to be Clicked. SendMessage(_hwnd,WM_COMMAND, MAKEWPARAM(IDC_TAGMANAGER_BU_ADD, BN_CLICKED),(LPARAM)_hBuAdd); } } break; case WM_CHAR: { ::PrintLog(L"Message: WM_CHAR"); } break; case WM_SYSCHAR: { ::PrintLog(L"Message: WM_SYSCHAR"); } break; case WM_DEADCHAR: { ::PrintLog(L"Message: WM_DEADCHAR"); } break; case WM_SYSDEADCHAR: { ::PrintLog(L"Message: WM_SYSDEADCHAR"); } break; case WM_NOTIFY: { LPNMHDR pNmhdr = (LPNMHDR) lParam; switch (pNmhdr->idFrom) { case IDC_TAGMANAGER_LIST_TAGS: { WM_NOTIFY_LIST_Tags(wParam,lParam); break; } case IDC_TAGMANAGER_LIST_SelectedFiles: { WM_NOTIFY_LIST_Files(wParam,lParam); break; } default: break; } } break; case WM_DESTROY: { PostQuitMessage(0); } break; case WM_NCDESTROY: { ::PrintLog(L"Message: WM_NCDESTROY"); if(this->_handler != NULL){ auto x = this->_handler->Release(); if( x == 0 ){ this->_handler = NULL; } } } break; default: break; } return (INT_PTR)FALSE; }