Пример #1
0
void							clsIGInterface::NtfyData(const BYTE* pData, UINT nSize)
{
	_chk_debug(+1,">clsIGInterface::NtfyData (%d bytes)",nSize);

#if GPFPROTECT
	clsGPFProtection	GPF(GPFPROTFLAG_TRACE|GPFPROTFLAG_MSGBOX);

	if (GPF.Error())
		{
		exit(255);
		}
#endif

	for (int n = 0; n < nSize; ++n)
		{
		// _chk_utildebug("%d: %d %d",_MessageStack.entries(),n,pData[n]);
		if (pData[n] == 0x31)
			{
			// a new message starts
			_MessageStack.push(new clsMessageBuffer);
			continue;
			}

		if (!_MessageStack.isEmpty())
		  	{
			clsMessageBuffer*	pCurrentMessage = _MessageStack.top();

			if (pData[n] == 0x32)
				{
				// message finished
				clsIGMessage	Msg(pCurrentMessage->pData(),pCurrentMessage->nDataSize());

				if (Msg.bChecksumOk())
					{
					_chk_debug(0,"received message %s",(LPCTSTR)Msg.AsString());

					++_nPacketsReceived;

					switch (Msg.nCmd())
						{
						case clsIGMessage::IGCMD_DEVICELIST:
							if ((Msg.nFrom() == IGID_DATALOGGER || Msg.nFrom() == IGID_INTERFACECARD) &&
								Msg.nTo() == IGID_BROADCAST)
								{
								_DeviceListManager.OnDeviceList(Msg);
								break;
								}
							// fallthrough
						default:
							{
							clsCritObj	CO(_CritQueryList);

							if (_QueryList.contains(Msg))
								{
								_chk_utildebug("(is in query list)");
								_QueryList[Msg]->Append(Msg);
								}
							  else
							  	{
								_chk_utildebug("(is unassigned message)");
								_UnassignedMessages.Append(Msg);
							  	}
							}
							break;
						}
					}
				  else
					{
					_chk_debug(0,"received message %s with BAD CHECKSUM",(LPCTSTR)Msg.AsString());

					++_nPacketsReceivedWithBadChecksum;
					printf("WRN: received a message with BAD CHECKSUM\n");
					}

				delete _MessageStack.pop();
				}
			  else
			  	{
				pCurrentMessage->Append(pData[n]);
			  	}
			}
		  else
		  	{
			_chk_debug(0,"orphan byte %02x received",pData[n]);
		  	}
		}
	_chk_debug(-1,"<clsIGInterface::NtfyData");
}
Пример #2
0
	.port	=	GPIO_PORT_B,
	.pin	=	7,
	.start_func	=	GPIO_OUTPUT0,
	.end_func	=	GPIO_OUTPUT1,
	.delaytime_usec	=	100000,
};
#endif
struct platform_device jz4775_mii_bus = {
        .name = "jz4775_mii_bus",
#ifdef CONFIG_JZGPIO_PHY_RESET
	.dev.platform_data = &gpio_phy_reset,
#endif
};
#else
static struct mdio_gpio_platform_data mdio_gpio_data = {
        .mdc = GPF(13),
        .mdio = GPF(14),
        .phy_mask = 0,
        .irqs = { 0 },
};
struct platform_device jz4775_mii_bus = {
        .name = "mdio-gpio",
        .dev.platform_data = &mdio_gpio_data,
};
#endif

struct platform_device jz4775_mac_device = {
        .name = "jz4775_mac",
        .dev.platform_data = &jz4775_mii_bus,
};
#endif