wm_ble_mesh_light_model.c 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #include "wm_bt_config.h"
  2. #if (WM_MESH_INCLUDED == CFG_ON)
  3. #include "mesh/mesh.h"
  4. #include "mesh/glue.h"
  5. #include "wm_bt_util.h"
  6. #include "wm_ble_mesh.h"
  7. #include "wm_ble_mesh_light_model.h"
  8. static uint8_t gen_onoff_state;
  9. static int16_t gen_level_state;
  10. static uint32_t onoff_counter = 0;
  11. static void update_light_state(void)
  12. {
  13. TLS_BT_APPL_TRACE_DEBUG("Light state: onoff=%d lvl=0x%04x[%d]\r\n", gen_onoff_state,
  14. (u16_t)gen_level_state, onoff_counter++);
  15. if(gen_onoff_state)
  16. {
  17. tls_ble_mesh_led_update(WM_MESH_LED_FLAG_BIT_RED|WM_MESH_LED_FLAG_BIT_GREEN|WM_MESH_LED_FLAG_BIT_BLUE);
  18. }else
  19. {
  20. tls_ble_mesh_led_update(WM_MESH_LED_FLAG_BIT_OFF);
  21. }
  22. }
  23. int tls_light_model_gen_onoff_get(struct bt_mesh_model *model, u8_t *state)
  24. {
  25. *state = gen_onoff_state;
  26. return 0;
  27. }
  28. int tls_light_model_gen_onoff_set(struct bt_mesh_model *model, u8_t state)
  29. {
  30. gen_onoff_state = state;
  31. update_light_state();
  32. return 0;
  33. }
  34. int tls_light_model_gen_onoff_init(struct bt_mesh_model *model)
  35. {
  36. return 0;
  37. }
  38. int tls_light_model_gen_onoff_deinit(struct bt_mesh_model *model)
  39. {
  40. return 0;
  41. }
  42. int tls_light_model_gen_level_get(struct bt_mesh_model *model, s16_t *level)
  43. {
  44. *level = gen_level_state;
  45. return 0;
  46. }
  47. int tls_light_model_gen_level_set(struct bt_mesh_model *model, s16_t level)
  48. {
  49. gen_level_state = level;
  50. if((u16_t)gen_level_state > 0x0000) {
  51. gen_onoff_state = 1;
  52. }
  53. if((u16_t)gen_level_state == 0x0000) {
  54. gen_onoff_state = 0;
  55. }
  56. update_light_state();
  57. return 0;
  58. }
  59. int tls_light_model_gen_level_init(struct bt_mesh_model *model)
  60. {
  61. return 0;
  62. }
  63. int tls_light_model_gen_level_deinit(struct bt_mesh_model *model)
  64. {
  65. return 0;
  66. }
  67. int tls_light_model_light_lightness_get(struct bt_mesh_model *model, s16_t *lightness)
  68. {
  69. return tls_light_model_gen_level_get(model, lightness);
  70. }
  71. int tls_light_model_light_lightness_set(struct bt_mesh_model *model, s16_t lightness)
  72. {
  73. return tls_light_model_gen_level_set(model, lightness);
  74. }
  75. int tls_light_model_light_lightness_init(struct bt_mesh_model *model)
  76. {
  77. return 0;
  78. }
  79. int tls_light_model_light_lightness_deinit(struct bt_mesh_model *model)
  80. {
  81. return 0;
  82. }
  83. #endif