|
@@ -71,6 +71,7 @@ uint16_t RGB_Location_Address_Check(uint8_t id){
|
71
|
71
|
|
72
|
72
|
void RGB_Response_Func(uint8_t* data){
|
73
|
73
|
RGB_CMD_T type = data[bluecell_type];
|
|
74
|
+ uint8_t temp_data[100] = {0,};
|
74
|
75
|
#if 0
|
75
|
76
|
for(uint8_t i = 0; i < 10; i++){
|
76
|
77
|
printf("%02x ",data[i]);
|
|
@@ -107,20 +108,25 @@ for(uint8_t i = 0; i < 10; i++){
|
107
|
108
|
case RGB_Lora_Data_Report:
|
108
|
109
|
break;
|
109
|
110
|
case RGB_Location_Report:
|
|
111
|
+ M24C32_Data_Write(&hi2c2,&data[Location_stx],RGB_Location_Address_Check(data[data[bluecell_length]]),data[bluecell_length] + 3); // EEPROM Controller ID Save
|
|
112
|
+ break;
|
110
|
113
|
case RGB_Location_Response:
|
111
|
|
- M24C32_Data_Write(&hi2c2,&data[Location_Data],RGB_Location_Address_Check(data[bluecell_dstid]),data[bluecell_length] - 2); // EEPROM Controller ID Save
|
|
114
|
+ temp_data[bluecell_length] = M24C32_Data_Read(&hi2c2,RGB_Location_Address_Check(data[bluecell_dstid]) + 2); // EEPROM Controller ID Save
|
|
115
|
+ for(uint8_t i = 0; i < temp_data[bluecell_length] + 3; i++)
|
|
116
|
+ temp_data[i] = M24C32_Data_Read(&hi2c2,RGB_Location_Address_Check(data[bluecell_dstid]) + i); // EEPROM Controller ID Save
|
|
117
|
+ temp_data[bluecell_type] = RGB_Location_Response;
|
|
118
|
+ temp_data[temp_data[bluecell_length] + 1] = STH30_CreateCrc(&temp_data[bluecell_type],temp_data[bluecell_length]);
|
|
119
|
+ Uart1_Data_Send(temp_data,temp_data[bluecell_length] + 3);
|
112
|
120
|
break;
|
113
|
121
|
case RGB_ControllerID_GET:
|
114
|
122
|
Uart1_Data_Send(data,data[bluecell_length] + 3);
|
115
|
123
|
break;
|
|
124
|
+ case RGB_ControllerLimitGet:
|
|
125
|
+ Uart1_Data_Send(data,data[bluecell_length] + 3);
|
|
126
|
+ break;
|
116
|
127
|
}
|
117
|
|
-
|
118
|
128
|
}
|
119
|
129
|
|
120
|
|
-
|
121
|
|
-
|
122
|
|
-
|
123
|
|
-
|
124
|
130
|
void RGB_Sensor_LED_Alarm_ON(uint8_t id ){
|
125
|
131
|
switch(id){
|
126
|
132
|
case 0:// 모든 LED의 전원을 ON
|
|
@@ -218,7 +224,8 @@ void RGB_Alarm_Check(uint8_t* data){
|
218
|
224
|
uint16_t Sensor_red[9] = {0,};
|
219
|
225
|
uint16_t Sensor_green[9] = {0,};
|
220
|
226
|
uint16_t Sensor_blue[9] = {0,};
|
221
|
|
-
|
|
227
|
+ uint8_t Alarm_occur = 0;
|
|
228
|
+ static uint8_t Prev_Alarm_occur;
|
222
|
229
|
Sensor_red[data[bluecell_srcid]] = ((data[bluecell_red_H + 2] << 8)| data[bluecell_red_L + 2]);
|
223
|
230
|
Sensor_green[data[bluecell_srcid]] = ((data[bluecell_green_H + 2] << 8)| data[bluecell_green_L + 2]);
|
224
|
231
|
Sensor_blue[data[bluecell_srcid]] = ((data[bluecell_blue_H + 2] << 8)| data[bluecell_blue_L + 2]);
|
|
@@ -228,11 +235,16 @@ void RGB_Alarm_Check(uint8_t* data){
|
228
|
235
|
|| RGB_SensorGreenLimit_Buf[SensorID_buf[i]] >= Sensor_green[SensorID_buf[i]]
|
229
|
236
|
|| RGB_SensorBlueLimit_Buf[SensorID_buf[i]] >= Sensor_blue[SensorID_buf[i]]) {
|
230
|
237
|
LED_Alarm[SensorID_buf[i]] = 1;
|
|
238
|
+ Alarm_occur = 1;
|
231
|
239
|
}else{
|
232
|
240
|
LED_Alarm[SensorID_buf[i]] = 0;
|
233
|
241
|
}
|
234
|
242
|
}
|
235
|
243
|
RGB_Data_Stack(&LED_Alarm[1]);
|
|
244
|
+ if(Prev_Alarm_occur != Alarm_occur){
|
|
245
|
+ LoraDataSendSet(1);
|
|
246
|
+ Prev_Alarm_occur = Alarm_occur;
|
|
247
|
+ }
|
236
|
248
|
}
|
237
|
249
|
|
238
|
250
|
uint8_t RGB_DeviceStatusCheck(void){
|
|
@@ -303,7 +315,7 @@ void RGB_Data_Stack(uint8_t* rgb_buf){
|
303
|
315
|
Lora_Buf[bluecell_srcid + 2] |= rgb_buf[i] << i ;
|
304
|
316
|
}
|
305
|
317
|
Lora_Buf[bluecell_srcid + 3]= STH30_CreateCrc(&Lora_Buf[bluecell_type],Lora_Buf[bluecell_length]);
|
306
|
|
- LoraDataSendSet(1);
|
|
318
|
+
|
307
|
319
|
}
|
308
|
320
|
/*
|
309
|
321
|
RGB_Data_Stack에 Lora에 Data를 보내기 위해 Buffer에 Data를 쌓을 때
|
|
@@ -323,13 +335,22 @@ uint8_t RGB_BufCal(uint8_t srcid){
|
323
|
335
|
}
|
324
|
336
|
return ret;
|
325
|
337
|
}
|
|
338
|
+uint8_t RGB_LimitData_Get(uint8_t id){
|
|
339
|
+
|
|
340
|
+ switch(id){
|
326
|
341
|
|
|
342
|
+
|
|
343
|
+ }
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+}
|
327
|
347
|
#endif // PYJ.2019.04.14_END --
|
328
|
348
|
uint8_t datalosscnt[9] = {0,};
|
329
|
349
|
void RGB_Controller_Func(uint8_t* data){
|
330
|
350
|
RGB_CMD_T type = data[bluecell_type];
|
331
|
351
|
// static uint8_t temp_sensorid;
|
332
|
352
|
uint8_t Result_buf[100] = {0,};
|
|
353
|
+ uint8_t i = 0;
|
333
|
354
|
switch(type){
|
334
|
355
|
case RGB_Status_Data_Request:
|
335
|
356
|
datalosscnt[data[bluecell_srcid + 1]]++;
|
|
@@ -343,7 +364,6 @@ void RGB_Controller_Func(uint8_t* data){
|
343
|
364
|
case RGB_ControllerID_SET:
|
344
|
365
|
memcpy(&Result_buf[bluecell_stx],&data[bluecell_stx],data[bluecell_length] + 3);
|
345
|
366
|
MyControllerID = data[bluecell_srcid]; // �긽��諛⑹쓽 SRC ID�뒗 �굹�쓽 DST ID�씠�떎.
|
346
|
|
-
|
347
|
367
|
break;
|
348
|
368
|
case RGB_SensorID_SET:
|
349
|
369
|
RGB_SensorIDAutoSet(1);
|
|
@@ -376,7 +396,7 @@ void RGB_Controller_Func(uint8_t* data){
|
376
|
396
|
case RGB_ID_Allocate_Request:
|
377
|
397
|
break;
|
378
|
398
|
case RGB_Location_Report:
|
379
|
|
- break;
|
|
399
|
+ memcpy(&Result_buf[bluecell_stx],&data[bluecell_stx],data[bluecell_length] + 3);
|
380
|
400
|
case RGB_Location_Response:
|
381
|
401
|
break;
|
382
|
402
|
case RGB_ControllerID_GET:
|
|
@@ -387,10 +407,23 @@ void RGB_Controller_Func(uint8_t* data){
|
387
|
407
|
Result_buf[bluecell_srcid + 1] = STH30_CreateCrc(&Result_buf[bluecell_type],Result_buf[bluecell_length]);
|
388
|
408
|
Result_buf[bluecell_srcid + 2] = 0xeb;
|
389
|
409
|
break;
|
|
410
|
+
|
|
411
|
+ case RGB_ControllerLimitGet:
|
|
412
|
+ Result_buf[bluecell_stx] = 0xbe;
|
|
413
|
+ Result_buf[bluecell_type] = RGB_ControllerLimitGet;
|
|
414
|
+ Result_buf[bluecell_length] = 8;
|
|
415
|
+ Result_buf[bluecell_srcid + 0] = (RGB_SensorRedLimit_Buf[data[bluecell_srcid]] & 0xFF00) >> 8;
|
|
416
|
+ Result_buf[bluecell_srcid + 1] = RGB_SensorRedLimit_Buf[data[bluecell_srcid]] & 0x00FF;
|
|
417
|
+ Result_buf[bluecell_srcid + 2] = (RGB_SensorGreenLimit_Buf[data[bluecell_srcid]] & 0xFF00) >> 8;
|
|
418
|
+ Result_buf[bluecell_srcid + 3] = RGB_SensorGreenLimit_Buf[data[bluecell_srcid]] & 0x00FF;
|
|
419
|
+ Result_buf[bluecell_srcid + 4] = (RGB_SensorBlueLimit_Buf[data[bluecell_srcid]] & 0xFF00) >> 8;
|
|
420
|
+ Result_buf[bluecell_srcid + 5] = RGB_SensorBlueLimit_Buf[data[bluecell_srcid]] & 0x00FF;
|
|
421
|
+ Result_buf[bluecell_srcid + 6] = STH30_CreateCrc(&Result_buf[bluecell_type],Result_buf[bluecell_length]);
|
|
422
|
+ Result_buf[bluecell_srcid + 7] = 0xeb;
|
|
423
|
+ break;
|
390
|
424
|
default:
|
391
|
|
- break;
|
|
425
|
+ break;
|
392
|
426
|
}
|
393
|
|
-
|
394
|
427
|
RGB_Response_Func(&Result_buf[bluecell_stx]);
|
395
|
428
|
return;
|
396
|
429
|
}
|