Example #1
0
int HD8583STRUCT::Unnormalize()
{
	for(int i = 0;i < FIELD_LENGTH;++i)
	{
		if(_fields[i].bit_flag)
		{
			switch(_fields[i].attribute)
			{
			case IFT_BYTE:
				_fields[i].data[0] = *_fields[i]._bValue;
				break;
			case IFT_CHAR:
				_fields[i].data[0] = *_fields[i]._cValue;
				break;
			case IFT_SHORT:
				SHORT_2_BUF(*_fields[i]._sValue,_fields[i].data);
				break;
			case IFT_USHORT:
				SHORT_2_BUF(*_fields[i]._usValue,_fields[i].data);
				break;
			case IFT_INT:
				INT_2_BUF(*_fields[i]._iValue,_fields[i].data);
				break;
			case IFT_UINT:
				INT_2_BUF(*_fields[i]._uiValue,_fields[i].data);
				break;
			case IFT_LONG:
				LONG_2_BUF(*_fields[i]._lValue,_fields[i].data);
				break;
			case IFT_ULONG:
				LONG_2_BUF(*_fields[i]._ulValue,_fields[i].data);
				break;
			case IFT_STRING:
				memcpy(_fields[i].data,_fields[i]._cValue,_fields[i].length_in_byte);
				break;
			case IFT_BUFFER:
				memcpy(_fields[i].data,_fields[i]._bValue,_fields[i].length_in_byte);
				break;
			case IFT_DATETIME:
				memcpy(_fields[i].data,_fields[i]._bValue,_fields[i].length_in_byte);
				break;
			default:
				return -1;
			}
		}
	}
	return 0;
}
Example #2
0
File: libsub.c Project: nmaxwell/EE
int	sub_gpio_write( sub_handle hndl, int set, int* get, int mask )
{
	int			rc;
	sub_pack	outpk,inpk;

	outpk.tag.code = SUB_GPIO_WRITE;
	outpk.tag.size = sizeof(struct gpio_req_st);
	INT_2_BUF( set, outpk.tag.gpio_req.val );
	INT_2_BUF( mask,outpk.tag.gpio_req.mask);

	inpk.tag.size = sizeof(struct gpio_resp_st);
	rc = sub_transaction( hndl, &outpk, &inpk, 10000 );
	if( !rc )
		BUF_2_INT( *get, inpk.tag.gpio_resp.val );
	return rc;
}
Example #3
0
int HDDownloadBlkCard::DownloadBlackCard(BYTE addflag,KSGDeviceNode* node
        ,KSGDeviceNode::Task* task)
{
    int ret = TASK_ERR_COMMON;
    try
    {

        int cardid = task->GetParams().GetParamIntVal(XML_KEY_CARDID);
        std::string version = task->GetParams().GetParam(XML_KEY_VERNUM);
        KSGDeviceNode* task_node = task->GetDeviceNode();
        unsigned short addr;
        addr = GetDeviceAddress(task->GetDeviceNode());
        HD8583STRUCT req;
        req.Init();
        req.SetFieldValue(FIELD_ADDRESS,addr);
        req.SetFieldValue(FIELD_TERMINALID,task_node->GetTermId());
        unsigned long encode_ver = EncodeVersionNum(version.c_str());
        req.SetFieldValue(FIELD_VERSIONOFLIST,encode_ver);
        char data[256] = "";
        ACE_OS::memset(data,0,sizeof data);
        data[0] = addflag;
        INT_2_BUF(cardid,data+1);
        req.SetFieldValue(FIELD_ADDITIONALDATA2,data,5);
        data[0] = 0x01;
        req.SetFieldValue(FIELD_ADDITIONALDATA3,data,1);
        ACE_OS::memset(data,0,sizeof data);
        ACE_HANDLE handler = ACE_INVALID_HANDLE;
        ACE_Time_Value tv = KSGGetTaskTimeoutIntval();
        int recvlen = -1;
        size_t packlen;
        handler = task->_handle;
        if((packlen = PackRequestStruct(req,MT_UPDATELIST2,data,sizeof data,true)) == 0)
        {
            // 错误的数据包
            ret = TASK_ERR_COMMON;
        }
        else if(HDSendBuffer(handler,data,packlen,&tv))
        {
            ret = TASK_ERR_TIMEOUT;
        }
        else if((recvlen = HDRecvBuffer(handler,data,sizeof data,&tv)) <= 0)
        {
            ret = TASK_ERR_TIMEOUT;
        }
        else
        {
            HD8583STRUCT resp;
            MESSAGETYPE msg_type;
            if(UnPackResponseStruct(resp,&msg_type,data,(size_t)recvlen))
            {
                ret = TASK_ERR_EXECUTE;
            }
            else if( (req->Address != resp->Address)
                     || (req->VerOfList != resp->VerOfList))
            {
                ret = TASK_ERR_EXECUTE;
            }
            else
            {
                KSGTaskResponse &tresp = task->GetResponse();
                tresp.AddField(XML_KEY_CARDID,cardid);
                char version_str[14] = "";
                DecodeVersionNum(resp->VerOfList,version_str);
                tresp.AddField(XML_KEY_VERNUM,version_str);
                ACE_DEBUG((LM_DEBUG,"更新设备黑名单版本成功id[%d][%s]"
                           ,task_node->GetDevId(),version_str));
                ret = TASK_SUCCESS;
            }
        }
        task->SetNeedResponse();
        return ret;
    }
    catch(KeyNotFoundException& )
    {
        return TASK_ERR_COMMON;
    }
    catch(...)
    {
        return TASK_ERR_COMMON;
    }
}