Skip to content
Snippets Groups Projects
Commit ada5a6e4 authored by abivarma.kandiah's avatar abivarma.kandiah
Browse files

Can display image from server

parent 6db1f2c7
No related branches found
No related tags found
1 merge request!2Merge ESP code to master
...@@ -88,52 +88,69 @@ uint8_t* mqtt_packet_to_raw(uint8_t* packet, unsigned int* length) ...@@ -88,52 +88,69 @@ uint8_t* mqtt_packet_to_raw(uint8_t* packet, unsigned int* length)
void send_data_to_matrix(uint8_t idx, uint8_t idy, uint8_t* data, uint32_t length) void send_data_to_matrix(uint8_t idx, uint8_t idy, uint8_t* data, uint32_t length)
{ {
uint8_t raw_data[202];
raw_data[0] = idx;
raw_data[1] = idy;
// ADD ID TO LEN uint8_t send_len = 2;
length += 2;
// SEND UART PACKET HEADER
SerialPort.print((char)0x77);
SerialPort.print((char)length-100);
uint8_t crc = 0;
// SEND MATRIX ID
SerialPort.print((char)idx);
SerialPort.print((char)idy);
// COMPUTE CRC FOR ID
crc = crc ^ idx;
crc = crc ^ idy;
// SEND RGB DATA // SEND RGB DATA
for(int i = 0; i < length; i+=3) for(int i = 0; i < length; i+=3)
{ {
Serial.print((char)data[i]); // Serial.print((char)data[i]);
Serial.print((char)data[i+1]); // Serial.print((char)data[i+1]);
Serial.print((char)data[i+2]); // Serial.print((char)data[i+2]);
// COMPUTE COLOR IN 16 BITS // COMPUTE COLOR IN 16 BITS
uint8_t r = data[i] & 0x1F; uint8_t r = data[i] & 0x1F;
uint8_t g = data[i+1] & 0x3F; uint8_t g = data[i+1] & 0x3F;
uint8_t b = data[i+2] & 0x1F ; uint8_t b = data[i+2] & 0x1F ;
uint16_t rgb = r << 11 | g << 5 | b; uint16_t rgb = r << 11 | g << 5 | b;
// Serial.print(rgb);
// Serial.print(' ');
// SPLIT ON 8 BITS // SPLIT ON 8 BITS
uint8_t rgb_0 = rgb >> 8; uint8_t rgb_0 = rgb >> 8;
uint8_t rgb_1 = rgb & 0x0F; uint8_t rgb_1 = rgb & 0xFF;
//Serial.println(rgb_0);
// COMPUTE CRC // Serial.print(' ');
crc = crc ^ rgb_0; //Serial.println(rgb_1);
crc = crc ^ rgb_1;
// SEND RGB // SEND RGB
SerialPort.print((char) rgb_0); //SerialPort.print((char) rgb_0);
SerialPort.print((char) rgb_1); //SerialPort.print((char) rgb_1);
//send_len += 2;
raw_data[send_len++] = rgb_0;
raw_data[send_len++] = rgb_1;
}
// // SEND MATRIX ID
// Serial.println(idx);
// Serial.println(idy);
Serial.println(send_len);
// SEND UART PACKET HEADER
SerialPort.print((char)0x77);
SerialPort.print((char)202);
uint8_t crc = 0;
for(int i = 0; i < send_len; i++)
{
if(raw_data[i] == 0x77 || raw_data[i] == 0x10 || raw_data[i] == 0xAA)
{
crc = crc ^ 0x10;
SerialPort.print((char)0x10);
Serial.println(0x10);
}
crc = crc ^ raw_data[i];
SerialPort.print((char)raw_data[i]);
Serial.println(raw_data[i]);
} }
// SEND UART PACKET FOOTER // SEND UART PACKET FOOTER
SerialPort.print((char)(crc ^ (length-100))); SerialPort.print((char)(crc ^ send_len));
SerialPort.print((char)0xAA); SerialPort.print((char)0xAA);
Serial.println(crc ^ send_len);
} }
void callback(char *topic, byte *payload, unsigned int length) void callback(char *topic, byte *payload, unsigned int length)
...@@ -142,6 +159,16 @@ void callback(char *topic, byte *payload, unsigned int length) ...@@ -142,6 +159,16 @@ void callback(char *topic, byte *payload, unsigned int length)
Serial.print("Message arrived in topic: "); Serial.print("Message arrived in topic: ");
Serial.println(topic); Serial.println(topic);
// // TEMP
// SerialPort.print((char)0x77);
// SerialPort.print((char)202);
// for(int i = 0 ; i < 202; i++)
// {
// SerialPort.print((char)0x61);
// }
// SerialPort.print((char)202);
// SerialPort.print((char)0xaa);
// GET RAW DATA // GET RAW DATA
uint8_t* raw_data = mqtt_packet_to_raw(payload, &length); uint8_t* raw_data = mqtt_packet_to_raw(payload, &length);
if(raw_data == NULL) if(raw_data == NULL)
...@@ -154,7 +181,7 @@ void callback(char *topic, byte *payload, unsigned int length) ...@@ -154,7 +181,7 @@ void callback(char *topic, byte *payload, unsigned int length)
{ {
for(int y = cluster_size_y - 1; y >= 0; y--) for(int y = cluster_size_y - 1; y >= 0; y--)
{ {
Serial.println("FOR LOOP"); //Serial.println("FOR LOOP");
// SEND UART PACKET // SEND UART PACKET
send_data_to_matrix(x, y, raw_data, IMG_DATA_SIZE); send_data_to_matrix(x, y, raw_data, IMG_DATA_SIZE);
......
...@@ -29,9 +29,9 @@ def data_to_color16(data): ...@@ -29,9 +29,9 @@ def data_to_color16(data):
id_x = data[0] id_x = data[0]
id_y = data[1] id_y = data[1]
afficher_texte(f"{len(data)}") #afficher_texte(f"{len(data)}")
for i in range(0, len(data), 2): for i in range(2, len(data), 2):
d_color16.append(data[i] << 8 | data[i+1]) d_color16.append(data[i] << 8 | data[i+1])
return list(map(color16_to_32, d_color16)) return list(map(color16_to_32, d_color16))
...@@ -39,7 +39,7 @@ def data_to_color16(data): ...@@ -39,7 +39,7 @@ def data_to_color16(data):
#data32 = list(map(color16_to_32, data16)) #data32 = list(map(color16_to_32, data16))
r_data = [] r_data = []
while(True): while(True):
r_data = recevoir_msg(N) r_data = recevoir_msg(S)
if len(r_data) > 0: if len(r_data) > 0:
break break
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment