Any guidance would be greatly appreciated .
/* A simple sketch to control TLS3001 type pixels from an E1.31 source.
Copyright 2018 Barnabybear <diychristmas.org> Full details at end of code.
Under data 07-Sept-2018
Ethercard section based on a sketch 'udpListner' by Brian Lee <cybexsoft@hotmail.com> 2013-4-7
*/
#include <EtherCard.h>
#include <IPAddress.h>
unsigned char pix_val;
byte n;
int m;
byte s_reset[] = {0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0};
byte l_reset;
byte s_sync[] = {0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0,
0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
};
byte l_sync;
byte s_start[] = {0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0};
byte l_start;
const byte PROGMEM lookup[256][13] { // comment after line = 8 bit value, 12 bit gamma corrected value
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0}, //0,0
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F}, //1,1
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F}, //2,1
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F}, //3,1
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F}, //4,2
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0}, //5,2
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0}, //6,2
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F}, //7,3
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0}, //8,4
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F}, //9,5
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0}, //10,6
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0}, //11,8
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F}, //12,9
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0}, //13,11
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0}, //14,12
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0}, //15,14
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0}, //16,16
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0}, //17,18
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0}, //18,20
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0}, //19,23
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F}, //20,25
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F}, //21,28
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0}, //22,30
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F}, //23,33
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0}, //24,36
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F}, //25,39
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0}, //26,43
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F}, //27,46
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F}, //28,49
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0}, //29,53
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0}, //30,57
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0}, //31,61
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0}, //32,64
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0}, //33,69
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0}, //34,73
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F}, //35,77
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F}, //36,82
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0}, //37,86
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0}, //38,91
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F}, //39,96
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0}, //40,101
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F}, //41,106
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F}, //42,111
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0}, //43,116
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F}, //44,122
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F}, //45,128
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F}, //46,133
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F}, //47,139
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F}, //48,145
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F}, //49,151
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F}, //50,157
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F}, //51,164
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0}, //52,170
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0}, //53,177
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F}, //54,184
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0}, //55,191
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F}, //56,197
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0}, //57,205
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F}, //58,212
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F}, //59,219
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0}, //60,227
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0}, //61,234
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0}, //62,242
{0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F}, //63,250
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F}, //64,258
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0}, //65,266
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0}, //66,274
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0}, //67,283
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F}, //68,291
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F}, //69,300
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0}, //70,309
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F}, //71,317
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0}, //72,326
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F}, //73,336
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0}, //74,345
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0}, //75,354
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F}, //76,364
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F}, //77,373
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F}, //78,383
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F}, //79,393
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F}, //80,403
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F}, //81,413
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F}, //82,423
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F}, //83,434
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0}, //84,444
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F}, //85,455
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F}, //86,466
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0}, //87,477
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F}, //88,488
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0}, //89,499
{0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0}, //90,510
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F}, //91,522
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F}, //92,533
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0}, //93,545
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0}, //94,556
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0}, //95,568
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0}, //96,580
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0}, //97,593
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0}, //98,605
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F}, //99,617
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F}, //100,630
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0}, //101,642
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F}, //102,655
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0}, //103,668
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F}, //104,681
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0}, //105,694
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F}, //106,708
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F}, //107,721
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0}, //108,735
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0}, //109,748
{0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0}, //110,762
{0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F}, //111,776
{0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F}, //112,790
{0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0}, //113,804
{0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0}, //114,818
{0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0}, //115,833
{0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F}, //116,847
{0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0}, //117,862
{0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0}, //118,877
{0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F}, //119,892
{0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0}, //120,907
{0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0}, //121,922
{0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F}, //122,937
{0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0}, //123,953
{0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0}, //124,968
{0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F}, //125,984
{0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F}, //126,1000
{0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F}, //127,1016
{0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F}, //128,1032
{0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F}, //129,1048
{0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0}, //130,1064
{0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0}, //131,1081
{0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F}, //132,1097
{0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F}, //133,1114
{0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0}, //134,1131
{0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F}, //135,1148
{0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0}, //136,1165
{0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F}, //137,1182
{0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F}, //138,1199
{0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0}, //139,1217
{0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0}, //140,1234
{0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0}, //141,1252
{0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F}, //142,1270
{0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F}, //143,1288
{0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F}, //144,1306
{0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0}, //145,1324
{0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0}, //146,1342
{0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0}, //147,1361
{0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F}, //148,1379
{0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0}, //149,1398
{0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0}, //150,1417
{0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F}, //151,1436
{0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0}, //152,1455
{0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0}, //153,1474
{0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F}, //154,1494
{0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0}, //155,1513
{0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0}, //156,1533
{0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0}, //157,1552
{0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0}, //158,1572
{0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0}, //159,1592
{0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0}, //160,1612
{0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0}, //161,1632
{0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0}, //162,1653
{0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F}, //163,1673
{0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F}, //164,1694
{0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0}, //165,1715
{0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F}, //166,1735
{0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0}, //167,1756
{0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F}, //168,1777
{0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0}, //169,1799
{0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0}, //170,1820
{0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F}, //171,1841
{0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F}, //172,1863
{0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0}, //173,1885
{0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0}, //174,1907
{0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0}, //175,1929
{0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0}, //176,1951
{0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0}, //177,1973
{0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F}, //178,1995
{0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F}, //179,2018
{0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0}, //180,2040
{0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F}, //181,2063
{0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0}, //182,2086
{0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0}, //183,2109
{0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0}, //184,2132
{0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F}, //185,2155
{0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0}, //186,2179
{0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0}, //187,2202
{0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F}, //188,2226
{0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F}, //189,2250
{0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F}, //190,2273
{0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F}, //191,2297
{0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F}, //192,2322
{0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F}, //193,2346
{0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0}, //194,2370
{0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0}, //195,2395
{0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F}, //196,2419
{0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0}, //197,2444
{0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0}, //198,2469
{0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F}, //199,2494
{0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F}, //200,2519
{0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0}, //201,2544
{0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F}, //202,2570
{0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F}, //203,2595
{0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0}, //204,2621
{0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0}, //205,2647
{0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0}, //206,2672
{0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0}, //207,2698
{0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0}, //208,2725
{0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0}, //209,2751
{0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F}, //210,2777
{0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F}, //211,2804
{0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0}, //212,2830
{0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F}, //213,2857
{0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0}, //214,2884
{0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F}, //215,2911
{0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0}, //216,2938
{0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F}, //217,2965
{0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0}, //218,2993
{0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0}, //219,3020
{0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0}, //220,3048
{0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F}, //221,3076
{0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F}, //222,3104
{0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F}, //223,3132
{0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F}, //224,3160
{0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0}, //225,3188
{0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0}, //226,3217
{0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F}, //227,3245
{0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F}, //228,3274
{0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0}, //229,3303
{0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F}, //230,3331
{0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0}, //231,3360
{0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F}, //232,3390
{0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0}, //233,3419
{0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0}, //234,3448
{0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F}, //235,3478
{0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F}, //236,3507
{0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F}, //237,3537
{0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F}, //238,3567
{0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F}, //239,3597
{0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F}, //240,3627
{0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F}, //241,3658
{0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0}, //242,3688
{0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0}, //243,3719
{0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F}, //244,3749
{0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0}, //245,3780
{0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F}, //246,3811
{0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0}, //247,3842
{0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0x0F}, //248,3873
{0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0}, //249,3905
{0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F}, //250,3936
{0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F}, //251,3968
{0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F}, //252,3999
{0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F}, //253,4031
{0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0}, //254,4063
{0xF0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F} //255,4095
};
#define STATIC 1 // set to 1 to disable DHCP (adjust myip/gwip values below)
#if STATIC
// ethernet interface ip address
static byte myip[] = { 192, 168, 1, 62 };
// gateway ip address
static byte gwip[] = { 192, 168, 1, 1 };
#endif
// ethernet mac address - must be unique on your network.
static byte mymac[] = { 0x70, 0x69, 0x69, 0x2D, 0x30, 0x31 };
// the universe number to listen for.
unsigned int universe = 101;
byte Ethernet::buffer[681]; // tcp/ip send and receive buffer
//callback that runs the TLS output loop
void sACN_data(uint16_t dest_port, uint8_t src_ip[IP_LEN], uint16_t src_port, const char *data, uint16_t len) {
// check to see if the packet is an ASC-E1.17 type
if (!((data[4] ^ 0x41) && (data[5] ^ 0x53) && (data[6] ^ 0x43) && (data[7] ^ 0x2D) &&
(data[8] ^ 0x45) && (data[9] ^ 0x31) && (data[10] ^ 0x2E) && (data[11] ^ 0x31) &&
(data[12] ^ 0x37))) {
// check to see if the universe number is correct
if (!((universe ^ data[114]) + (universe >> 8 ^ data[113]))) {
cli(); // stop interupts
// Send start
l_start = sizeof(s_start);
for ( n = 0; n < l_start; n++) {
while ( ! (UCSR0A & (1 << UDRE0)) ); // Wait for buffer to empty
UDR0 = s_start[n]; // put data in uart Tx buffer
}
m = 126; // first byte of data in e1.31 packet
// output TLS data
while (true) { // loop
pix_val = data[m];
while ( ! (UCSR0A & (1 << UDRE0)) ); // Wait for buffer to empty
UDR0 = pgm_read_byte_near(&(lookup[pix_val][0])); // put data in uart Tx buffer
while ( ! (UCSR0A & (1 << UDRE0)) ); // Wait for buffer to empty
UDR0 = pgm_read_byte_near(&(lookup[pix_val][1])); // put data in uart Tx buffer
while ( ! (UCSR0A & (1 << UDRE0)) ); // Wait for buffer to empty
UDR0 = pgm_read_byte_near(&(lookup[pix_val][2])); // put data in uart Tx buffer
while ( ! (UCSR0A & (1 << UDRE0)) ); // Wait for buffer to empty
UDR0 = pgm_read_byte_near(&(lookup[pix_val][3])); // put data in uart Tx buffer
while ( ! (UCSR0A & (1 << UDRE0)) ); // Wait for buffer to empty
UDR0 = pgm_read_byte_near(&(lookup[pix_val][4])); // put data in uart Tx buffer
while ( ! (UCSR0A & (1 << UDRE0)) ); // Wait for buffer to empty
UDR0 = pgm_read_byte_near(&(lookup[pix_val][5])); // put data in uart Tx buffer
while ( ! (UCSR0A & (1 << UDRE0)) ); // Wait for buffer to empty
UDR0 = pgm_read_byte_near(&(lookup[pix_val][6])); // put data in uart Tx buffer
while ( ! (UCSR0A & (1 << UDRE0)) ); // Wait for buffer to empty
UDR0 = pgm_read_byte_near(&(lookup[pix_val][7])); // put data in uart Tx buffer
while ( ! (UCSR0A & (1 << UDRE0)) ); // Wait for buffer to empty
UDR0 = pgm_read_byte_near(&(lookup[pix_val][8])); // put data in uart Tx buffer
while ( ! (UCSR0A & (1 << UDRE0)) ); // Wait for buffer to empty
UDR0 = pgm_read_byte_near(&(lookup[pix_val][9])); // put data in uart Tx buffer
while ( ! (UCSR0A & (1 << UDRE0)) ); // Wait for buffer to empty
UDR0 = pgm_read_byte_near(&(lookup[pix_val][10])); // put data in uart Tx buffer
while ( ! (UCSR0A & (1 << UDRE0)) ); // Wait for buffer to empty
UDR0 = pgm_read_byte_near(&(lookup[pix_val][11])); // put data in uart Tx buffer
while ( ! (UCSR0A & (1 << UDRE0)) ); // Wait for buffer to empty
UDR0 = pgm_read_byte_near(&(lookup[pix_val][12])); // put data in uart Tx buffer
if (!(m < 638)) break; // drop out of loop if all data tranfered
m++;
}
// Send start
delayMicroseconds(200);
l_start = sizeof(s_start);
for ( n = 0; n < l_start; n++) {
while ( ! (UCSR0A & (1 << UDRE0)) ); // Wait for buffer to empty
UDR0 = s_start[n]; // put data in uart Tx buffer
}
sei(); // restart interupts
}
}
}
void setup() {
Serial.begin(115200); // debug print - comment out during normal use.
Serial.println(F("\n[backSoon]")); // debug print - comment out during normal use.
if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)
Serial.println(F("Failed to access Ethernet controller")); // debug print - comment out during normal use.
#if STATIC
ether.staticSetup(myip, gwip);
#else
if (!ether.dhcpSetup())
Serial.println(F("DHCP failed")); // debug print - comment out during normal use.
#endif
ether.printIp("IP: ", ether.myip);
ether.printIp("GW: ", ether.gwip);
ether.printIp("DNS: ", ether.dnsip);
//register udpSerialPrint() to port 5568 (e1.31 port).
ether.udpServerListenOnPort(&sACN_data, 5568);
//register udpSerialPrint() to port 42.
ether.udpServerListenOnPort(&sACN_data, 42);
Serial.end();
// UCSR0C = (1 << UMSEL01) | (1 << UMSEL00); // Set MSPI data mode 1.
// UCSR0C = (3 << UCSZ00) | (0 << UCPOL0); // Set MSPI data mode 1.
UCSR0C = 0xC0; // Set MSPI data mode 1.
UCSR0B = (1 << TXEN0); // Enable transmitter
UCSR0A |= (1 << U2X0); // Double transmition speed
UBRR0H = 0; UBRR0L = 1; // Set baud to 4,000,000bps @ 16Mhz clock
cli();
// Send reset
l_reset = sizeof(s_reset);
for (n = 0; n < l_reset; n++) {
while ( ! (UCSR0A & (1 << UDRE0)) ); // Wait for buffer to empty
UDR0 = s_reset[n]; // put data in uart Tx buffer
}
delayMicroseconds(1000);
// Send sync
l_sync = sizeof(s_sync);
for (n = 0; n < l_sync; n++) {
while ( ! (UCSR0A & (1 << UDRE0)) ); // Wait for buffer to empty
UDR0 = s_sync[n]; // put data in uart Tx buffer
}
sei();
delayMicroseconds(2500);
}
void loop() {
//this must be called for ethercard functions to work.
ether.packetLoop(ether.packetReceive());
delay(1);
}
/*5V – this connects to the 5V on the Nano.
GND – this connects to the ground on the Nano.
MO (MOSI Master Out Slave In) – this connects to MOSI (pin D12) on the Nano.
MI (MISO Master In Slave Out) – this connects to MISO (pin D11) on the Nano.
CK (ClocK) – this connects to SCK (pin D13) on the Nano.
SS (Slave Select) – this connects to SS (pin 10) on the Nano.
POE+ (Power Over Ethernet) – we don’t use this.
POE- (Power Over Ethernet) – we don’t use this.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
*/