PROGMEM for header
This commit is contained in:
parent
349578fb6e
commit
9b98cbb894
@ -713,7 +713,9 @@ void sendSysInfoUDP()
|
|||||||
// buffer - a buffer of at least length*4 bytes long
|
// buffer - a buffer of at least length*4 bytes long
|
||||||
// isRGBW - true if the buffer contains 4 components per pixel
|
// isRGBW - true if the buffer contains 4 components per pixel
|
||||||
|
|
||||||
uint8_t sequenceNumber = 0; // this needs to be shared across all outputs
|
static size_t sequenceNumber = 0; // this needs to be shared across all outputs
|
||||||
|
static const size_t ART_NET_HEADER_SIZE = 12;
|
||||||
|
static const byte ART_NET_HEADER[] PROGMEM = {0x41,0x72,0x74,0x2d,0x4e,0x65,0x74,0x00,0x00,0x50,0x00,0x0e};
|
||||||
|
|
||||||
uint8_t realtimeBroadcast(uint8_t type, IPAddress client, uint16_t length, uint8_t *buffer, uint8_t bri, bool isRGBW) {
|
uint8_t realtimeBroadcast(uint8_t type, IPAddress client, uint16_t length, uint8_t *buffer, uint8_t bri, bool isRGBW) {
|
||||||
if (!(apActive || interfacesInited) || !client[0] || !length) return 1; // network not initialised or dummy/unset IP address 031522 ajn added check for ap
|
if (!(apActive || interfacesInited) || !client[0] || !length) return 1; // network not initialised or dummy/unset IP address 031522 ajn added check for ap
|
||||||
@ -792,9 +794,9 @@ uint8_t realtimeBroadcast(uint8_t type, IPAddress client, uint16_t length, uint8
|
|||||||
case 2: //ArtNet
|
case 2: //ArtNet
|
||||||
{
|
{
|
||||||
// calculate the number of UDP packets we need to send
|
// calculate the number of UDP packets we need to send
|
||||||
size_t channelCount = length * (isRGBW?4:3); // 1 channel for every R,G,B,(W?) value
|
const size_t channelCount = length * (isRGBW?4:3); // 1 channel for every R,G,B,(W?) value
|
||||||
size_t ARTNET_CHANNELS_PER_PACKET = isRGBW?512:510; // 512/4=128 RGBW LEDs, 510/3=170 RGB LEDs
|
const size_t ARTNET_CHANNELS_PER_PACKET = isRGBW?512:510; // 512/4=128 RGBW LEDs, 510/3=170 RGB LEDs
|
||||||
size_t packetCount = ((channelCount-1)/ARTNET_CHANNELS_PER_PACKET)+1;
|
const size_t packetCount = ((channelCount-1)/ARTNET_CHANNELS_PER_PACKET)+1;
|
||||||
|
|
||||||
uint32_t channel = 0;
|
uint32_t channel = 0;
|
||||||
size_t bufferOffset = 0;
|
size_t bufferOffset = 0;
|
||||||
@ -819,9 +821,9 @@ uint8_t realtimeBroadcast(uint8_t type, IPAddress client, uint16_t length, uint8
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const byte ART_NET_HEADER[12] = {0x41,0x72,0x74,0x2d,0x4e,0x65,0x74,0x00,0x00,0x50,0x00,0x0e};
|
byte buffer[ART_NET_HEADER_SIZE];
|
||||||
|
memcpy_P(buffer, ART_NET_HEADER, ART_NET_HEADER_SIZE);
|
||||||
ddpUdp.write(ART_NET_HEADER,12); // This doesn't change. Hard coded ID, OpCode, and protocol version.
|
ddpUdp.write(buffer, ART_NET_HEADER_SIZE); // This doesn't change. Hard coded ID, OpCode, and protocol version.
|
||||||
ddpUdp.write(sequenceNumber & 0xFF); // sequence number. 1..255
|
ddpUdp.write(sequenceNumber & 0xFF); // sequence number. 1..255
|
||||||
ddpUdp.write(0x00); // physical - more an FYI, not really used for anything. 0..3
|
ddpUdp.write(0x00); // physical - more an FYI, not really used for anything. 0..3
|
||||||
ddpUdp.write((currentPacket) & 0xFF); // Universe LSB. 1 full packet == 1 full universe, so just use current packet number.
|
ddpUdp.write((currentPacket) & 0xFF); // Universe LSB. 1 full packet == 1 full universe, so just use current packet number.
|
||||||
|
Loading…
Reference in New Issue
Block a user