Пример #1
0
static LES_NetworkMessage* LES_CreateNetworkMessage(const LES_uint16 type, const LES_uint16 id, const LES_uint32 payloadSize, 
																										const int messageSize)
{
	LES_NetworkMessage* const pNetworkMessage = (LES_NetworkMessage*)malloc(messageSize);
	pNetworkMessage->m_type = toBigEndian16(type);
	pNetworkMessage->m_id = toBigEndian16(id);
	pNetworkMessage->m_payloadSize = toBigEndian32(payloadSize);

	return pNetworkMessage;
}
Пример #2
0
    std::pair<size_t, bool> StreamWriter<StreamType>::append_signedInt(long long val)
    {
        using Int8 = std::numeric_limits<int8_t>;
        using Int16 = std::numeric_limits<int16_t>;
        using Int32 = std::numeric_limits<int32_t>;
        using Int64 = std::numeric_limits<int64_t>;

        byte b[8];
        std::pair<size_t, bool> rtn(0, false);
        if(in_range(val, Int8::lowest(), Int8::max()))
        {
            write(Marker::Int8);
            write(static_cast<byte>(val));
            rtn = std::make_pair(2, true);
        }
        else if(in_range(val, Int16::lowest(), Int16::max()))
        {
            const uint16_t tit = static_cast<uint16_t>(val);
            const uint16_t val = toBigEndian16(tit);
            std::memcpy(b, &val, 2);
            write(Marker::Int16);
            write(b, 2);
            rtn = std::make_pair(3, true);
        }
        else if(in_range(val, Int32::lowest(), Int32::max()))
        {
            const uint32_t tit = static_cast<uint32_t>(val);
            const uint32_t val = toBigEndian32(tit);
            std::memcpy(b, &val, 4);
            write(Marker::Int32);
            write(b, 4);
            rtn = std::make_pair(5, true);
        }
        else if(in_range(val, Int64::lowest(), Int64::max()))
        {
            const uint64_t tit = static_cast<uint64_t>(val);
            const uint64_t val = toBigEndian64(tit);
            std::memcpy(b, &val, 8);
            write(Marker::Int64);
            write(b, 8);
            rtn = std::make_pair(9, true);
        }

        return rtn;
    }
Пример #3
0
/*----------------------------------------------------------------------------*/
static void deviceInit(struct DeviceDriver *device, struct Interface *interface,
    PinNumber ledNumber, uint16_t address)
{
  device->interface = interface;
  device->state = DEVICE_IDLE;
  device->desiredRate = DEVICE_CLOCK;
  device->localAddress = 0;
  device->deviceAddress = address;
  device->change = false;

  static_assert(MEMORY_ADDRESS_SIZE && MEMORY_ADDRESS_SIZE <= 2,
      "Incorrect address size");
  if (MEMORY_ADDRESS_SIZE == 2)
    device->localAddress = toBigEndian16(device->localAddress);

  device->led = pinInit(ledNumber);
  pinOutput(device->led, false);
}