diff --git a/fakeStation/fakeStation.ino b/fakeStation/fakeStation.ino index 4dac6d5..98f18c8 100644 --- a/fakeStation/fakeStation.ino +++ b/fakeStation/fakeStation.ino @@ -12,7 +12,16 @@ void setup() { SerialUSB.begin(9600); SerialUSB.println("LoRa Sender"); thisLoRa.begin(); - protocol.codeFrame(0x0B,0x00,0x0000,0x0001,0x0000,0x0000,0x0000); + + char pacomeName[] = {'T', 'E', 'S', 'T', '-', 'L', 'O', 'R', 'A', '1'}; + uint16_t datas[] = {0x0000, 0x0000, 0x0000}; + + transform(pacomeName, datas); + protocol.codeFrame(0x0B,0x00,0x0000,0x0001,datas[0],datas[1],datas[2]); + + LoRa.beginPacket(); + LoRa.write((uint8_t*)&protocol, 12); + LoRa.endPacket(); } void loop() diff --git a/fakeStation/nameFunctions.ino b/fakeStation/nameFunctions.ino new file mode 100644 index 0000000..fadffba --- /dev/null +++ b/fakeStation/nameFunctions.ino @@ -0,0 +1,273 @@ +void transform(char stationName[], uint16_t dataArray[]) +{ + // 9 characters on 5 bits + // 1 number on 3 bits + // Frame : xxxxx|xxx.xx|xxxxx|x.xxxx|xxxx.x|xxxxx|xx.xxx|xxxxx|.xxxxx|xxx + + dataArray[0] = (dataArray[0] << 5) | convertCharacterToNumber(stationName[0]); + dataArray[0] = (dataArray[0] << 5) | convertCharacterToNumber(stationName[1]); + dataArray[0] = (dataArray[0] << 5) | convertCharacterToNumber(stationName[2]); + dataArray[0] = (dataArray[0] << 1) | (convertCharacterToNumber(stationName[3]) >> 4); + + dataArray[1] = (dataArray[1] << 5) | convertCharacterToNumber(stationName[3]); + dataArray[1] = (dataArray[1] << 5) | convertCharacterToNumber(stationName[4]); + dataArray[1] = (dataArray[1] << 5) | convertCharacterToNumber(stationName[5]); + dataArray[1] = (dataArray[1] << 2) | (convertCharacterToNumber(stationName[6]) >> 3); + + dataArray[2] = (dataArray[2] << 5) | convertCharacterToNumber(stationName[6]); + dataArray[2] = (dataArray[2] << 5) | convertCharacterToNumber(stationName[7]); + dataArray[2] = (dataArray[2] << 5) | convertCharacterToNumber(stationName[8]); + dataArray[2] = (dataArray[2] << 3) | convertCharacterNumberToNumber(stationName[9]); +} + +uint8_t convertCharacterNumberToNumber(char myCharacter) +{ + switch(myCharacter) + { + case '0': + { + return(0); + break; + } + + case '1': + { + return(1); + break; + } + + case '2': + { + return(2); + break; + } + + case '3': + { + return(3); + break; + } + + case '4': + { + return(4); + break; + } + + case '5': + { + return(5); + break; + } + + case '6': + { + return(6); + break; + } + + case '7': + { + return(7); + break; + } + } +} + +uint8_t convertCharacterToNumber(char myCharacter) +{ + switch(myCharacter) + { + case 'A': + { + return(0); + break; + } + + case 'B': + { + return(1); + break; + } + + case 'C': + { + return(2); + break; + } + + case 'D': + { + return(3); + break; + } + + case 'E': + { + return(4); + break; + } + + case 'F': + { + return(5); + break; + } + + case 'G': + { + return(6); + break; + } + + case 'H': + { + return(7); + break; + } + + case 'I': + { + return(8); + break; + } + + case 'J': + { + return(9); + break; + } + + case 'K': + { + return(10); + break; + } + + case 'L': + { + return(11); + break; + } + + case 'M': + { + return(12); + break; + } + + case 'N': + { + return(13); + break; + } + + case 'O': + { + return(14); + break; + } + + case 'P': + { + return(15); + break; + } + + case 'Q': + { + return(16); + break; + } + + case 'R': + { + return(17); + break; + } + + case 'S': + { + return(18); + break; + } + + case 'T': + { + return(19); + break; + } + + case 'U': + { + return(20); + break; + } + + case 'V': + { + return(21); + break; + } + + case 'W': + { + return(22); + break; + } + + case 'X': + { + return(23); + break; + } + + case 'Y': + { + return(24); + break; + } + + case 'Z': + { + return(25); + break; + } + + case '-': + { + return(26); + break; + } + + case '.': + { + return(27); + break; + } + + case '/': + { + return(28); + break; + } + + case '\rr': + { + return(29); + break; + } + + case '(': + { + return(30); + break; + } + + case ')': + { + return(31); + break; + } + } +}