|
@@ -4,8 +4,70 @@ void RGB_Response_Func(uint8_t* data);
|
4
|
4
|
uint8_t RGB_BufCal(uint8_t srcid);
|
5
|
5
|
void RGB_Alarm_Operate(void);
|
6
|
6
|
void RGB_Data_Stack(uint8_t* rgb_buf);
|
|
7
|
+uint16_t RGB_Location_Address_Check(uint8_t id);
|
7
|
8
|
|
|
9
|
+uint8_t SensorID_Cnt = 0;
|
|
10
|
+uint8_t SensorID_buf[8] = {0,};
|
|
11
|
+uint16_t RGB_SensorRedLimit_Buf[9]={0,};
|
|
12
|
+uint16_t RGB_SensorGreenLimit_Buf[9]={0,};
|
|
13
|
+uint16_t RGB_SensorBlueLimit_Buf[9]={0,};
|
|
14
|
+uint8_t LED_Alarm[9] = {0,};
|
|
15
|
+uint8_t RGB_Location_Buf[9][50] = {0};
|
8
|
16
|
|
|
17
|
+void RGB_Data_Init(void){
|
|
18
|
+ MyControllerID = M24C32_Data_Read(&hi2c2,MY_ID_ADDRESS);
|
|
19
|
+
|
|
20
|
+ for(uint8_t i = 0; i < 8; i++){
|
|
21
|
+ RGB_SensorRedLimit_Buf[i + 1] = (M24C32_Data_Read(&hi2c2,RGB1_LIMIT_RED_H_ADDRESS + (6 * i)) << 8);
|
|
22
|
+ RGB_SensorRedLimit_Buf[i + 1] |= M24C32_Data_Read(&hi2c2,RGB1_LIMIT_RED_L_ADDRESS + (6 * i));
|
|
23
|
+ }
|
|
24
|
+ for(uint8_t i = 0; i < 8; i++){
|
|
25
|
+ RGB_SensorGreenLimit_Buf[i + 1] = (M24C32_Data_Read(&hi2c2,RGB1_LIMIT_GREEN_H_ADDRESS + (6 * i)) << 8);
|
|
26
|
+ RGB_SensorGreenLimit_Buf[i + 1] |= M24C32_Data_Read(&hi2c2,RGB1_LIMIT_GREEN_L_ADDRESS + (6 * i));
|
|
27
|
+ }
|
|
28
|
+ for(uint8_t i = 0; i < 8; i++){
|
|
29
|
+ RGB_SensorBlueLimit_Buf[i + 1] = (M24C32_Data_Read(&hi2c2,RGB1_LIMIT_BLUE_H_ADDRESS + (6 * i)) << 8);
|
|
30
|
+ RGB_SensorBlueLimit_Buf[i + 1] |= M24C32_Data_Read(&hi2c2,RGB1_LIMIT_BLUE_L_ADDRESS + (6 * i));
|
|
31
|
+ }
|
|
32
|
+ for(uint8_t i = 0; i < 8; i++){
|
|
33
|
+ for(uint8_t aa= 0; aa < 50; aa++)
|
|
34
|
+ RGB_Location_Buf[i + 1][aa] = M24C32_Data_Read(&hi2c2,RGB_Location_Address_Check(i + 1) + aa);
|
|
35
|
+ }
|
|
36
|
+ printf("MY id is %d \n",MyControllerID);
|
|
37
|
+ for(uint8_t i = 1; i <= 8; i++){
|
|
38
|
+ printf("RGB_SensorRedLimit_Buf[%d] : %04x\n",i,RGB_SensorRedLimit_Buf[i]);
|
|
39
|
+ printf("RGB_SensorGreenLimit_Buf[%d] : %04x\n",i,RGB_SensorGreenLimit_Buf[i]);
|
|
40
|
+ printf("RGB_SensorBlueLimit_Buf[%d] : %04x\n",i,RGB_SensorBlueLimit_Buf[i]);
|
|
41
|
+ }
|
|
42
|
+}
|
|
43
|
+uint16_t RGB_Limit_Address_Check(uint8_t id){
|
|
44
|
+ uint16_t ret = 0;
|
|
45
|
+ switch(id){
|
|
46
|
+ case 1: ret = RGB1_LIMIT_RED_H_ADDRESS;break;
|
|
47
|
+ case 2: ret = RGB2_LIMIT_RED_H_ADDRESS;break;
|
|
48
|
+ case 3: ret = RGB3_LIMIT_RED_H_ADDRESS;break;
|
|
49
|
+ case 4: ret = RGB4_LIMIT_RED_H_ADDRESS;break;
|
|
50
|
+ case 5: ret = RGB5_LIMIT_RED_H_ADDRESS;break;
|
|
51
|
+ case 6: ret = RGB6_LIMIT_RED_H_ADDRESS;break;
|
|
52
|
+ case 7: ret = RGB7_LIMIT_RED_H_ADDRESS;break;
|
|
53
|
+ case 8: ret = RGB8_LIMIT_RED_H_ADDRESS;break;
|
|
54
|
+ }
|
|
55
|
+ return ret;
|
|
56
|
+}
|
|
57
|
+uint16_t RGB_Location_Address_Check(uint8_t id){
|
|
58
|
+ uint16_t ret = 0;
|
|
59
|
+ switch(id){
|
|
60
|
+ case 1: ret = RGB1_LOCATION_ADDRESS;break;
|
|
61
|
+ case 2: ret = RGB2_LOCATION_ADDRESS;break;
|
|
62
|
+ case 3: ret = RGB3_LOCATION_ADDRESS;break;
|
|
63
|
+ case 4: ret = RGB4_LOCATION_ADDRESS;break;
|
|
64
|
+ case 5: ret = RGB5_LOCATION_ADDRESS;break;
|
|
65
|
+ case 6: ret = RGB6_LOCATION_ADDRESS;break;
|
|
66
|
+ case 7: ret = RGB7_LOCATION_ADDRESS;break;
|
|
67
|
+ case 8: ret = RGB8_LOCATION_ADDRESS;break;
|
|
68
|
+ }
|
|
69
|
+ return ret;
|
|
70
|
+}
|
9
|
71
|
|
10
|
72
|
void RGB_Response_Func(uint8_t* data){
|
11
|
73
|
RGB_CMD_T type = data[bluecell_type];
|
|
@@ -20,6 +82,7 @@ for(uint8_t i = 0; i < 10; i++){
|
20
|
82
|
break;
|
21
|
83
|
case RGB_ControllerID_SET:
|
22
|
84
|
Uart1_Data_Send(data,RGB_ControllerID_SET_Length);
|
|
85
|
+ M24C32_Data_Write(&hi2c2,&MyControllerID,MY_ID_ADDRESS,1); // EEPROM Controller ID Save
|
23
|
86
|
break;
|
24
|
87
|
case RGB_SensorID_SET:
|
25
|
88
|
Uart2_Data_Send(data,RGB_SensorIDAutoSetRequest_Length);
|
|
@@ -29,7 +92,7 @@ for(uint8_t i = 0; i < 10; i++){
|
29
|
92
|
break;
|
30
|
93
|
case RGB_ControllerLimitSet:
|
31
|
94
|
Uart1_Data_Send(data,data[bluecell_length] + 3);
|
32
|
|
- Flash_write(&data[0]);
|
|
95
|
+ M24C32_Data_Write(&hi2c2,&data[bluecell_red_H],RGB_Limit_Address_Check(data[bluecell_dstid]),6); // EEPROM Controller ID Save
|
33
|
96
|
break;
|
34
|
97
|
case RGB_Sensor_Start:
|
35
|
98
|
case RGB_Sensor_Check:
|
|
@@ -40,23 +103,24 @@ for(uint8_t i = 0; i < 10; i++){
|
40
|
103
|
break;
|
41
|
104
|
case RGB_Reset:
|
42
|
105
|
case RGB_SensorID_SET_Success:
|
|
106
|
+ case RGB_ID_Allocate_Request:
|
|
107
|
+ case RGB_Lora_Data_Report:
|
|
108
|
+ break;
|
|
109
|
+ case RGB_Location_Report:
|
|
110
|
+ 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
|
43
|
112
|
break;
|
44
|
|
-
|
|
113
|
+ case RGB_ControllerID_GET:
|
|
114
|
+ Uart1_Data_Send(data,data[bluecell_length] + 3);
|
|
115
|
+ break;
|
45
|
116
|
}
|
46
|
117
|
|
47
|
118
|
}
|
48
|
|
-uint8_t SensorID_Cnt = 0;
|
49
|
|
-uint8_t SensorID_buf[8] = {0,};
|
50
|
|
-uint16_t RGB_SensorRedLimit_Buf[9]={0,};
|
51
|
|
-uint16_t RGB_SensorGreenLimit_Buf[9]={0,};
|
52
|
|
-uint16_t RGB_SensorBlueLimit_Buf[9]={0,};
|
53
|
119
|
|
54
|
120
|
|
55
|
|
-uint16_t Sensor_red[9] = {0,};
|
56
|
|
-uint16_t Sensor_green[9] = {0,};
|
57
|
|
-uint16_t Sensor_blue[9] = {0,};
|
58
|
121
|
|
59
|
|
-uint8_t LED_Alarm[9] = {0,};
|
|
122
|
+
|
|
123
|
+
|
60
|
124
|
void RGB_Sensor_LED_Alarm_ON(uint8_t id ){
|
61
|
125
|
switch(id){
|
62
|
126
|
case 0:// 모든 LED의 전원을 ON
|
|
@@ -151,6 +215,10 @@ void RGB_Alarm_Operate(void){
|
151
|
215
|
}
|
152
|
216
|
}
|
153
|
217
|
void RGB_Alarm_Check(uint8_t* data){
|
|
218
|
+ uint16_t Sensor_red[9] = {0,};
|
|
219
|
+ uint16_t Sensor_green[9] = {0,};
|
|
220
|
+ uint16_t Sensor_blue[9] = {0,};
|
|
221
|
+
|
154
|
222
|
Sensor_red[data[bluecell_srcid]] = ((data[bluecell_red_H + 2] << 8)| data[bluecell_red_L + 2]);
|
155
|
223
|
Sensor_green[data[bluecell_srcid]] = ((data[bluecell_green_H + 2] << 8)| data[bluecell_green_L + 2]);
|
156
|
224
|
Sensor_blue[data[bluecell_srcid]] = ((data[bluecell_blue_H + 2] << 8)| data[bluecell_blue_L + 2]);
|
|
@@ -274,13 +342,13 @@ void RGB_Controller_Func(uint8_t* data){
|
274
|
342
|
break;
|
275
|
343
|
case RGB_ControllerID_SET:
|
276
|
344
|
memcpy(&Result_buf[bluecell_stx],&data[bluecell_stx],data[bluecell_length] + 3);
|
277
|
|
- Result_buf[7] = data[bluecell_srcid]; // �긽��諛⑹쓽 SRC ID�뒗 �굹�쓽 DST ID�씠�떎.
|
278
|
|
- MyControllerID = Result_buf[7] = data[7];//�긽��諛⑹쓽 DST ID �뒗 �굹�쓽 ID �씠�떎.
|
|
345
|
+ MyControllerID = data[bluecell_srcid]; // �긽��諛⑹쓽 SRC ID�뒗 �굹�쓽 DST ID�씠�떎.
|
|
346
|
+
|
279
|
347
|
break;
|
280
|
348
|
case RGB_SensorID_SET:
|
281
|
349
|
RGB_SensorIDAutoSet(1);
|
282
|
350
|
memcpy(&Result_buf[bluecell_stx],&data[bluecell_stx],data[bluecell_length] + 3);
|
283
|
|
- Result_buf[5] = STH30_CreateCrc(&Result_buf[bluecell_type],Result_buf[bluecell_length]);
|
|
351
|
+ Result_buf[5] = STH30_CreateCrc(&Result_buf[bluecell_type],Result_buf[bluecell_length]);
|
284
|
352
|
break;
|
285
|
353
|
case RGB_SensorID_SET_Success:
|
286
|
354
|
SensorID_Cnt++;
|
|
@@ -306,7 +374,18 @@ void RGB_Controller_Func(uint8_t* data){
|
306
|
374
|
NVIC_SystemReset();
|
307
|
375
|
break;
|
308
|
376
|
case RGB_ID_Allocate_Request:
|
309
|
|
-
|
|
377
|
+ break;
|
|
378
|
+ case RGB_Location_Report:
|
|
379
|
+ break;
|
|
380
|
+ case RGB_Location_Response:
|
|
381
|
+ break;
|
|
382
|
+ case RGB_ControllerID_GET:
|
|
383
|
+ Result_buf[bluecell_stx] = 0xbe;
|
|
384
|
+ Result_buf[bluecell_type] = RGB_ControllerID_GET;
|
|
385
|
+ Result_buf[bluecell_length] = 3;
|
|
386
|
+ Result_buf[bluecell_srcid] = MyControllerID;
|
|
387
|
+ Result_buf[bluecell_srcid + 1] = STH30_CreateCrc(&Result_buf[bluecell_type],Result_buf[bluecell_length]);
|
|
388
|
+ Result_buf[bluecell_srcid + 2] = 0xeb;
|
310
|
389
|
break;
|
311
|
390
|
default:
|
312
|
391
|
break;
|