RGB_Sensor.c 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #include "RGB_Sensor.h"
  2. #define RGB_ControllerID_SET_Length 10
  3. #define RGB_SensorID_SET_Length 10
  4. #define RGB_SensorDataRequest_Length 7
  5. #define RGB_SensorIDAutoSetRequest_Length 7
  6. uint8_t My_RGB_ID = 0;
  7. uint8_t My_RGB_ID_Reset_RequestCnt;
  8. uint8_t* RGB_Sensor_Func(uint8_t* data){
  9. RGB_CMD_T type = data[Bluecell_Type];
  10. switch(type){
  11. case RGB_Status_Data_Request:
  12. if(My_RGB_ID != 0 && data[bluecell_srcid + 1] == My_RGB_ID){
  13. HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_SET);
  14. My_RGB_ID_Reset_RequestCnt = 0;
  15. printf("MY RGB Status Send");
  16. for(uint8_t i = 0; i<15; i++)
  17. printf("%02x ",RGB_Data[i]);
  18. printf("\r\n");
  19. Uart2_Data_Send(&RGB_Data[0],15);
  20. HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_RESET);
  21. }else if(My_RGB_ID == 0 && data[bluecell_srcid + 1] == My_RGB_ID){
  22. printf("MY ID IS NOT SET : %02x \r\n",My_RGB_ID);
  23. HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_SET);
  24. data[bluecell_stx] = 0xBE; //0
  25. data[bluecell_type] = RGB_SensorID_SET;//1
  26. data[bluecell_length] = 4;//2 // 4 byte
  27. data[bluecell_srcid + 1] = data[bluecell_srcid + 0];
  28. data[bluecell_srcid + 0] = My_RGB_ID;
  29. data[bluecell_srcid + 2] = STH30_CreateCrc(&data[bluecell_type],data[bluecell_length]);
  30. data[bluecell_srcid + 3] = 0xEB;
  31. Uart2_Data_Send(&data[bluecell_stx],data[bluecell_length] + 3);
  32. HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_RESET);
  33. }else{
  34. My_RGB_ID_Reset_RequestCnt++;
  35. if(My_RGB_ID_Reset_RequestCnt >= 17){
  36. My_RGB_ID = 0;
  37. My_RGB_ID_Reset_RequestCnt = 0;
  38. }
  39. printf("NO MY ID IS %02x \r\n",My_RGB_ID);
  40. }
  41. break;
  42. case RGB_ControllerID_SET: break;
  43. case RGB_SensorID_SET:
  44. if(My_RGB_ID == 0 || My_RGB_ID == data[bluecell_srcid + 1]){
  45. HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_SET);
  46. data[bluecell_type] = RGB_SensorID_SET_Success;
  47. data[bluecell_srcid] = My_RGB_ID = data[bluecell_srcid + 1];
  48. data[5] = STH30_CreateCrc(&data[bluecell_type],data[bluecell_length]);
  49. printf("My ID SET Success %02x \r\n",My_RGB_ID);
  50. Uart2_Data_Send(&data[bluecell_stx],RGB_SensorIDAutoSetRequest_Length);
  51. HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_RESET);
  52. }else{
  53. printf("My ID aleady exist %02x \r\n",My_RGB_ID);
  54. }
  55. break;
  56. case RGB_Sensor_Check:
  57. if(My_RGB_ID == data[bluecell_srcid + 1]){
  58. HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_SET);
  59. data[bluecell_stx] = 0xBE; //0
  60. data[bluecell_type] = type + 1;//1
  61. data[bluecell_length] = 4;//2 // 4 byte
  62. data[bluecell_srcid + 1] = data[bluecell_srcid + 0];
  63. data[bluecell_srcid + 0] = My_RGB_ID;
  64. data[bluecell_srcid + 2] = STH30_CreateCrc(&data[bluecell_type],data[bluecell_length]);
  65. data[bluecell_srcid + 3] = 0xEB;
  66. Uart2_Data_Send(&data[bluecell_stx],data[bluecell_length] + 3);
  67. HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_RESET);
  68. }
  69. break;
  70. default:break;
  71. }
  72. return data;
  73. }
  74. void RGB_Value_Func(void){
  75. }