From cd21bcbe7adf6b4105a7f46d5223ef787b8bb194 Mon Sep 17 00:00:00 2001 From: sivar2311 Date: Wed, 4 Oct 2023 09:38:38 +0200 Subject: [PATCH] Version 3.0.0 --- docs/_air_quality_sensor_8h_source.html | 148 +- docs/_brightness_controller_8h_source.html | 251 ++- docs/_channel_controller_8h_source.html | 309 +-- docs/_color_controller_8h_source.html | 235 +- ...olor_temperature_controller_8h_source.html | 297 +-- docs/_contact_sensor_8h_source.html | 141 +- docs/_door_controller_8h_source.html | 209 +- docs/_doorbell_8h_source.html | 139 +- docs/_equalizer_controller_8h_source.html | 351 +-- docs/_event_limiter_8h_source.html | 157 +- docs/_input_controller_8h_source.html | 215 +- docs/_keypad_controller_8h_source.html | 173 +- docs/_lock_controller_8h_source.html | 221 +- docs/_media_controller_8h_source.html | 215 +- docs/_mode_controller_8h_source.html | 297 +-- docs/_motion_sensor_8h_source.html | 141 +- docs/_mute_controller_8h_source.html | 205 +- docs/_percentage_controller_8h_source.html | 234 +- docs/_power_level_controller_8h_source.html | 253 ++- docs/_power_sensor_8h_source.html | 207 +- docs/_power_state_controller_8h_source.html | 217 +- docs/_push_notification_8h_source.html | 141 +- docs/_range_controller_8h_source.html | 540 ++--- docs/_setting_controller_8h_source.html | 168 +- docs/_sinric_pro_8h_source.html | 1036 +++++---- ...nric_pro_air_quality_sensor_8h_source.html | 122 +- docs/_sinric_pro_blinds_8h_source.html | 126 +- docs/_sinric_pro_camera_8h_source.html | 120 +- docs/_sinric_pro_config_8h_source.html | 144 +- docs/_sinric_pro_contactsensor_8h_source.html | 122 +- docs/_sinric_pro_debug_8h_source.html | 92 +- docs/_sinric_pro_device_8h_source.html | 269 +-- ...sinric_pro_device_interface_8h_source.html | 86 +- docs/_sinric_pro_dim_switch_8h_source.html | 128 +- docs/_sinric_pro_doorbell_8h_source.html | 126 +- docs/_sinric_pro_fan_8h_source.html | 128 +- docs/_sinric_pro_fan_u_s_8h_source.html | 128 +- docs/_sinric_pro_garage_door_8h_source.html | 120 +- docs/_sinric_pro_interface_8h_source.html | 98 +- docs/_sinric_pro_light_8h_source.html | 142 +- docs/_sinric_pro_lock_8h_source.html | 120 +- docs/_sinric_pro_messageid_8h_source.html | 120 +- docs/_sinric_pro_motionsensor_8h_source.html | 124 +- docs/_sinric_pro_namespace_8h_source.html | 72 +- docs/_sinric_pro_power_sensor_8h_source.html | 124 +- docs/_sinric_pro_queue_8h_source.html | 152 +- docs/_sinric_pro_request_8h_source.html | 86 +- docs/_sinric_pro_signature_8h_source.html | 84 +- docs/_sinric_pro_speaker_8h_source.html | 168 +- docs/_sinric_pro_strings_8h_source.html | 116 +- docs/_sinric_pro_switch_8h_source.html | 120 +- docs/_sinric_pro_t_v_8h_source.html | 160 +- ...inric_pro_temperaturesensor_8h_source.html | 124 +- docs/_sinric_pro_thermostat_8h_source.html | 136 +- docs/_sinric_pro_u_d_p_8h_source.html | 204 +- docs/_sinric_pro_version_8h_source.html | 72 +- docs/_sinric_pro_websocket_8h_source.html | 436 ++-- docs/_sinric_pro_window_a_c_8h_source.html | 134 +- docs/_temperature_sensor_8h_source.html | 141 +- docs/_thermostat_controller_8h_source.html | 347 +-- docs/_timestamp_8h_source.html | 126 ++ docs/_toggle_controller_8h_source.html | 215 +- docs/_volume_controller_8h_source.html | 249 +- docs/annotated.html | 137 +- docs/annotated_dup.js | 96 +- docs/bc_sd.png | Bin 0 -> 635 bytes ...__0__0_1_1_air_quality_sensor-members.html | 108 + ...p_r_o__3__0__0_1_1_air_quality_sensor.html | 197 ++ ...c_p_r_o__3__0__0_1_1_air_quality_sensor.js | 4 + ...1_1_air_quality_sensor__inherit__graph.map | 7 + ...1_1_air_quality_sensor__inherit__graph.md5 | 1 + ...1_1_air_quality_sensor__inherit__graph.png | Bin 0 -> 3656 bytes ...__0_1_1_brightness_controller-members.html | 110 + ..._o__3__0__0_1_1_brightness_controller.html | 249 ++ ..._r_o__3__0__0_1_1_brightness_controller.js | 6 + ..._brightness_controller__inherit__graph.map | 7 + ..._brightness_controller__inherit__graph.md5 | 1 + ..._brightness_controller__inherit__graph.png | Bin 0 -> 3110 bytes ...__0__0_1_1_channel_controller-members.html | 111 + ...p_r_o__3__0__0_1_1_channel_controller.html | 282 +++ ...c_p_r_o__3__0__0_1_1_channel_controller.js | 7 + ...1_1_channel_controller__inherit__graph.map | 7 + ...1_1_channel_controller__inherit__graph.md5 | 1 + ...1_1_channel_controller__inherit__graph.png | Bin 0 -> 2982 bytes ..._3__0__0_1_1_color_controller-members.html | 109 + ...c_p_r_o__3__0__0_1_1_color_controller.html | 230 ++ ...i_c_p_r_o__3__0__0_1_1_color_controller.js | 5 + ...0_1_1_color_controller__inherit__graph.map | 7 + ...0_1_1_color_controller__inherit__graph.md5 | 1 + ...0_1_1_color_controller__inherit__graph.png | Bin 0 -> 2946 bytes ..._color_temperature_controller-members.html | 111 + ...0__0_1_1_color_temperature_controller.html | 287 +++ ...__0__0_1_1_color_temperature_controller.js | 7 + ...temperature_controller__inherit__graph.map | 7 + ...temperature_controller__inherit__graph.md5 | 1 + ...temperature_controller__inherit__graph.png | Bin 0 -> 3228 bytes ...o__3__0__0_1_1_contact_sensor-members.html | 108 + ...i_c_p_r_o__3__0__0_1_1_contact_sensor.html | 179 ++ ...r_i_c_p_r_o__3__0__0_1_1_contact_sensor.js | 4 + ...__0_1_1_contact_sensor__inherit__graph.map | 7 + ...__0_1_1_contact_sensor__inherit__graph.md5 | 1 + ...__0_1_1_contact_sensor__inherit__graph.png | Bin 0 -> 3363 bytes ...__3__0__0_1_1_door_controller-members.html | 109 + ..._c_p_r_o__3__0__0_1_1_door_controller.html | 217 ++ ..._i_c_p_r_o__3__0__0_1_1_door_controller.js | 5 + ..._0_1_1_door_controller__inherit__graph.map | 7 + ..._0_1_1_door_controller__inherit__graph.md5 | 1 + ..._0_1_1_door_controller__inherit__graph.png | Bin 0 -> 3377 bytes ...c_p_r_o__3__0__0_1_1_doorbell-members.html | 108 + ...i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.html | 172 ++ ...s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.js | 4 + ...__3__0__0_1_1_doorbell__inherit__graph.map | 7 + ...__3__0__0_1_1_doorbell__inherit__graph.md5 | 1 + ...__3__0__0_1_1_doorbell__inherit__graph.png | Bin 0 -> 2892 bytes ...0__0_1_1_equalizer_controller-members.html | 111 + ...r_o__3__0__0_1_1_equalizer_controller.html | 290 +++ ...p_r_o__3__0__0_1_1_equalizer_controller.js | 7 + ...1_equalizer_controller__inherit__graph.map | 7 + ...1_equalizer_controller__inherit__graph.md5 | 1 + ...1_equalizer_controller__inherit__graph.png | Bin 0 -> 3271 bytes ..._3__0__0_1_1_input_controller-members.html | 109 + ...c_p_r_o__3__0__0_1_1_input_controller.html | 221 ++ ...i_c_p_r_o__3__0__0_1_1_input_controller.js | 5 + ...0_1_1_input_controller__inherit__graph.map | 11 + ...0_1_1_input_controller__inherit__graph.md5 | 1 + ...0_1_1_input_controller__inherit__graph.png | Bin 0 -> 5626 bytes ...3__0__0_1_1_keypad_controller-members.html | 108 + ..._p_r_o__3__0__0_1_1_keypad_controller.html | 154 ++ ..._c_p_r_o__3__0__0_1_1_keypad_controller.js | 4 + ...__3__0__0_1_1_lock_controller-members.html | 109 + ..._c_p_r_o__3__0__0_1_1_lock_controller.html | 217 ++ ..._i_c_p_r_o__3__0__0_1_1_lock_controller.js | 5 + ..._0_1_1_lock_controller__inherit__graph.map | 7 + ..._0_1_1_lock_controller__inherit__graph.md5 | 1 + ..._0_1_1_lock_controller__inherit__graph.png | Bin 0 -> 2882 bytes ..._3__0__0_1_1_media_controller-members.html | 109 + ...c_p_r_o__3__0__0_1_1_media_controller.html | 221 ++ ...i_c_p_r_o__3__0__0_1_1_media_controller.js | 5 + ...0_1_1_media_controller__inherit__graph.map | 11 + ...0_1_1_media_controller__inherit__graph.md5 | 1 + ...0_1_1_media_controller__inherit__graph.png | Bin 0 -> 5830 bytes ...__3__0__0_1_1_mode_controller-members.html | 111 + ..._c_p_r_o__3__0__0_1_1_mode_controller.html | 319 +++ ..._i_c_p_r_o__3__0__0_1_1_mode_controller.js | 7 + ..._0_1_1_mode_controller__inherit__graph.map | 7 + ..._0_1_1_mode_controller__inherit__graph.md5 | 1 + ..._0_1_1_mode_controller__inherit__graph.png | Bin 0 -> 3175 bytes ..._o__3__0__0_1_1_motion_sensor-members.html | 108 + ..._i_c_p_r_o__3__0__0_1_1_motion_sensor.html | 184 ++ ..._r_i_c_p_r_o__3__0__0_1_1_motion_sensor.js | 4 + ...0__0_1_1_motion_sensor__inherit__graph.map | 7 + ...0__0_1_1_motion_sensor__inherit__graph.md5 | 1 + ...0__0_1_1_motion_sensor__inherit__graph.png | Bin 0 -> 3122 bytes ...__3__0__0_1_1_mute_controller-members.html | 109 + ..._c_p_r_o__3__0__0_1_1_mute_controller.html | 221 ++ ..._i_c_p_r_o__3__0__0_1_1_mute_controller.js | 5 + ..._0_1_1_mute_controller__inherit__graph.map | 11 + ..._0_1_1_mute_controller__inherit__graph.md5 | 1 + ..._0_1_1_mute_controller__inherit__graph.png | Bin 0 -> 5618 bytes ...__0_1_1_percentage_controller-members.html | 110 + ..._o__3__0__0_1_1_percentage_controller.html | 237 ++ ..._r_o__3__0__0_1_1_percentage_controller.js | 6 + ..._0_1_1_power_level_controller-members.html | 110 + ...o__3__0__0_1_1_power_level_controller.html | 251 +++ ...r_o__3__0__0_1_1_power_level_controller.js | 6 + ...power_level_controller__inherit__graph.map | 11 + ...power_level_controller__inherit__graph.md5 | 1 + ...power_level_controller__inherit__graph.png | Bin 0 -> 5496 bytes ...r_o__3__0__0_1_1_power_sensor-members.html | 108 + ...r_i_c_p_r_o__3__0__0_1_1_power_sensor.html | 219 ++ ...n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.js | 4 + ..._0__0_1_1_power_sensor__inherit__graph.map | 7 + ..._0__0_1_1_power_sensor__inherit__graph.md5 | 1 + ..._0__0_1_1_power_sensor__inherit__graph.png | Bin 0 -> 3174 bytes ..._0_1_1_power_state_controller-members.html | 109 + ...o__3__0__0_1_1_power_state_controller.html | 261 +++ ...r_o__3__0__0_1_1_power_state_controller.js | 5 + ...power_state_controller__inherit__graph.map | 51 + ...power_state_controller__inherit__graph.md5 | 1 + ...power_state_controller__inherit__graph.png | Bin 0 -> 51228 bytes ...3__0__0_1_1_push_notification-members.html | 108 + ..._p_r_o__3__0__0_1_1_push_notification.html | 244 ++ ..._c_p_r_o__3__0__0_1_1_push_notification.js | 4 + ..._1_1_push_notification__inherit__graph.map | 79 + ..._1_1_push_notification__inherit__graph.md5 | 1 + ..._1_1_push_notification__inherit__graph.png | Bin 0 -> 89488 bytes ..._3__0__0_1_1_range_controller-members.html | 112 + ...c_p_r_o__3__0__0_1_1_range_controller.html | 355 +++ ...i_c_p_r_o__3__0__0_1_1_range_controller.js | 8 + ...0_1_1_range_controller__inherit__graph.map | 15 + ...0_1_1_range_controller__inherit__graph.md5 | 1 + ...0_1_1_range_controller__inherit__graph.png | Bin 0 -> 8995 bytes ...sinric_pro_air_quality_sensor-members.html | 109 + ...__0_1_1_sinric_pro_air_quality_sensor.html | 253 +++ ..._0__0_1_1_sinric_pro_air_quality_sensor.js | 5 + ...pro_air_quality_sensor__inherit__graph.map | 13 + ...pro_air_quality_sensor__inherit__graph.md5 | 1 + ...pro_air_quality_sensor__inherit__graph.png | Bin 0 -> 7980 bytes ...3__0__0_1_1_sinric_pro_blinds-members.html | 115 + ..._p_r_o__3__0__0_1_1_sinric_pro_blinds.html | 532 +++++ ..._c_p_r_o__3__0__0_1_1_sinric_pro_blinds.js | 11 + ..._1_1_sinric_pro_blinds__inherit__graph.map | 17 + ..._1_1_sinric_pro_blinds__inherit__graph.md5 | 1 + ..._1_1_sinric_pro_blinds__inherit__graph.png | Bin 0 -> 11752 bytes ...3__0__0_1_1_sinric_pro_camera-members.html | 110 + ..._p_r_o__3__0__0_1_1_sinric_pro_camera.html | 279 +++ ..._c_p_r_o__3__0__0_1_1_sinric_pro_camera.js | 6 + ..._1_1_sinric_pro_camera__inherit__graph.map | 13 + ..._1_1_sinric_pro_camera__inherit__graph.md5 | 1 + ..._1_1_sinric_pro_camera__inherit__graph.png | Bin 0 -> 7377 bytes ..._3__0__0_1_1_sinric_pro_class-members.html | 114 + ...c_p_r_o__3__0__0_1_1_sinric_pro_class.html | 386 ++++ ...i_c_p_r_o__3__0__0_1_1_sinric_pro_class.js | 10 + ..._1_1_sinric_pro_contactsensor-members.html | 109 + ..._3__0__0_1_1_sinric_pro_contactsensor.html | 235 ++ ...o__3__0__0_1_1_sinric_pro_contactsensor.js | 5 + ...nric_pro_contactsensor__inherit__graph.map | 13 + ...nric_pro_contactsensor__inherit__graph.md5 | 1 + ...nric_pro_contactsensor__inherit__graph.png | Bin 0 -> 7950 bytes ...3__0__0_1_1_sinric_pro_device-members.html | 106 + ..._p_r_o__3__0__0_1_1_sinric_pro_device.html | 162 ++ ..._1_1_sinric_pro_device__inherit__graph.map | 41 + ..._1_1_sinric_pro_device__inherit__graph.md5 | 1 + ..._1_1_sinric_pro_device__inherit__graph.png | Bin 0 -> 59937 bytes ...__0_1_1_sinric_pro_dim_switch-members.html | 113 + ..._o__3__0__0_1_1_sinric_pro_dim_switch.html | 415 ++++ ..._r_o__3__0__0_1_1_sinric_pro_dim_switch.js | 9 + ..._sinric_pro_dim_switch__inherit__graph.map | 17 + ..._sinric_pro_dim_switch__inherit__graph.md5 | 1 + ..._sinric_pro_dim_switch__inherit__graph.png | Bin 0 -> 12074 bytes ..._0__0_1_1_sinric_pro_doorbell-members.html | 111 + ..._r_o__3__0__0_1_1_sinric_pro_doorbell.html | 328 +++ ..._p_r_o__3__0__0_1_1_sinric_pro_doorbell.js | 7 + ..._1_sinric_pro_doorbell__inherit__graph.map | 17 + ..._1_sinric_pro_doorbell__inherit__graph.md5 | 1 + ..._1_sinric_pro_doorbell__inherit__graph.png | Bin 0 -> 11754 bytes ...o__3__0__0_1_1_sinric_pro_fan-members.html | 113 + ...i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html | 415 ++++ ...r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.js | 9 + ...__0_1_1_sinric_pro_fan__inherit__graph.map | 17 + ...__0_1_1_sinric_pro_fan__inherit__graph.md5 | 1 + ...__0_1_1_sinric_pro_fan__inherit__graph.png | Bin 0 -> 11256 bytes ...__0__0_1_1_sinric_pro_fan_u_s-members.html | 115 + ...p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html | 527 +++++ ...c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.js | 11 + ...1_1_sinric_pro_fan_u_s__inherit__graph.map | 17 + ...1_1_sinric_pro_fan_u_s__inherit__graph.md5 | 1 + ...1_1_sinric_pro_fan_u_s__inherit__graph.png | Bin 0 -> 11744 bytes ..._0_1_1_sinric_pro_garage_door-members.html | 110 + ...o__3__0__0_1_1_sinric_pro_garage_door.html | 282 +++ ...r_o__3__0__0_1_1_sinric_pro_garage_door.js | 6 + ...sinric_pro_garage_door__inherit__graph.map | 13 + ...sinric_pro_garage_door__inherit__graph.md5 | 1 + ...sinric_pro_garage_door__inherit__graph.png | Bin 0 -> 7684 bytes ..._3__0__0_1_1_sinric_pro_light-members.html | 119 + ...c_p_r_o__3__0__0_1_1_sinric_pro_light.html | 718 ++++++ ...i_c_p_r_o__3__0__0_1_1_sinric_pro_light.js | 15 + ...0_1_1_sinric_pro_light__inherit__graph.map | 25 + ...0_1_1_sinric_pro_light__inherit__graph.md5 | 1 + ...0_1_1_sinric_pro_light__inherit__graph.png | Bin 0 -> 21209 bytes ...__3__0__0_1_1_sinric_pro_lock-members.html | 110 + ..._c_p_r_o__3__0__0_1_1_sinric_pro_lock.html | 283 +++ ..._i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.js | 6 + ..._0_1_1_sinric_pro_lock__inherit__graph.map | 13 + ..._0_1_1_sinric_pro_lock__inherit__graph.md5 | 1 + ..._0_1_1_sinric_pro_lock__inherit__graph.png | Bin 0 -> 7669 bytes ...0_1_1_sinric_pro_motionsensor-members.html | 109 + ...__3__0__0_1_1_sinric_pro_motionsensor.html | 240 ++ ..._o__3__0__0_1_1_sinric_pro_motionsensor.js | 5 + ...inric_pro_motionsensor__inherit__graph.map | 13 + ...inric_pro_motionsensor__inherit__graph.md5 | 1 + ...inric_pro_motionsensor__inherit__graph.png | Bin 0 -> 7954 bytes ...0_1_1_sinric_pro_power_sensor-members.html | 109 + ...__3__0__0_1_1_sinric_pro_power_sensor.html | 275 +++ ..._o__3__0__0_1_1_sinric_pro_power_sensor.js | 5 + ...inric_pro_power_sensor__inherit__graph.map | 13 + ...inric_pro_power_sensor__inherit__graph.md5 | 1 + ...inric_pro_power_sensor__inherit__graph.png | Bin 0 -> 7483 bytes ...__0__0_1_1_sinric_pro_speaker-members.html | 127 ++ ...p_r_o__3__0__0_1_1_sinric_pro_speaker.html | 1133 ++++++++++ ...c_p_r_o__3__0__0_1_1_sinric_pro_speaker.js | 23 + ...1_1_sinric_pro_speaker__inherit__graph.map | 37 + ...1_1_sinric_pro_speaker__inherit__graph.md5 | 1 + ...1_1_sinric_pro_speaker__inherit__graph.png | Bin 0 -> 37058 bytes ...3__0__0_1_1_sinric_pro_switch-members.html | 110 + ..._p_r_o__3__0__0_1_1_sinric_pro_switch.html | 279 +++ ..._c_p_r_o__3__0__0_1_1_sinric_pro_switch.js | 6 + ..._1_1_sinric_pro_switch__inherit__graph.map | 13 + ..._1_1_sinric_pro_switch__inherit__graph.md5 | 1 + ..._1_1_sinric_pro_switch__inherit__graph.png | Bin 0 -> 7123 bytes ...o__3__0__0_1_1_sinric_pro_t_v-members.html | 123 + ...i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html | 909 ++++++++ ...r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.js | 19 + ...__0_1_1_sinric_pro_t_v__inherit__graph.map | 33 + ...__0_1_1_sinric_pro_t_v__inherit__graph.md5 | 1 + ...__0_1_1_sinric_pro_t_v__inherit__graph.png | Bin 0 -> 28389 bytes ..._sinric_pro_temperaturesensor-members.html | 109 + ...0__0_1_1_sinric_pro_temperaturesensor.html | 246 ++ ...__0__0_1_1_sinric_pro_temperaturesensor.js | 5 + ..._pro_temperaturesensor__inherit__graph.map | 13 + ..._pro_temperaturesensor__inherit__graph.md5 | 1 + ..._pro_temperaturesensor__inherit__graph.png | Bin 0 -> 8244 bytes ...__0_1_1_sinric_pro_thermostat-members.html | 116 + ..._o__3__0__0_1_1_sinric_pro_thermostat.html | 585 +++++ ..._r_o__3__0__0_1_1_sinric_pro_thermostat.js | 12 + ..._sinric_pro_thermostat__inherit__graph.map | 21 + ..._sinric_pro_thermostat__inherit__graph.md5 | 1 + ..._sinric_pro_thermostat__inherit__graph.png | Bin 0 -> 16018 bytes ...__0_1_1_sinric_pro_window_a_c-members.html | 120 + ..._o__3__0__0_1_1_sinric_pro_window_a_c.html | 767 +++++++ ..._r_o__3__0__0_1_1_sinric_pro_window_a_c.js | 16 + ..._sinric_pro_window_a_c__inherit__graph.map | 21 + ..._sinric_pro_window_a_c__inherit__graph.md5 | 1 + ..._sinric_pro_window_a_c__inherit__graph.png | Bin 0 -> 16451 bytes ...__0__0_1_1_temperature_sensor-members.html | 108 + ...p_r_o__3__0__0_1_1_temperature_sensor.html | 194 ++ ...c_p_r_o__3__0__0_1_1_temperature_sensor.js | 4 + ...1_1_temperature_sensor__inherit__graph.map | 11 + ...1_1_temperature_sensor__inherit__graph.md5 | 1 + ...1_1_temperature_sensor__inherit__graph.png | Bin 0 -> 7588 bytes ...__0_1_1_thermostat_controller-members.html | 112 + ..._o__3__0__0_1_1_thermostat_controller.html | 336 +++ ..._r_o__3__0__0_1_1_thermostat_controller.js | 8 + ..._thermostat_controller__inherit__graph.map | 11 + ..._thermostat_controller__inherit__graph.md5 | 1 + ..._thermostat_controller__inherit__graph.png | Bin 0 -> 6738 bytes ...3__0__0_1_1_toggle_controller-members.html | 109 + ..._p_r_o__3__0__0_1_1_toggle_controller.html | 223 ++ ..._c_p_r_o__3__0__0_1_1_toggle_controller.js | 5 + ...3__0__0_1_1_volume_controller-members.html | 110 + ..._p_r_o__3__0__0_1_1_volume_controller.html | 253 +++ ..._c_p_r_o__3__0__0_1_1_volume_controller.js | 6 + ..._1_1_volume_controller__inherit__graph.map | 11 + ..._1_1_volume_controller__inherit__graph.md5 | 1 + ..._1_1_volume_controller__inherit__graph.png | Bin 0 -> 5530 bytes docs/classes.html | 97 +- .../dir_7df6307e8ce44a8864ff8c0ace2ba173.html | 132 +- ...r_7df6307e8ce44a8864ff8c0ace2ba173_dep.map | 5 + ...r_7df6307e8ce44a8864ff8c0ace2ba173_dep.md5 | 1 + ...r_7df6307e8ce44a8864ff8c0ace2ba173_dep.png | Bin 0 -> 1664 bytes .../dir_92f480b6bb910a384a17c290a6146620.html | 47 +- .../dir_aa16df8496461ec3bcf35908592889b5.html | 110 +- ...r_aa16df8496461ec3bcf35908592889b5_dep.map | 4 + ...r_aa16df8496461ec3bcf35908592889b5_dep.md5 | 1 + ...r_aa16df8496461ec3bcf35908592889b5_dep.png | Bin 0 -> 1020 bytes docs/doc.svg | 12 + docs/docd.svg | 12 + docs/doxygen.css | 1082 +++++---- docs/doxygen.svg | 4 +- docs/dynsections.js | 71 + docs/folderclosed.svg | 11 + docs/folderclosedd.svg | 11 + docs/folderopen.svg | 17 + docs/folderopend.svg | 12 + docs/functions.html | 310 +-- docs/functions_func.html | 312 +-- docs/graph_legend.html | 43 +- docs/graph_legend.md5 | 2 +- docs/graph_legend.png | Bin 13384 -> 13473 bytes docs/group___capabilities.html | 143 +- docs/group___capabilities.js | 218 +- docs/group___devices.html | 119 +- docs/group___devices.js | 332 ++- docs/group___sinric_pro.html | 47 +- docs/group___sinric_pro.js | 16 +- docs/hierarchy.html | 389 ++-- docs/hierarchy.js | 353 ++- docs/index.html | 120 +- docs/index.js | 24 + docs/inherit_graph_0.map | 247 +- docs/inherit_graph_0.md5 | 2 +- docs/inherit_graph_0.png | Bin 289631 -> 247280 bytes docs/inherit_graph_1.map | 2 +- docs/inherit_graph_1.md5 | 2 +- docs/inherit_graph_1.png | Bin 602 -> 610 bytes docs/inherit_graph_10.map | 2 +- docs/inherit_graph_10.md5 | 2 +- docs/inherit_graph_10.png | Bin 534 -> 529 bytes docs/inherit_graph_11.map | 2 +- docs/inherit_graph_11.md5 | 2 +- docs/inherit_graph_11.png | Bin 600 -> 598 bytes docs/inherit_graph_12.map | 2 +- docs/inherit_graph_12.md5 | 2 +- docs/inherit_graph_12.png | Bin 535 -> 534 bytes docs/inherit_graph_13.map | 2 +- docs/inherit_graph_13.md5 | 2 +- docs/inherit_graph_13.png | Bin 553 -> 564 bytes docs/inherit_graph_14.map | 2 +- docs/inherit_graph_14.md5 | 2 +- docs/inherit_graph_14.png | Bin 548 -> 546 bytes docs/inherit_graph_15.map | 2 +- docs/inherit_graph_15.md5 | 2 +- docs/inherit_graph_15.png | Bin 501 -> 523 bytes docs/inherit_graph_16.map | 2 +- docs/inherit_graph_16.md5 | 2 +- docs/inherit_graph_16.png | Bin 515 -> 539 bytes docs/inherit_graph_17.map | 2 +- docs/inherit_graph_17.md5 | 2 +- docs/inherit_graph_17.png | Bin 611 -> 621 bytes docs/inherit_graph_18.map | 2 +- docs/inherit_graph_18.md5 | 2 +- docs/inherit_graph_18.png | Bin 574 -> 603 bytes docs/inherit_graph_19.map | 2 +- docs/inherit_graph_19.md5 | 2 +- docs/inherit_graph_19.png | Bin 528 -> 539 bytes docs/inherit_graph_2.map | 2 +- docs/inherit_graph_2.md5 | 2 +- docs/inherit_graph_2.png | Bin 610 -> 620 bytes docs/inherit_graph_20.map | 2 +- docs/inherit_graph_20.md5 | 2 +- docs/inherit_graph_20.png | Bin 624 -> 633 bytes docs/inherit_graph_21.map | 2 +- docs/inherit_graph_21.md5 | 2 +- docs/inherit_graph_21.png | Bin 558 -> 564 bytes docs/inherit_graph_22.map | 2 +- docs/inherit_graph_22.md5 | 2 +- docs/inherit_graph_22.png | Bin 551 -> 583 bytes docs/inherit_graph_23.map | 2 +- docs/inherit_graph_23.md5 | 2 +- docs/inherit_graph_23.png | Bin 493 -> 495 bytes docs/inherit_graph_24.map | 2 +- docs/inherit_graph_24.md5 | 2 +- docs/inherit_graph_24.png | Bin 583 -> 596 bytes docs/inherit_graph_25.map | 2 +- docs/inherit_graph_25.md5 | 2 +- docs/inherit_graph_25.png | Bin 586 -> 609 bytes docs/inherit_graph_26.map | 2 +- docs/inherit_graph_26.md5 | 2 +- docs/inherit_graph_26.png | Bin 563 -> 575 bytes docs/inherit_graph_27.map | 2 +- docs/inherit_graph_27.md5 | 2 +- docs/inherit_graph_27.png | Bin 562 -> 560 bytes docs/inherit_graph_3.map | 2 +- docs/inherit_graph_3.md5 | 2 +- docs/inherit_graph_3.png | Bin 558 -> 569 bytes docs/inherit_graph_4.map | 2 +- docs/inherit_graph_4.md5 | 2 +- docs/inherit_graph_4.png | Bin 523 -> 527 bytes docs/inherit_graph_5.map | 2 +- docs/inherit_graph_5.md5 | 2 +- docs/inherit_graph_5.png | Bin 661 -> 662 bytes docs/inherit_graph_6.map | 2 +- docs/inherit_graph_6.md5 | 2 +- docs/inherit_graph_6.png | Bin 551 -> 559 bytes docs/inherit_graph_7.map | 2 +- docs/inherit_graph_7.md5 | 2 +- docs/inherit_graph_7.png | Bin 454 -> 460 bytes docs/inherit_graph_8.map | 2 +- docs/inherit_graph_8.md5 | 2 +- docs/inherit_graph_8.png | Bin 528 -> 538 bytes docs/inherit_graph_9.map | 2 +- docs/inherit_graph_9.md5 | 2 +- docs/inherit_graph_9.png | Bin 606 -> 608 bytes docs/inherits.html | 342 +-- docs/jquery.js | 11 +- docs/menu.js | 97 +- docs/menudata.js | 2 +- docs/minus.svg | 8 + docs/minusd.svg | 8 + .../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html | 1997 +++++++++++++++++ docs/namespacemembers.html | 212 +- docs/namespacemembers_type.html | 216 +- docs/nav_fd.png | Bin 0 -> 169 bytes docs/nav_hd.png | Bin 0 -> 114 bytes docs/navtree.css | 23 +- docs/navtree.js | 37 +- docs/navtreedata.js | 28 +- docs/navtreeindex0.js | 498 ++-- docs/navtreeindex1.js | 14 +- docs/plus.svg | 9 + docs/plusd.svg | 9 + docs/resize.js | 97 +- docs/search/all_0.js | 25 +- docs/search/all_1.js | 8 +- docs/search/all_10.js | 68 +- docs/search/all_11.js | 14 + docs/search/all_12.js | 5 + docs/search/all_13.js | 7 + docs/search/all_14.js | 4 + docs/search/all_2.js | 33 +- docs/search/all_3.js | 23 +- docs/search/all_4.js | 10 +- docs/search/all_5.js | 9 +- docs/search/all_6.js | 7 +- docs/search/all_7.js | 9 +- docs/search/all_8.js | 10 +- docs/search/all_9.js | 5 +- docs/search/all_a.js | 19 +- docs/search/all_b.js | 48 +- docs/search/all_c.js | 47 +- docs/search/all_d.js | 41 +- docs/search/all_e.js | 102 +- docs/search/all_f.js | 17 +- docs/search/classes_0.js | 4 +- docs/search/classes_1.js | 4 +- docs/search/classes_2.js | 16 +- docs/search/classes_3.js | 8 +- docs/search/classes_4.js | 4 +- docs/search/classes_5.js | 6 +- docs/search/classes_6.js | 2 +- docs/search/classes_7.js | 4 +- docs/search/classes_8.js | 20 +- docs/search/classes_9.js | 83 +- docs/search/classes_a.js | 8 +- docs/search/classes_b.js | 42 +- docs/search/classes_c.js | 14 +- docs/search/classes_d.js | 6 +- docs/search/close.svg | 19 +- docs/search/functions_0.js | 2 +- docs/search/functions_1.js | 2 +- docs/search/functions_2.js | 2 +- docs/search/functions_3.js | 70 +- docs/search/functions_4.js | 2 +- docs/search/functions_5.js | 52 +- docs/search/groups_0.js | 2 +- docs/search/groups_1.js | 2 +- docs/search/groups_2.js | 2 +- docs/search/mag.svg | 24 + docs/search/mag_d.svg | 24 + docs/search/mag_sel.svg | 53 +- docs/search/mag_seld.svg | 31 + docs/search/namespaces_0.js | 2 +- docs/search/pages_0.js | 3 +- docs/search/pages_1.js | 4 + docs/search/pages_2.js | 4 + docs/search/search.css | 122 +- docs/search/search.js | 188 +- docs/search/searchdata.js | 4 +- docs/search/typedefs_0.js | 14 +- docs/search/typedefs_1.js | 2 +- docs/search/typedefs_2.js | 10 +- docs/search/typedefs_3.js | 6 +- docs/search/typedefs_4.js | 10 +- docs/search/typedefs_5.js | 2 +- docs/search/typedefs_6.js | 2 +- docs/search/typedefs_7.js | 2 +- docs/search/typedefs_8.js | 6 +- docs/search/typedefs_9.js | 2 +- docs/search/typedefs_a.js | 2 +- docs/search/typedefs_b.js | 14 +- docs/search/typedefs_c.js | 2 +- docs/splitbard.png | Bin 0 -> 282 bytes docs/tab_ad.png | Bin 0 -> 135 bytes docs/tab_bd.png | Bin 0 -> 173 bytes docs/tab_hd.png | Bin 0 -> 180 bytes docs/tab_sd.png | Bin 0 -> 188 bytes docs/tabs.css | 2 +- docs/topics.html | 111 + docs/topics.js | 6 + 549 files changed, 34699 insertions(+), 8926 deletions(-) create mode 100644 docs/_timestamp_8h_source.html create mode 100644 docs/bc_sd.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller__inherit__graph.png create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller-members.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.js create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller__inherit__graph.map create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller__inherit__graph.md5 create mode 100644 docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller__inherit__graph.png create mode 100644 docs/dir_7df6307e8ce44a8864ff8c0ace2ba173_dep.map create mode 100644 docs/dir_7df6307e8ce44a8864ff8c0ace2ba173_dep.md5 create mode 100644 docs/dir_7df6307e8ce44a8864ff8c0ace2ba173_dep.png create mode 100644 docs/dir_aa16df8496461ec3bcf35908592889b5_dep.map create mode 100644 docs/dir_aa16df8496461ec3bcf35908592889b5_dep.md5 create mode 100644 docs/dir_aa16df8496461ec3bcf35908592889b5_dep.png create mode 100644 docs/doc.svg create mode 100644 docs/docd.svg create mode 100644 docs/folderclosed.svg create mode 100644 docs/folderclosedd.svg create mode 100644 docs/folderopen.svg create mode 100644 docs/folderopend.svg create mode 100644 docs/index.js create mode 100644 docs/minus.svg create mode 100644 docs/minusd.svg create mode 100644 docs/namespace_s_i_n_r_i_c_p_r_o__3__0__0.html create mode 100644 docs/nav_fd.png create mode 100644 docs/nav_hd.png create mode 100644 docs/plus.svg create mode 100644 docs/plusd.svg create mode 100644 docs/search/all_11.js create mode 100644 docs/search/all_12.js create mode 100644 docs/search/all_13.js create mode 100644 docs/search/all_14.js create mode 100644 docs/search/mag.svg create mode 100644 docs/search/mag_d.svg create mode 100644 docs/search/mag_seld.svg create mode 100644 docs/search/pages_1.js create mode 100644 docs/search/pages_2.js create mode 100644 docs/splitbard.png create mode 100644 docs/tab_ad.png create mode 100644 docs/tab_bd.png create mode 100644 docs/tab_hd.png create mode 100644 docs/tab_sd.png create mode 100644 docs/topics.html create mode 100644 docs/topics.js diff --git a/docs/_air_quality_sensor_8h_source.html b/docs/_air_quality_sensor_8h_source.html index 808a3cc..f9f7231 100644 --- a/docs/_air_quality_sensor_8h_source.html +++ b/docs/_air_quality_sensor_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/AirQualitySensor.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/AirQualitySensor.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,70 +81,82 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
AirQualitySensor.h
+
AirQualitySensor.h
-
1 #pragma once
-
2 
-
3 #include "../EventLimiter.h"
-
4 #include "../SinricProStrings.h"
-
5 
-
6 #include "../SinricProNamespace.h"
-
7 namespace SINRICPRO_NAMESPACE {
-
8 
-
9 FSTR(AIRQUALITY, airQuality); // "airQuality"
-
10 FSTR(AIRQUALITY, pm1); // "pm1"
-
11 FSTR(AIRQUALITY, pm2_5); // "pm2_5"
-
12 FSTR(AIRQUALITY, pm10); // "pm10"
-
13 
-
18 template <typename T>
- -
20  public:
- -
22  bool sendAirQualityEvent(int pm1 = 0, int pm2_5 = 0, int pm10 = 0, String cause = FSTR_SINRICPRO_PERIODIC_POLL);
-
23  private:
-
24  EventLimiter event_limiter;
-
25 };
-
26 
-
27 template <typename T>
- -
29 : event_limiter (EVENT_LIMIT_SENSOR_VALUE) {}
-
30 
-
42 template <typename T>
-
43 bool AirQualitySensor<T>::sendAirQualityEvent(int pm1, int pm2_5, int pm10, String cause) {
-
44  if (event_limiter) return false;
-
45  T* device = static_cast<T*>(this);
-
46 
-
47  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_AIRQUALITY_airQuality, cause.c_str());
-
48  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
49 
-
50  event_value[FSTR_AIRQUALITY_pm1] = pm1;
-
51  event_value[FSTR_AIRQUALITY_pm2_5] = pm2_5;
-
52  event_value[FSTR_AIRQUALITY_pm10] = pm10;
-
53 
-
54  return device->sendEvent(eventMessage);
-
55 }
-
56 
-
57 } // SINRICPRO_NAMESPACE
-
58 
-
59 template <typename T>
-
60 using AirQualitySensor = SINRICPRO_NAMESPACE::AirQualitySensor<T>;
-
AirQuality.
Definition: AirQualitySensor.h:19
-
bool sendAirQualityEvent(int pm1=0, int pm2_5=0, int pm10=0, String cause=FSTR_SINRICPRO_PERIODIC_POLL)
Sending air quality to SinricPro server.
Definition: AirQualitySensor.h:43
+
1#pragma once
+
2
+
3#include "../EventLimiter.h"
+
4#include "../SinricProStrings.h"
+
5
+
6#include "../SinricProNamespace.h"
+
7namespace SINRICPRO_NAMESPACE {
+
8
+
9FSTR(AIRQUALITY, airQuality); // "airQuality"
+
10FSTR(AIRQUALITY, pm1); // "pm1"
+
11FSTR(AIRQUALITY, pm2_5); // "pm2_5"
+
12FSTR(AIRQUALITY, pm10); // "pm10"
+
13
+
18template <typename T>
+
+ +
20 public:
+ +
+
22 bool sendAirQualityEvent(int pm1 = 0, int pm2_5 = 0, int pm10 = 0, String cause = FSTR_SINRICPRO_PERIODIC_POLL);
+
23 private:
+
24 EventLimiter event_limiter;
+
25};
+
26
+
27template <typename T>
+ +
29: event_limiter (EVENT_LIMIT_SENSOR_VALUE) {}
+
30
+
42template <typename T>
+
+
43bool AirQualitySensor<T>::sendAirQualityEvent(int pm1, int pm2_5, int pm10, String cause) {
+
44 if (event_limiter) return false;
+
45 T* device = static_cast<T*>(this);
+
46
+
47 DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_AIRQUALITY_airQuality, cause.c_str());
+
48 JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
+
49
+
50 event_value[FSTR_AIRQUALITY_pm1] = pm1;
+
51 event_value[FSTR_AIRQUALITY_pm2_5] = pm2_5;
+
52 event_value[FSTR_AIRQUALITY_pm10] = pm10;
+
53
+
54 return device->sendEvent(eventMessage);
+
55}
+
+
+
56
+
57} // SINRICPRO_NAMESPACE
+
58
+
59template <typename T>
+
60using AirQualitySensor = SINRICPRO_NAMESPACE::AirQualitySensor<T>;
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
bool sendAirQualityEvent(int pm1=0, int pm2_5=0, int pm10=0, String cause=FSTR_SINRICPRO_PERIODIC_POLL)
Sending air quality to SinricPro server.
Definition AirQualitySensor.h:43
diff --git a/docs/_brightness_controller_8h_source.html b/docs/_brightness_controller_8h_source.html index 9322f60..91f1d3b 100644 --- a/docs/_brightness_controller_8h_source.html +++ b/docs/_brightness_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/BrightnessController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/BrightnessController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,117 +81,138 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
BrightnessController.h
+
BrightnessController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../EventLimiter.h"
-
5 #include "../SinricProStrings.h"
-
6 
-
7 #include "../SinricProNamespace.h"
-
8 namespace SINRICPRO_NAMESPACE {
-
9 
-
10 FSTR(BRIGHTNESS, setBrightness); // "setBrightness"
-
11 FSTR(BRIGHTNESS, brightness); // "brightness"
-
12 FSTR(BRIGHTNESS, adjustBrightness); // "adjustBrightness"
-
13 FSTR(BRIGHTNESS, brightnessDelta); // "brightnessDelta"
-
14 
-
28 using BrightnessCallback = std::function<bool(const String &, int &)>;
-
29 
-
43 using AdjustBrightnessCallback = std::function<bool(const String &, int &)>;
-
44 
-
49 template <typename T>
- -
51  public:
- -
53 
- - -
56 
-
57  bool sendBrightnessEvent(int brightness, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
58  protected:
-
59  bool handleBrightnessController(SinricProRequest &request);
-
60 
-
61  private:
-
62  EventLimiter event_limiter;
-
63  BrightnessCallback brightnessCallback;
-
64  AdjustBrightnessCallback adjustBrightnessCallback;
-
65 };
-
66 
-
67 template <typename T>
- -
69 : event_limiter (EVENT_LIMIT_STATE) {
-
70  T* device = static_cast<T*>(this);
-
71  device->registerRequestHandler(std::bind(&BrightnessController<T>::handleBrightnessController, this, std::placeholders::_1));
-
72 }
-
73 
-
81 template <typename T>
- -
83  brightnessCallback = cb;
-
84 }
-
85 
-
93 template <typename T>
- -
95  adjustBrightnessCallback = cb;
-
96 }
-
97 
-
107 template <typename T>
-
108 bool BrightnessController<T>::sendBrightnessEvent(int brightness, String cause) {
-
109  if (event_limiter) return false;
-
110  T* device = static_cast<T*>(this);
-
111 
-
112  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_BRIGHTNESS_setBrightness, cause.c_str());
-
113  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
114  event_value[FSTR_BRIGHTNESS_brightness] = brightness;
-
115  return device->sendEvent(eventMessage);
-
116 }
-
117 
-
118 template <typename T>
-
119 bool BrightnessController<T>::handleBrightnessController(SinricProRequest &request) {
-
120  T* device = static_cast<T*>(this);
-
121  bool success = false;
-
122 
-
123  if (brightnessCallback && request.action == FSTR_BRIGHTNESS_setBrightness) {
-
124  int brightness = request.request_value[FSTR_BRIGHTNESS_brightness];
-
125  success = brightnessCallback(device->deviceId, brightness);
-
126  request.response_value[FSTR_BRIGHTNESS_brightness] = brightness;
-
127  }
-
128 
-
129  if (adjustBrightnessCallback && request.action == FSTR_BRIGHTNESS_adjustBrightness) {
-
130  int brightnessDelta = request.request_value[FSTR_BRIGHTNESS_brightnessDelta];
-
131  success = adjustBrightnessCallback(device->deviceId, brightnessDelta);
-
132  request.response_value[FSTR_BRIGHTNESS_brightness] = brightnessDelta;
-
133  }
-
134 
-
135  return success;
-
136 }
-
137 
-
138 } // SINRICPRO_NAMESPACE
-
139 
-
140 template <typename T>
-
141 using BrightnessController = SINRICPRO_NAMESPACE::BrightnessController<T>;
-
BrightnessController.
Definition: BrightnessController.h:50
-
void onAdjustBrightness(AdjustBrightnessCallback cb)
Set callback function for adjustBrightness request.
Definition: BrightnessController.h:94
-
bool sendBrightnessEvent(int brightness, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setBrightness event to SinricPro Server indicating actual brightness.
Definition: BrightnessController.h:108
-
void onBrightness(BrightnessCallback cb)
Set callback function for setBrightness request.
Definition: BrightnessController.h:82
-
std::function< bool(const String &, int &)> AdjustBrightnessCallback
Callback definition for onAdjustBrightness function.
Definition: BrightnessController.h:43
-
std::function< bool(const String &, int &)> BrightnessCallback
Callback definition for onBrightness function.
Definition: BrightnessController.h:28
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../EventLimiter.h"
+
5#include "../SinricProStrings.h"
+
6
+
7#include "../SinricProNamespace.h"
+
8namespace SINRICPRO_NAMESPACE {
+
9
+
10FSTR(BRIGHTNESS, setBrightness); // "setBrightness"
+
11FSTR(BRIGHTNESS, brightness); // "brightness"
+
12FSTR(BRIGHTNESS, adjustBrightness); // "adjustBrightness"
+
13FSTR(BRIGHTNESS, brightnessDelta); // "brightnessDelta"
+
14
+
28using BrightnessCallback = std::function<bool(const String &, int &)>;
+
29
+
43using AdjustBrightnessCallback = std::function<bool(const String &, int &)>;
+
44
+
49template <typename T>
+
+ +
51 public:
+ +
53
+
+ +
+ +
56
+
+ +
58 protected:
+
59 bool handleBrightnessController(SinricProRequest &request);
+
60
+
61 private:
+
62 EventLimiter event_limiter;
+
63 BrightnessCallback brightnessCallback;
+
64 AdjustBrightnessCallback adjustBrightnessCallback;
+
65};
+
66
+
67template <typename T>
+ +
69: event_limiter (EVENT_LIMIT_STATE) {
+
70 T* device = static_cast<T*>(this);
+
71 device->registerRequestHandler(std::bind(&BrightnessController<T>::handleBrightnessController, this, std::placeholders::_1));
+
72}
+
73
+
81template <typename T>
+
+ +
83 brightnessCallback = cb;
+
84}
+
+
85
+
93template <typename T>
+
+ +
95 adjustBrightnessCallback = cb;
+
96}
+
+
97
+
107template <typename T>
+
+ +
109 if (event_limiter) return false;
+
110 T* device = static_cast<T*>(this);
+
111
+ + + +
115 return device->sendEvent(eventMessage);
+
116}
+
+
+
117
+
118template <typename T>
+ +
120 T* device = static_cast<T*>(this);
+
121 bool success = false;
+
122
+
123 if (brightnessCallback && request.action == FSTR_BRIGHTNESS_setBrightness) {
+
124 int brightness = request.request_value[FSTR_BRIGHTNESS_brightness];
+
125 success = brightnessCallback(device->deviceId, brightness);
+ +
127 }
+
128
+
129 if (adjustBrightnessCallback && request.action == FSTR_BRIGHTNESS_adjustBrightness) {
+
130 int brightnessDelta = request.request_value[FSTR_BRIGHTNESS_brightnessDelta];
+
131 success = adjustBrightnessCallback(device->deviceId, brightnessDelta);
+
132 request.response_value[FSTR_BRIGHTNESS_brightness] = brightnessDelta;
+
133 }
+
134
+
135 return success;
+
136}
+
137
+
138} // SINRICPRO_NAMESPACE
+
139
+
140template <typename T>
+
141using BrightnessController = SINRICPRO_NAMESPACE::BrightnessController<T>;
+
+
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
BrightnessController.
Definition BrightnessController.h:50
+
void onAdjustBrightness(AdjustBrightnessCallback cb)
Set callback function for adjustBrightness request.
Definition BrightnessController.h:94
+
bool sendBrightnessEvent(int brightness, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setBrightness event to SinricPro Server indicating actual brightness.
Definition BrightnessController.h:108
+
void onBrightness(BrightnessCallback cb)
Set callback function for setBrightness request.
Definition BrightnessController.h:82
+
std::function< bool(const String &, int &)> AdjustBrightnessCallback
Callback definition for onAdjustBrightness function.
Definition BrightnessController.h:43
+
std::function< bool(const String &, int &)> BrightnessCallback
Callback definition for onBrightness function.
Definition BrightnessController.h:28
diff --git a/docs/_channel_controller_8h_source.html b/docs/_channel_controller_8h_source.html index fc616ab..36f85e8 100644 --- a/docs/_channel_controller_8h_source.html +++ b/docs/_channel_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/ChannelController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/ChannelController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,144 +81,169 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
ChannelController.h
+
ChannelController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../EventLimiter.h"
-
5 #include "../SinricProStrings.h"
-
6 
-
7 #include "../SinricProNamespace.h"
-
8 namespace SINRICPRO_NAMESPACE {
-
9 
-
10 FSTR(CHANNEL, changeChannel); // "changeChannel"
-
11 FSTR(CHANNEL, channel); // "channel"
-
12 FSTR(CHANNEL, name); // "name"
-
13 FSTR(CHANNEL, number); // "number"
-
14 FSTR(CHANNEL, skipChannels); // "skipChannels"
-
15 FSTR(CHANNEL, channelCount); // "channelCount"
-
16 
-
31 using ChangeChannelCallback = std::function<bool(const String &, String &)>;
-
32 
-
47 using ChangeChannelNumberCallback = std::function<bool(const String &, int, String &)>;
-
48 
-
63 using SkipChannelsCallback = std::function<bool(const String &, int, String &)>;
-
64 
-
69 template <typename T>
- -
71  public:
- -
73 
- - - -
77 
-
78  bool sendChangeChannelEvent(String channelName, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
79  protected:
-
80  bool handleChannelController(SinricProRequest &request);
-
81 
-
82  private:
-
83  EventLimiter event_limiter;
-
84  ChangeChannelCallback changeChannelCallback;
-
85  ChangeChannelNumberCallback changeChannelNumberCallback;
-
86  SkipChannelsCallback skipChannelsCallback;
-
87 };
-
88 
-
89 template <typename T>
- -
91 : event_limiter(EVENT_LIMIT_STATE) {
-
92  T* device = static_cast<T*>(this);
-
93  device->registerRequestHandler(std::bind(&ChannelController<T>::handleChannelController, this, std::placeholders::_1));
-
94 }
-
95 
-
103 template <typename T>
- -
105  changeChannelCallback = cb;
-
106 }
-
107 
-
115 template <typename T>
- -
117  changeChannelNumberCallback = cb;
-
118 }
-
119 
-
127 template <typename T>
- -
129  skipChannelsCallback = cb;
-
130 }
-
131 
-
141 template <typename T>
-
142 bool ChannelController<T>::sendChangeChannelEvent(String channelName, String cause) {
-
143  if (event_limiter) return false;
-
144  T* device = static_cast<T*>(this);
-
145 
-
146  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_CHANNEL_changeChannel, cause.c_str());
-
147  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
148  event_value[FSTR_CHANNEL_channel][FSTR_CHANNEL_name] = channelName;
-
149  return device->sendEvent(eventMessage);
-
150 }
-
151 
-
152 template <typename T>
-
153 bool ChannelController<T>::handleChannelController(SinricProRequest &request) {
-
154  T* device = static_cast<T*>(this);
-
155 
-
156  bool success = false;
-
157 
-
158  if (request.action == FSTR_CHANNEL_changeChannel) {
-
159 
-
160  if (changeChannelCallback && request.request_value[FSTR_CHANNEL_channel].containsKey(FSTR_CHANNEL_name)) {
-
161  String channelName = request.request_value[FSTR_CHANNEL_channel][FSTR_CHANNEL_name] | "";
-
162  success = changeChannelCallback(device->deviceId, channelName);
-
163  request.response_value[FSTR_CHANNEL_channel][FSTR_CHANNEL_name] = channelName;
-
164  }
-
165 
-
166  if (changeChannelNumberCallback && request.request_value[FSTR_CHANNEL_channel].containsKey(FSTR_CHANNEL_number)) {
-
167  String channelName("");
-
168  int channelNumber = request.request_value[FSTR_CHANNEL_channel][FSTR_CHANNEL_number];
-
169  success = changeChannelNumberCallback(device->deviceId, channelNumber, channelName);
-
170  request.response_value[FSTR_CHANNEL_channel][FSTR_CHANNEL_name] = channelName;
-
171  }
-
172  return success;
-
173  }
-
174 
-
175  if (skipChannelsCallback && request.action == FSTR_CHANNEL_skipChannels) {
-
176  String channelName;
-
177  int channelCount = request.request_value[FSTR_CHANNEL_channelCount] | 0;
-
178  success = skipChannelsCallback(device->deviceId, channelCount, channelName);
-
179  request.response_value[FSTR_CHANNEL_channel][FSTR_CHANNEL_name] = channelName;
-
180  return success;
-
181  }
-
182 
-
183  return success;
-
184 }
-
185 
-
186 } // SINRICPRO_NAMESPACE
-
187 
-
188 template <typename T>
-
189 using ChannelController = SINRICPRO_NAMESPACE::ChannelController<T>;
-
ChannelController.
Definition: ChannelController.h:70
-
void onChangeChannel(ChangeChannelCallback cb)
Set callback function for changeChannel request.
Definition: ChannelController.h:104
-
void onSkipChannels(SkipChannelsCallback cb)
Set callback function for skipChannels request.
Definition: ChannelController.h:128
-
void onChangeChannelNumber(ChangeChannelNumberCallback cb)
Set callback function for changeChannel request.
Definition: ChannelController.h:116
-
bool sendChangeChannelEvent(String channelName, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send changeChannel event to SinricPro Server to report selected channel.
Definition: ChannelController.h:142
-
std::function< bool(const String &, int, String &)> SkipChannelsCallback
Callback definition for onSkipChannels function.
Definition: ChannelController.h:63
-
std::function< bool(const String &, String &)> ChangeChannelCallback
Callback definition for onChangeChannel function.
Definition: ChannelController.h:31
-
std::function< bool(const String &, int, String &)> ChangeChannelNumberCallback
Callback definition for onChangeChannelNumber function.
Definition: ChannelController.h:47
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../EventLimiter.h"
+
5#include "../SinricProStrings.h"
+
6
+
7#include "../SinricProNamespace.h"
+
8namespace SINRICPRO_NAMESPACE {
+
9
+
10FSTR(CHANNEL, changeChannel); // "changeChannel"
+
11FSTR(CHANNEL, channel); // "channel"
+
12FSTR(CHANNEL, name); // "name"
+
13FSTR(CHANNEL, number); // "number"
+
14FSTR(CHANNEL, skipChannels); // "skipChannels"
+
15FSTR(CHANNEL, channelCount); // "channelCount"
+
16
+
31using ChangeChannelCallback = std::function<bool(const String &, String &)>;
+
32
+
47using ChangeChannelNumberCallback = std::function<bool(const String &, int, String &)>;
+
48
+
63using SkipChannelsCallback = std::function<bool(const String &, int, String &)>;
+
64
+
69template <typename T>
+
+ +
71 public:
+ +
73
+
+ +
+ +
+ +
77
+
+ +
79 protected:
+
80 bool handleChannelController(SinricProRequest &request);
+
81
+
82 private:
+
83 EventLimiter event_limiter;
+
84 ChangeChannelCallback changeChannelCallback;
+
85 ChangeChannelNumberCallback changeChannelNumberCallback;
+
86 SkipChannelsCallback skipChannelsCallback;
+
87};
+
88
+
89template <typename T>
+ +
91: event_limiter(EVENT_LIMIT_STATE) {
+
92 T* device = static_cast<T*>(this);
+
93 device->registerRequestHandler(std::bind(&ChannelController<T>::handleChannelController, this, std::placeholders::_1));
+
94}
+
95
+
103template <typename T>
+
+ +
105 changeChannelCallback = cb;
+
106}
+
+
107
+
115template <typename T>
+
+ +
117 changeChannelNumberCallback = cb;
+
118}
+
+
119
+
127template <typename T>
+
+ +
129 skipChannelsCallback = cb;
+
130}
+
+
131
+
141template <typename T>
+
+ +
143 if (event_limiter) return false;
+
144 T* device = static_cast<T*>(this);
+
145
+ + + +
149 return device->sendEvent(eventMessage);
+
150}
+
+
+
151
+
152template <typename T>
+ +
154 T* device = static_cast<T*>(this);
+
155
+
156 bool success = false;
+
157
+
158 if (request.action == FSTR_CHANNEL_changeChannel) {
+
159
+
160 if (changeChannelCallback && request.request_value[FSTR_CHANNEL_channel].containsKey(FSTR_CHANNEL_name)) {
+
161 String channelName = request.request_value[FSTR_CHANNEL_channel][FSTR_CHANNEL_name] | "";
+
162 success = changeChannelCallback(device->deviceId, channelName);
+ +
164 }
+
165
+
166 if (changeChannelNumberCallback && request.request_value[FSTR_CHANNEL_channel].containsKey(FSTR_CHANNEL_number)) {
+
167 String channelName("");
+
168 int channelNumber = request.request_value[FSTR_CHANNEL_channel][FSTR_CHANNEL_number];
+
169 success = changeChannelNumberCallback(device->deviceId, channelNumber, channelName);
+
170 request.response_value[FSTR_CHANNEL_channel][FSTR_CHANNEL_name] = channelName;
+
171 }
+
172 return success;
+
173 }
+
174
+
175 if (skipChannelsCallback && request.action == FSTR_CHANNEL_skipChannels) {
+
176 String channelName;
+
177 int channelCount = request.request_value[FSTR_CHANNEL_channelCount] | 0;
+
178 success = skipChannelsCallback(device->deviceId, channelCount, channelName);
+
179 request.response_value[FSTR_CHANNEL_channel][FSTR_CHANNEL_name] = channelName;
+
180 return success;
+
181 }
+
182
+
183 return success;
+
184}
+
185
+
186} // SINRICPRO_NAMESPACE
+
187
+
188template <typename T>
+
189using ChannelController = SINRICPRO_NAMESPACE::ChannelController<T>;
+
+
+
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
ChannelController.
Definition ChannelController.h:70
+
void onChangeChannel(ChangeChannelCallback cb)
Set callback function for changeChannel request.
Definition ChannelController.h:104
+
void onSkipChannels(SkipChannelsCallback cb)
Set callback function for skipChannels request.
Definition ChannelController.h:128
+
void onChangeChannelNumber(ChangeChannelNumberCallback cb)
Set callback function for changeChannel request.
Definition ChannelController.h:116
+
bool sendChangeChannelEvent(String channelName, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send changeChannel event to SinricPro Server to report selected channel.
Definition ChannelController.h:142
+
std::function< bool(const String &, int, String &)> SkipChannelsCallback
Callback definition for onSkipChannels function.
Definition ChannelController.h:63
+
std::function< bool(const String &, String &)> ChangeChannelCallback
Callback definition for onChangeChannel function.
Definition ChannelController.h:31
+
std::function< bool(const String &, int, String &)> ChangeChannelNumberCallback
Callback definition for onChangeChannelNumber function.
Definition ChannelController.h:47
diff --git a/docs/_color_controller_8h_source.html b/docs/_color_controller_8h_source.html index 61eba6c..544607e 100644 --- a/docs/_color_controller_8h_source.html +++ b/docs/_color_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/ColorController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/ColorController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,111 +81,128 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
ColorController.h
+
ColorController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../EventLimiter.h"
-
5 #include "../SinricProStrings.h"
-
6 
-
7 #include "../SinricProNamespace.h"
-
8 namespace SINRICPRO_NAMESPACE {
-
9 
-
10 FSTR(COLOR, setColor); // "setColor"
-
11 FSTR(COLOR, color); // "color"
-
12 FSTR(COLOR, r); // "r"
-
13 FSTR(COLOR, g); // "g"
-
14 FSTR(COLOR, b); // "b"
-
15 
-
33 using ColorCallback = std::function<bool(const String &, byte &, byte &, byte &)>;
-
34 
-
39 template <typename T>
- -
41  public:
- -
43 
- -
45  bool sendColorEvent(byte r, byte g, byte b, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
46 
-
47  protected:
-
48  bool handleColorController(SinricProRequest &request);
-
49 
-
50  private:
-
51  EventLimiter event_limiter;
-
52  ColorCallback colorCallback;
-
53 };
-
54 
-
55 template <typename T>
- -
57 : event_limiter(EVENT_LIMIT_STATE) {
-
58  T* device = static_cast<T*>(this);
-
59  device->registerRequestHandler(std::bind(&ColorController<T>::handleColorController, this, std::placeholders::_1));
-
60 }
-
61 
-
62 
-
70 template <typename T>
- -
72  colorCallback = cb;
-
73 }
-
74 
-
86 template <typename T>
-
87 bool ColorController<T>::sendColorEvent(byte r, byte g, byte b, String cause) {
-
88  if (event_limiter) return false;
-
89  T* device = static_cast<T*>(this);
-
90 
-
91  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_COLOR_setColor, cause.c_str());
-
92  JsonObject event_color = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value].createNestedObject(FSTR_COLOR_color);
-
93  event_color[FSTR_COLOR_r] = r;
-
94  event_color[FSTR_COLOR_g] = g;
-
95  event_color[FSTR_COLOR_b] = b;
-
96  return device->sendEvent(eventMessage);
-
97 }
-
98 
-
99 template <typename T>
-
100 bool ColorController<T>::handleColorController(SinricProRequest &request) {
-
101  T* device = static_cast<T*>(this);
-
102 
-
103  bool success = false;
-
104 
-
105  if (colorCallback && request.action == FSTR_COLOR_setColor) {
-
106  unsigned char r, g, b;
-
107  r = request.request_value[FSTR_COLOR_color][FSTR_COLOR_r];
-
108  g = request.request_value[FSTR_COLOR_color][FSTR_COLOR_g];
-
109  b = request.request_value[FSTR_COLOR_color][FSTR_COLOR_b];
-
110  success = colorCallback(device->deviceId, r, g, b);
-
111  request.response_value.createNestedObject(FSTR_COLOR_color);
-
112  request.response_value[FSTR_COLOR_color][FSTR_COLOR_r] = r;
-
113  request.response_value[FSTR_COLOR_color][FSTR_COLOR_g] = g;
-
114  request.response_value[FSTR_COLOR_color][FSTR_COLOR_b] = b;
-
115  }
-
116 
-
117  return success;
-
118 }
-
119 
-
120 } // SINRICPRO_NAMESPACE
-
121 
-
122 template <typename T>
-
123 using ColorController = SINRICPRO_NAMESPACE::ColorController<T>;
-
ColorController.
Definition: ColorController.h:40
-
void onColor(ColorCallback cb)
Set callback function for setColor request.
Definition: ColorController.h:71
-
bool sendColorEvent(byte r, byte g, byte b, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setColor event to SinricPro Server indicating actual color.
Definition: ColorController.h:87
-
std::function< bool(const String &, byte &, byte &, byte &)> ColorCallback
Callback definition for onColor function.
Definition: ColorController.h:33
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../EventLimiter.h"
+
5#include "../SinricProStrings.h"
+
6
+
7#include "../SinricProNamespace.h"
+
8namespace SINRICPRO_NAMESPACE {
+
9
+
10FSTR(COLOR, setColor); // "setColor"
+
11FSTR(COLOR, color); // "color"
+
12FSTR(COLOR, r); // "r"
+
13FSTR(COLOR, g); // "g"
+
14FSTR(COLOR, b); // "b"
+
15
+
33using ColorCallback = std::function<bool(const String &, byte &, byte &, byte &)>;
+
34
+
39template <typename T>
+
+ +
41 public:
+ +
43
+
+ +
+
45 bool sendColorEvent(byte r, byte g, byte b, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
+
46
+
47 protected:
+
48 bool handleColorController(SinricProRequest &request);
+
49
+
50 private:
+
51 EventLimiter event_limiter;
+
52 ColorCallback colorCallback;
+
53};
+
54
+
55template <typename T>
+ +
57: event_limiter(EVENT_LIMIT_STATE) {
+
58 T* device = static_cast<T*>(this);
+
59 device->registerRequestHandler(std::bind(&ColorController<T>::handleColorController, this, std::placeholders::_1));
+
60}
+
61
+
62
+
70template <typename T>
+
+ +
72 colorCallback = cb;
+
73}
+
+
74
+
86template <typename T>
+
+
87bool ColorController<T>::sendColorEvent(byte r, byte g, byte b, String cause) {
+
88 if (event_limiter) return false;
+
89 T* device = static_cast<T*>(this);
+
90
+ + + + + +
96 return device->sendEvent(eventMessage);
+
97}
+
+
+
98
+
99template <typename T>
+ +
101 T* device = static_cast<T*>(this);
+
102
+
103 bool success = false;
+
104
+
105 if (colorCallback && request.action == FSTR_COLOR_setColor) {
+
106 unsigned char r, g, b;
+
107 r = request.request_value[FSTR_COLOR_color][FSTR_COLOR_r];
+
108 g = request.request_value[FSTR_COLOR_color][FSTR_COLOR_g];
+
109 b = request.request_value[FSTR_COLOR_color][FSTR_COLOR_b];
+
110 success = colorCallback(device->deviceId, r, g, b);
+
111 request.response_value.createNestedObject(FSTR_COLOR_color);
+
112 request.response_value[FSTR_COLOR_color][FSTR_COLOR_r] = r;
+
113 request.response_value[FSTR_COLOR_color][FSTR_COLOR_g] = g;
+
114 request.response_value[FSTR_COLOR_color][FSTR_COLOR_b] = b;
+
115 }
+
116
+
117 return success;
+
118}
+
119
+
120} // SINRICPRO_NAMESPACE
+
121
+
122template <typename T>
+
123using ColorController = SINRICPRO_NAMESPACE::ColorController<T>;
+
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
ColorController.
Definition ColorController.h:40
+
void onColor(ColorCallback cb)
Set callback function for setColor request.
Definition ColorController.h:71
+
bool sendColorEvent(byte r, byte g, byte b, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setColor event to SinricPro Server indicating actual color.
Definition ColorController.h:87
+
std::function< bool(const String &, byte &, byte &, byte &)> ColorCallback
Callback definition for onColor function.
Definition ColorController.h:33
diff --git a/docs/_color_temperature_controller_8h_source.html b/docs/_color_temperature_controller_8h_source.html index 671dbf8..cda3ca3 100644 --- a/docs/_color_temperature_controller_8h_source.html +++ b/docs/_color_temperature_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/ColorTemperatureController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/ColorTemperatureController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,138 +81,163 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
ColorTemperatureController.h
+
ColorTemperatureController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../EventLimiter.h"
-
5 #include "../SinricProStrings.h"
-
6 
-
7 #include "../SinricProNamespace.h"
-
8 namespace SINRICPRO_NAMESPACE {
-
9 
-
10 FSTR(COLORTEMPERATURE, colorTemperature); // "colorTemperature"
-
11 FSTR(COLORTEMPERATURE, setColorTemperature); // "setColorTemperature"
-
12 FSTR(COLORTEMPERATURE, increaseColorTemperature); // "increaseColorTemperature"
-
13 FSTR(COLORTEMPERATURE, decreaseColorTemperature); // "decreaseColorTemperature"
-
14 
-
28 using ColorTemperatureCallback = std::function<bool(const String &, int &)>;
-
29 
-
43 using IncreaseColorTemperatureCallback = std::function<bool(const String &, int &)>;
-
44 
-
58 using DecreaseColorTemperatureCallback = std::function<bool(const String &, int &)>;
-
59 
-
60 
-
65 template <typename T>
- -
67  public:
- -
69 
- - - -
73 
-
74  bool sendColorTemperatureEvent(int colorTemperature, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
75 
-
76  protected:
-
77  bool handleColorTemperatureController(SinricProRequest &request);
-
78 
-
79  private:
-
80  EventLimiter event_limiter;
-
81 // SinricProDeviceInterface *device;
-
82  ColorTemperatureCallback colorTemperatureCallback;
-
83  IncreaseColorTemperatureCallback increaseColorTemperatureCallback;
-
84  DecreaseColorTemperatureCallback decreaseColorTemperatureCallback;
-
85 };
-
86 
-
87 template <typename T>
- -
89 : event_limiter(EVENT_LIMIT_STATE) {
-
90  T* device = static_cast<T*>(this);
-
91  device->registerRequestHandler(std::bind(&ColorTemperatureController<T>::handleColorTemperatureController, this, std::placeholders::_1));
-
92 }
-
93 
-
101 template <typename T>
- -
103  colorTemperatureCallback = cb;
-
104 }
-
105 
-
113 template <typename T>
- -
115  increaseColorTemperatureCallback = cb;
-
116 }
-
117 
-
125 template <typename T>
- -
127  decreaseColorTemperatureCallback = cb;
-
128 }
-
129 
-
139 template <typename T>
-
140 bool ColorTemperatureController<T>::sendColorTemperatureEvent(int colorTemperature, String cause) {
-
141  if (event_limiter) return false;
-
142  T* device = static_cast<T*>(this);
-
143 
-
144  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_COLORTEMPERATURE_setColorTemperature, cause.c_str());
-
145  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
146  event_value[FSTR_COLORTEMPERATURE_colorTemperature] = colorTemperature;
-
147  return device->sendEvent(eventMessage);
-
148 }
-
149 
-
150 template <typename T>
- -
152  T* device = static_cast<T*>(this);
-
153 
-
154  bool success = false;
-
155 
-
156  if (colorTemperatureCallback && request.action == FSTR_COLORTEMPERATURE_setColorTemperature) {
-
157  int colorTemperature = request.request_value[FSTR_COLORTEMPERATURE_colorTemperature];
-
158  success = colorTemperatureCallback(device->deviceId, colorTemperature);
-
159  request.response_value[FSTR_COLORTEMPERATURE_colorTemperature] = colorTemperature;
-
160  }
-
161 
-
162  if (increaseColorTemperatureCallback && request.action == FSTR_COLORTEMPERATURE_increaseColorTemperature) {
-
163  int colorTemperature = 1;
-
164  success = increaseColorTemperatureCallback(device->deviceId, colorTemperature);
-
165  request.response_value[FSTR_COLORTEMPERATURE_colorTemperature] = colorTemperature;
-
166  }
-
167 
-
168  if (decreaseColorTemperatureCallback && request.action == FSTR_COLORTEMPERATURE_decreaseColorTemperature) {
-
169  int colorTemperature = -1;
-
170  success = decreaseColorTemperatureCallback(device->deviceId, colorTemperature);
-
171  request.response_value[FSTR_COLORTEMPERATURE_colorTemperature] = colorTemperature;
-
172  }
-
173 
-
174  return success;
-
175 }
-
176 
-
177 } // SINRICPRO_NAMESPACE
-
178 
-
179 template <typename T>
-
180 using ColorTemperatureController = SINRICPRO_NAMESPACE::ColorTemperatureController<T>;
-
ColorTemperatureController.
Definition: ColorTemperatureController.h:66
-
bool sendColorTemperatureEvent(int colorTemperature, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setColorTemperature event to SinricPro Server indicating actual color temperature.
Definition: ColorTemperatureController.h:140
-
void onDecreaseColorTemperature(DecreaseColorTemperatureCallback cb)
Set callback function for decreaseColorTemperature request.
Definition: ColorTemperatureController.h:126
-
void onIncreaseColorTemperature(IncreaseColorTemperatureCallback cb)
Set callback function for increaseColorTemperature request.
Definition: ColorTemperatureController.h:114
-
void onColorTemperature(ColorTemperatureCallback cb)
Set callback function for setColorTemperature request.
Definition: ColorTemperatureController.h:102
-
std::function< bool(const String &, int &)> ColorTemperatureCallback
Callback definition for onColorTemperature function.
Definition: ColorTemperatureController.h:28
-
std::function< bool(const String &, int &)> DecreaseColorTemperatureCallback
Callback definition for onDecreaseColorTemperature function.
Definition: ColorTemperatureController.h:58
-
std::function< bool(const String &, int &)> IncreaseColorTemperatureCallback
Callback definition for onIncreaseColorTemperature function.
Definition: ColorTemperatureController.h:43
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../EventLimiter.h"
+
5#include "../SinricProStrings.h"
+
6
+
7#include "../SinricProNamespace.h"
+
8namespace SINRICPRO_NAMESPACE {
+
9
+
10FSTR(COLORTEMPERATURE, colorTemperature); // "colorTemperature"
+
11FSTR(COLORTEMPERATURE, setColorTemperature); // "setColorTemperature"
+
12FSTR(COLORTEMPERATURE, increaseColorTemperature); // "increaseColorTemperature"
+
13FSTR(COLORTEMPERATURE, decreaseColorTemperature); // "decreaseColorTemperature"
+
14
+
28using ColorTemperatureCallback = std::function<bool(const String &, int &)>;
+
29
+
43using IncreaseColorTemperatureCallback = std::function<bool(const String &, int &)>;
+
44
+
58using DecreaseColorTemperatureCallback = std::function<bool(const String &, int &)>;
+
59
+
60
+
65template <typename T>
+
+ +
67 public:
+ +
69
+
+ +
+ +
+ +
73
+
+ +
75
+
76 protected:
+
77 bool handleColorTemperatureController(SinricProRequest &request);
+
78
+
79 private:
+
80 EventLimiter event_limiter;
+
81// SinricProDeviceInterface *device;
+
82 ColorTemperatureCallback colorTemperatureCallback;
+
83 IncreaseColorTemperatureCallback increaseColorTemperatureCallback;
+
84 DecreaseColorTemperatureCallback decreaseColorTemperatureCallback;
+
85};
+
86
+
87template <typename T>
+ +
89: event_limiter(EVENT_LIMIT_STATE) {
+
90 T* device = static_cast<T*>(this);
+
91 device->registerRequestHandler(std::bind(&ColorTemperatureController<T>::handleColorTemperatureController, this, std::placeholders::_1));
+
92}
+
93
+
101template <typename T>
+
+ +
103 colorTemperatureCallback = cb;
+
104}
+
+
105
+
113template <typename T>
+ +
117
+
125template <typename T>
+ +
129
+
139template <typename T>
+ +
+
149
+
150template <typename T>
+ +
152 T* device = static_cast<T*>(this);
+
153
+
154 bool success = false;
+
155
+
156 if (colorTemperatureCallback && request.action == FSTR_COLORTEMPERATURE_setColorTemperature) {
+ +
158 success = colorTemperatureCallback(device->deviceId, colorTemperature);
+ +
160 }
+
161
+
162 if (increaseColorTemperatureCallback && request.action == FSTR_COLORTEMPERATURE_increaseColorTemperature) {
+
163 int colorTemperature = 1;
+
164 success = increaseColorTemperatureCallback(device->deviceId, colorTemperature);
+
165 request.response_value[FSTR_COLORTEMPERATURE_colorTemperature] = colorTemperature;
+
166 }
+
167
+
168 if (decreaseColorTemperatureCallback && request.action == FSTR_COLORTEMPERATURE_decreaseColorTemperature) {
+
169 int colorTemperature = -1;
+
170 success = decreaseColorTemperatureCallback(device->deviceId, colorTemperature);
+
171 request.response_value[FSTR_COLORTEMPERATURE_colorTemperature] = colorTemperature;
+
172 }
+
173
+
174 return success;
+
175}
+
176
+
177} // SINRICPRO_NAMESPACE
+
178
+
179template <typename T>
+
180using ColorTemperatureController = SINRICPRO_NAMESPACE::ColorTemperatureController<T>;
+
+
+
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
ColorTemperatureController.
Definition ColorTemperatureController.h:66
+
bool sendColorTemperatureEvent(int colorTemperature, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setColorTemperature event to SinricPro Server indicating actual color temperature.
Definition ColorTemperatureController.h:140
+
void onDecreaseColorTemperature(DecreaseColorTemperatureCallback cb)
Set callback function for decreaseColorTemperature request.
Definition ColorTemperatureController.h:126
+
void onIncreaseColorTemperature(IncreaseColorTemperatureCallback cb)
Set callback function for increaseColorTemperature request.
Definition ColorTemperatureController.h:114
+
void onColorTemperature(ColorTemperatureCallback cb)
Set callback function for setColorTemperature request.
Definition ColorTemperatureController.h:102
+
std::function< bool(const String &, int &)> ColorTemperatureCallback
Callback definition for onColorTemperature function.
Definition ColorTemperatureController.h:28
+
std::function< bool(const String &, int &)> DecreaseColorTemperatureCallback
Callback definition for onDecreaseColorTemperature function.
Definition ColorTemperatureController.h:58
+
std::function< bool(const String &, int &)> IncreaseColorTemperatureCallback
Callback definition for onIncreaseColorTemperature function.
Definition ColorTemperatureController.h:43
diff --git a/docs/_contact_sensor_8h_source.html b/docs/_contact_sensor_8h_source.html index ea45b05..b4627cc 100644 --- a/docs/_contact_sensor_8h_source.html +++ b/docs/_contact_sensor_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/ContactSensor.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/ContactSensor.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,66 +81,79 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
ContactSensor.h
+
ContactSensor.h
-
1 #pragma once
-
2 
-
3 #include "../EventLimiter.h"
-
4 #include "../SinricProStrings.h"
-
5 
-
6 #include "../SinricProNamespace.h"
-
7 namespace SINRICPRO_NAMESPACE {
-
8 
-
9 FSTR(CONTACT, setContactState); // "setContactState"
-
10 FSTR(CONTACT, state); // "state"
-
11 FSTR(CONTACT, closed); // "closed"
-
12 FSTR(CONTACT, open); // "open"
-
13 
-
18 template <typename T>
- -
20  public:
-
21  ContactSensor();
-
22  bool sendContactEvent(bool detected, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
23  private:
-
24  EventLimiter event_limiter;
-
25 };
-
26 
-
27 template <typename T>
- -
29 : event_limiter(EVENT_LIMIT_SENSOR_STATE) {}
-
30 
-
39 template <typename T>
-
40 bool ContactSensor<T>::sendContactEvent(bool detected, String cause) {
-
41  if (event_limiter) return false;
-
42  T* device = static_cast<T*>(this);
-
43 
-
44  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_CONTACT_setContactState, cause.c_str());
-
45  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
46  event_value[FSTR_CONTACT_state] = detected ? FSTR_CONTACT_closed : FSTR_CONTACT_open;
-
47  return device->sendEvent(eventMessage);
-
48 }
-
49 
-
50 } // SINRICPRO_NAMESPACE
-
51 
-
52 template <typename T>
-
53 using ContactSensor = SINRICPRO_NAMESPACE::ContactSensor<T>;
-
ContactSensor.
Definition: ContactSensor.h:19
-
bool sendContactEvent(bool detected, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setContactState event to SinricPro Server indicating actual power state.
Definition: ContactSensor.h:40
+
1#pragma once
+
2
+
3#include "../EventLimiter.h"
+
4#include "../SinricProStrings.h"
+
5
+
6#include "../SinricProNamespace.h"
+
7namespace SINRICPRO_NAMESPACE {
+
8
+
9FSTR(CONTACT, setContactState); // "setContactState"
+
10FSTR(CONTACT, state); // "state"
+
11FSTR(CONTACT, closed); // "closed"
+
12FSTR(CONTACT, open); // "open"
+
13
+
18template <typename T>
+
+ +
20 public:
+ +
+ +
23 private:
+
24 EventLimiter event_limiter;
+
25};
+
26
+
27template <typename T>
+ +
29: event_limiter(EVENT_LIMIT_SENSOR_STATE) {}
+
30
+
39template <typename T>
+
+ +
41 if (event_limiter) return false;
+
42 T* device = static_cast<T*>(this);
+
43
+ + + +
47 return device->sendEvent(eventMessage);
+
48}
+
+
+
49
+
50} // SINRICPRO_NAMESPACE
+
51
+
52template <typename T>
+
53using ContactSensor = SINRICPRO_NAMESPACE::ContactSensor<T>;
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
ContactSensor.
Definition ContactSensor.h:19
+
bool sendContactEvent(bool detected, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setContactState event to SinricPro Server indicating actual power state.
Definition ContactSensor.h:40
diff --git a/docs/_door_controller_8h_source.html b/docs/_door_controller_8h_source.html index 5588aad..fe0b3ca 100644 --- a/docs/_door_controller_8h_source.html +++ b/docs/_door_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/DoorController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/DoorController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,99 +81,114 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
DoorController.h
+
DoorController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../EventLimiter.h"
-
5 #include "../SinricProStrings.h"
-
6 
-
7 #include "../SinricProNamespace.h"
-
8 namespace SINRICPRO_NAMESPACE {
-
9 
-
10 FSTR(DOOR, setMode); // "setMode"
-
11 FSTR(DOOR, mode); // "mode"
-
12 FSTR(DOOR, Close); // "Close"
-
13 FSTR(DOOR, Open); // "Open"
-
14 
-
15 
-
29 using DoorCallback = std::function<bool(const String &, bool &)>;
-
30 
-
35 template <typename T>
- -
37  public:
- -
39 
- -
41  bool sendDoorStateEvent(bool state, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
42 
-
43  protected:
-
44  bool handleDoorController(SinricProRequest &request);
-
45 
-
46  private:
-
47  EventLimiter event_limiter;
-
48  DoorCallback doorCallback;
-
49 };
-
50 
-
51 template <typename T>
- -
53 : event_limiter(EVENT_LIMIT_STATE) {
-
54  T* device = static_cast<T*>(this);
-
55  device->registerRequestHandler(std::bind(&DoorController<T>::handleDoorController, this, std::placeholders::_1));
-
56 }
-
57 
-
65 template <typename T>
-
66 void DoorController<T>::onDoorState(DoorCallback cb) { doorCallback = cb; }
-
67 
-
77 template <typename T>
-
78 bool DoorController<T>::sendDoorStateEvent(bool state, String cause) {
-
79  if (event_limiter) return false;
-
80  T* device = static_cast<T*>(this);
-
81 
-
82  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_DOOR_setMode, cause.c_str());
-
83  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
84  state ? event_value[FSTR_DOOR_mode] = FSTR_DOOR_Close : event_value[FSTR_DOOR_mode] = FSTR_DOOR_Open;
-
85  return device->sendEvent(eventMessage);
-
86 }
-
87 
-
88 template <typename T>
-
89 bool DoorController<T>::handleDoorController(SinricProRequest &request) {
-
90  T* device = static_cast<T*>(this);
-
91 
-
92  bool success = false;
-
93  if (request.action == FSTR_DOOR_setMode && doorCallback) {
-
94  String mode = request.request_value[FSTR_DOOR_mode] | "";
-
95  bool state = mode == FSTR_DOOR_Close;
-
96  success = doorCallback(device->deviceId, state);
-
97  request.response_value[FSTR_DOOR_mode] = state ? FSTR_DOOR_Close : FSTR_DOOR_Open;
-
98  }
-
99  return success;
-
100 }
-
101 
-
102 } // SINRICPRO_NAMESPACE
-
103 
-
104 template <typename T>
-
105 using DoorController = SINRICPRO_NAMESPACE::DoorController<T>;
-
DoorController - only used for GarageDoor device and cannot used as capability for a custom device!
Definition: DoorController.h:36
-
bool sendDoorStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send DoorState event to update actual door state on SinricPro Server.
Definition: DoorController.h:78
-
void onDoorState(DoorCallback cb)
Set callback function for onDoorState request.
Definition: DoorController.h:66
-
std::function< bool(const String &, bool &)> DoorCallback
Callback definition for onDoorState function.
Definition: DoorController.h:29
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../EventLimiter.h"
+
5#include "../SinricProStrings.h"
+
6
+
7#include "../SinricProNamespace.h"
+
8namespace SINRICPRO_NAMESPACE {
+
9
+
10FSTR(DOOR, setMode); // "setMode"
+
11FSTR(DOOR, mode); // "mode"
+
12FSTR(DOOR, Close); // "Close"
+
13FSTR(DOOR, Open); // "Open"
+
14
+
15
+
29using DoorCallback = std::function<bool(const String &, bool &)>;
+
30
+
35template <typename T>
+
+ +
37 public:
+ +
39
+
+ +
+ +
42
+
43 protected:
+
44 bool handleDoorController(SinricProRequest &request);
+
45
+
46 private:
+
47 EventLimiter event_limiter;
+
48 DoorCallback doorCallback;
+
49};
+
50
+
51template <typename T>
+ +
53: event_limiter(EVENT_LIMIT_STATE) {
+
54 T* device = static_cast<T*>(this);
+
55 device->registerRequestHandler(std::bind(&DoorController<T>::handleDoorController, this, std::placeholders::_1));
+
56}
+
57
+
65template <typename T>
+ +
67
+
77template <typename T>
+
+ +
79 if (event_limiter) return false;
+
80 T* device = static_cast<T*>(this);
+
81
+ + + +
85 return device->sendEvent(eventMessage);
+
86}
+
+
+
87
+
88template <typename T>
+ +
90 T* device = static_cast<T*>(this);
+
91
+
92 bool success = false;
+
93 if (request.action == FSTR_DOOR_setMode && doorCallback) {
+
94 String mode = request.request_value[FSTR_DOOR_mode] | "";
+
95 bool state = mode == FSTR_DOOR_Close;
+
96 success = doorCallback(device->deviceId, state);
+ +
98 }
+
99 return success;
+
100}
+
101
+
102} // SINRICPRO_NAMESPACE
+
103
+
104template <typename T>
+
105using DoorController = SINRICPRO_NAMESPACE::DoorController<T>;
+
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
DoorController - only used for GarageDoor device and cannot used as capability for a custom device!
Definition DoorController.h:36
+
bool sendDoorStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send DoorState event to update actual door state on SinricPro Server.
Definition DoorController.h:78
+
void onDoorState(DoorCallback cb)
Set callback function for onDoorState request.
Definition DoorController.h:66
+
std::function< bool(const String &, bool &)> DoorCallback
Callback definition for onDoorState function.
Definition DoorController.h:29
diff --git a/docs/_doorbell_8h_source.html b/docs/_doorbell_8h_source.html index f19f8ca..a8f63ba 100644 --- a/docs/_doorbell_8h_source.html +++ b/docs/_doorbell_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/Doorbell.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/Doorbell.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,65 +81,78 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Doorbell.h
+
Doorbell.h
-
1 #pragma once
-
2 
-
3 #include "../EventLimiter.h"
-
4 #include "../SinricProStrings.h"
-
5 
-
6 #include "../SinricProNamespace.h"
-
7 namespace SINRICPRO_NAMESPACE {
-
8 
-
9 FSTR(DOORBELL, DoorbellPress); // "DoorbellPress"
-
10 FSTR(DOORBELL, state); // "state"
-
11 FSTR(DOORBELL, pressed); // "pressed"
-
12 
-
17 template <typename T>
-
18 class Doorbell {
-
19  public:
-
20  Doorbell();
-
21  bool sendDoorbellEvent(String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
22  private:
-
23  EventLimiter event_limiter;
-
24 };
-
25 
-
26 template <typename T>
- -
28 : event_limiter(EVENT_LIMIT_SENSOR_STATE) {}
-
29 
-
38 template <typename T>
-
39 bool Doorbell<T>::sendDoorbellEvent(String cause) {
-
40  if (event_limiter) return false;
-
41  T* device = static_cast<T*>(this);
-
42 
-
43  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_DOORBELL_DoorbellPress, cause.c_str());
-
44  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
45  event_value[FSTR_DOORBELL_state] = FSTR_DOORBELL_pressed;
-
46  return device->sendEvent(eventMessage);
-
47 }
-
48 
-
49 } // SINRICPRO_NAMESPACE
-
50 
-
51 template <typename T>
-
52 using Doorbell = SINRICPRO_NAMESPACE::Doorbell<T>;
-
Dorbell.
Definition: Doorbell.h:18
-
bool sendDoorbellEvent(String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send Doorbell event to SinricPro Server indicating someone pressed the doorbell button.
Definition: Doorbell.h:39
+
1#pragma once
+
2
+
3#include "../EventLimiter.h"
+
4#include "../SinricProStrings.h"
+
5
+
6#include "../SinricProNamespace.h"
+
7namespace SINRICPRO_NAMESPACE {
+
8
+
9FSTR(DOORBELL, DoorbellPress); // "DoorbellPress"
+
10FSTR(DOORBELL, state); // "state"
+
11FSTR(DOORBELL, pressed); // "pressed"
+
12
+
17template <typename T>
+
+
18class Doorbell {
+
19 public:
+
20 Doorbell();
+
+ +
22 private:
+
23 EventLimiter event_limiter;
+
24};
+
25
+
26template <typename T>
+ +
28: event_limiter(EVENT_LIMIT_SENSOR_STATE) {}
+
29
+
38template <typename T>
+
+ +
40 if (event_limiter) return false;
+
41 T* device = static_cast<T*>(this);
+
42
+ + + +
46 return device->sendEvent(eventMessage);
+
47}
+
+
+
48
+
49} // SINRICPRO_NAMESPACE
+
50
+
51template <typename T>
+
52using Doorbell = SINRICPRO_NAMESPACE::Doorbell<T>;
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
Dorbell.
Definition Doorbell.h:18
+
bool sendDoorbellEvent(String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send Doorbell event to SinricPro Server indicating someone pressed the doorbell button.
Definition Doorbell.h:39
diff --git a/docs/_equalizer_controller_8h_source.html b/docs/_equalizer_controller_8h_source.html index d69f6b6..ffc125a 100644 --- a/docs/_equalizer_controller_8h_source.html +++ b/docs/_equalizer_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/EqualizerController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/EqualizerController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,168 +81,187 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
EqualizerController.h
+
EqualizerController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../EventLimiter.h"
-
5 #include "../SinricProStrings.h"
-
6 
-
7 #include "../SinricProNamespace.h"
-
8 namespace SINRICPRO_NAMESPACE {
-
9 
-
10 FSTR(EQUALIZER, setBands); // "setBands"
-
11 FSTR(EQUALIZER, bands); // "bands"
-
12 FSTR(EQUALIZER, name); // "name"
-
13 FSTR(EQUALIZER, value); // "value"
-
14 FSTR(EQUALIZER, level); // "level"
-
15 FSTR(EQUALIZER, adjustBands); // "adjustBands"
-
16 FSTR(EQUALIZER, levelDelta); // "levelDelta"
-
17 FSTR(EQUALIZER, levelDirection); // "levelDirection"
-
18 FSTR(EQUALIZER, DOWN); // "DOWN"
-
19 FSTR(EQUALIZER, resetBands); // "resetBands"
-
20 
-
37 using SetBandsCallback = std::function<bool(const String &, const String &, int &)>;
-
38 
-
55 using AdjustBandsCallback = std::function<bool(const String &, const String &, int &)>;
-
56 
-
72 using ResetBandsCallback = std::function<bool(const String &, const String &, int &)>;
-
73 
-
78 template <typename T>
- -
80 public:
- -
82 
- - - -
86 
-
87  bool sendBandsEvent(String bands, int level, String cause = "PHYSICAL_INTERACTION");
-
88 
-
89 protected:
-
90  bool handleEqualizerController(SinricProRequest &request);
-
91 
-
92 private:
-
93  EventLimiter event_limiter;
-
94  SetBandsCallback setBandsCallback;
-
95  AdjustBandsCallback adjustBandsCallback;
-
96  ResetBandsCallback resetBandsCallback;
-
97 };
-
98 
-
99 template <typename T>
- -
101 : event_limiter(EVENT_LIMIT_STATE) {
-
102  T* device = static_cast<T*>(this);
-
103  device->registerRequestHandler(std::bind(&EqualizerController<T>::handleEqualizerController, this, std::placeholders::_1));
-
104 }
-
105 
-
113 template <typename T>
-
114 void EqualizerController<T>::onSetBands(SetBandsCallback cb) { setBandsCallback = cb; }
-
115 
-
123 template <typename T>
-
124 void EqualizerController<T>::onAdjustBands(AdjustBandsCallback cb) { adjustBandsCallback = cb; }
-
125 
-
133 template <typename T>
-
134 void EqualizerController<T>::onResetBands(ResetBandsCallback cb) { resetBandsCallback = cb; }
-
135 
-
146 template <typename T>
-
147 bool EqualizerController<T>::sendBandsEvent(String bands, int level, String cause) {
-
148  if (event_limiter) return false;
-
149  T* device = static_cast<T*>(this);
-
150 
-
151  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_EQUALIZER_setBands, cause.c_str());
-
152  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
153  JsonArray event_value_bands = event_value.createNestedArray(FSTR_EQUALIZER_bands);
-
154  JsonObject event_bands = event_value_bands.createNestedObject();
-
155  event_bands[FSTR_EQUALIZER_name] = bands;
-
156  event_bands[FSTR_EQUALIZER_value] = level;
-
157  return device->sendEvent(eventMessage);
-
158 }
-
159 
-
160 template <typename T>
-
161 bool EqualizerController<T>::handleEqualizerController(SinricProRequest &request) {
-
162  T* device = static_cast<T*>(this);
-
163  bool success = false;
-
164 
-
165  if (setBandsCallback && request.action == FSTR_EQUALIZER_setBands) {
-
166  JsonArray bands_array = request.request_value[FSTR_EQUALIZER_bands];
-
167  JsonArray response_value_bands = request.response_value.createNestedArray(FSTR_EQUALIZER_bands);
-
168 
-
169  for (size_t i = 0; i < bands_array.size(); i++) {
-
170  int level = bands_array[i][FSTR_EQUALIZER_level] | 0;
-
171  String bandsName = bands_array[i][FSTR_EQUALIZER_name] | "";
-
172  success = setBandsCallback(device->deviceId, bandsName, level);
-
173  JsonObject response_value_bands_i = response_value_bands.createNestedObject();
-
174  response_value_bands_i[FSTR_EQUALIZER_name] = bandsName;
-
175  response_value_bands_i[FSTR_EQUALIZER_level] = level;
-
176  }
-
177  return success;
-
178  }
-
179 
-
180  if (adjustBandsCallback && request.action == FSTR_EQUALIZER_adjustBands) {
-
181  JsonArray bands_array = request.request_value[FSTR_EQUALIZER_bands];
-
182  JsonArray response_value_bands = request.response_value.createNestedArray(FSTR_EQUALIZER_bands);
-
183 
-
184  for (size_t i = 0; i < bands_array.size(); i++) {
-
185  int levelDelta = bands_array[i][FSTR_EQUALIZER_levelDelta] | 1;
-
186  String direction = bands_array[i][FSTR_EQUALIZER_levelDirection];
-
187  if (direction == FSTR_EQUALIZER_DOWN)
-
188  levelDelta *= -1;
-
189  String bandsName = bands_array[i][FSTR_EQUALIZER_name] | "";
-
190  success = adjustBandsCallback(device->deviceId, bandsName, levelDelta);
-
191  JsonObject response_value_bands_i = response_value_bands.createNestedObject();
-
192  response_value_bands_i[FSTR_EQUALIZER_name] = bandsName;
-
193  response_value_bands_i[FSTR_EQUALIZER_level] = levelDelta;
-
194  }
-
195  return success;
-
196  }
-
197 
-
198  if (resetBandsCallback && request.action == FSTR_EQUALIZER_resetBands) {
-
199  JsonArray bands_array = request.request_value[FSTR_EQUALIZER_bands];
-
200  JsonArray response_value_bands = request.response_value.createNestedArray(FSTR_EQUALIZER_bands);
-
201 
-
202  for (size_t i = 0; i < bands_array.size(); i++) {
-
203  int level = 0;
-
204  String bandsName = bands_array[i][FSTR_EQUALIZER_name] | "";
-
205  success = adjustBandsCallback(device->deviceId, bandsName, level);
-
206  JsonObject response_value_bands_i = response_value_bands.createNestedObject();
-
207  response_value_bands_i[FSTR_EQUALIZER_name] = bandsName;
-
208  response_value_bands_i[FSTR_EQUALIZER_level] = level;
-
209  }
-
210  return success;
-
211  }
-
212 
-
213  return success;
-
214 }
-
215 
-
216 } // SINRICPRO_NAMESPACE
-
217 
-
218 template <typename T>
-
219 using EqualizerController = SINRICPRO_NAMESPACE::EqualizerController<T>;
-
EqualizerController.
Definition: EqualizerController.h:79
-
void onAdjustBands(AdjustBandsCallback cb)
Set callback function for adjustBands request.
Definition: EqualizerController.h:124
-
void onSetBands(SetBandsCallback cb)
Set callback function for setBands request.
Definition: EqualizerController.h:114
-
bool sendBandsEvent(String bands, int level, String cause="PHYSICAL_INTERACTION")
Send setBands event to SinricPro Server indicating bands level has changed.
Definition: EqualizerController.h:147
-
void onResetBands(ResetBandsCallback cb)
Set callback function for resetBands request.
Definition: EqualizerController.h:134
-
std::function< bool(const String &, const String &, int &)> AdjustBandsCallback
Callback definition for onAdjustBands function.
Definition: EqualizerController.h:55
-
std::function< bool(const String &, const String &, int &)> ResetBandsCallback
Callback definition for onResetBands function.
Definition: EqualizerController.h:72
-
std::function< bool(const String &, const String &, int &)> SetBandsCallback
Callback definition for onSetBands function.
Definition: EqualizerController.h:37
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../EventLimiter.h"
+
5#include "../SinricProStrings.h"
+
6
+
7#include "../SinricProNamespace.h"
+
8namespace SINRICPRO_NAMESPACE {
+
9
+
10FSTR(EQUALIZER, setBands); // "setBands"
+
11FSTR(EQUALIZER, bands); // "bands"
+
12FSTR(EQUALIZER, name); // "name"
+
13FSTR(EQUALIZER, value); // "value"
+
14FSTR(EQUALIZER, level); // "level"
+
15FSTR(EQUALIZER, adjustBands); // "adjustBands"
+
16FSTR(EQUALIZER, levelDelta); // "levelDelta"
+
17FSTR(EQUALIZER, levelDirection); // "levelDirection"
+
18FSTR(EQUALIZER, DOWN); // "DOWN"
+
19FSTR(EQUALIZER, resetBands); // "resetBands"
+
20
+
37using SetBandsCallback = std::function<bool(const String &, const String &, int &)>;
+
38
+
55using AdjustBandsCallback = std::function<bool(const String &, const String &, int &)>;
+
56
+
72using ResetBandsCallback = std::function<bool(const String &, const String &, int &)>;
+
73
+
78template <typename T>
+
+ +
80public:
+ +
82
+
+ +
+ +
+ +
86
+
+
87 bool sendBandsEvent(String bands, int level, String cause = "PHYSICAL_INTERACTION");
+
88
+
89protected:
+
90 bool handleEqualizerController(SinricProRequest &request);
+
91
+
92private:
+
93 EventLimiter event_limiter;
+
94 SetBandsCallback setBandsCallback;
+
95 AdjustBandsCallback adjustBandsCallback;
+
96 ResetBandsCallback resetBandsCallback;
+
97};
+
98
+
99template <typename T>
+ +
101: event_limiter(EVENT_LIMIT_STATE) {
+
102 T* device = static_cast<T*>(this);
+
103 device->registerRequestHandler(std::bind(&EqualizerController<T>::handleEqualizerController, this, std::placeholders::_1));
+
104}
+
105
+
113template <typename T>
+ +
115
+
123template <typename T>
+ +
125
+
133template <typename T>
+ +
135
+
146template <typename T>
+
+ +
148 if (event_limiter) return false;
+
149 T* device = static_cast<T*>(this);
+
150
+ + + +
154 JsonObject event_bands = event_value_bands.createNestedObject();
+ + +
157 return device->sendEvent(eventMessage);
+
158}
+
+
+
159
+
160template <typename T>
+ +
162 T* device = static_cast<T*>(this);
+
163 bool success = false;
+
164
+
165 if (setBandsCallback && request.action == FSTR_EQUALIZER_setBands) {
+ +
167 JsonArray response_value_bands = request.response_value.createNestedArray(FSTR_EQUALIZER_bands);
+
168
+
169 for (size_t i = 0; i < bands_array.size(); i++) {
+ + +
172 success = setBandsCallback(device->deviceId, bandsName, level);
+ + + +
176 }
+
177 return success;
+
178 }
+
179
+
180 if (adjustBandsCallback && request.action == FSTR_EQUALIZER_adjustBands) {
+
181 JsonArray bands_array = request.request_value[FSTR_EQUALIZER_bands];
+
182 JsonArray response_value_bands = request.response_value.createNestedArray(FSTR_EQUALIZER_bands);
+
183
+
184 for (size_t i = 0; i < bands_array.size(); i++) {
+
185 int levelDelta = bands_array[i][FSTR_EQUALIZER_levelDelta] | 1;
+
186 String direction = bands_array[i][FSTR_EQUALIZER_levelDirection];
+
187 if (direction == FSTR_EQUALIZER_DOWN)
+
188 levelDelta *= -1;
+
189 String bandsName = bands_array[i][FSTR_EQUALIZER_name] | "";
+
190 success = adjustBandsCallback(device->deviceId, bandsName, levelDelta);
+
191 JsonObject response_value_bands_i = response_value_bands.createNestedObject();
+
192 response_value_bands_i[FSTR_EQUALIZER_name] = bandsName;
+
193 response_value_bands_i[FSTR_EQUALIZER_level] = levelDelta;
+
194 }
+
195 return success;
+
196 }
+
197
+
198 if (resetBandsCallback && request.action == FSTR_EQUALIZER_resetBands) {
+
199 JsonArray bands_array = request.request_value[FSTR_EQUALIZER_bands];
+
200 JsonArray response_value_bands = request.response_value.createNestedArray(FSTR_EQUALIZER_bands);
+
201
+
202 for (size_t i = 0; i < bands_array.size(); i++) {
+
203 int level = 0;
+
204 String bandsName = bands_array[i][FSTR_EQUALIZER_name] | "";
+
205 success = adjustBandsCallback(device->deviceId, bandsName, level);
+
206 JsonObject response_value_bands_i = response_value_bands.createNestedObject();
+
207 response_value_bands_i[FSTR_EQUALIZER_name] = bandsName;
+
208 response_value_bands_i[FSTR_EQUALIZER_level] = level;
+
209 }
+
210 return success;
+
211 }
+
212
+
213 return success;
+
214}
+
215
+
216} // SINRICPRO_NAMESPACE
+
217
+
218template <typename T>
+
219using EqualizerController = SINRICPRO_NAMESPACE::EqualizerController<T>;
+
+
+
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
EqualizerController.
Definition EqualizerController.h:79
+
void onAdjustBands(AdjustBandsCallback cb)
Set callback function for adjustBands request.
Definition EqualizerController.h:124
+
void onSetBands(SetBandsCallback cb)
Set callback function for setBands request.
Definition EqualizerController.h:114
+
bool sendBandsEvent(String bands, int level, String cause="PHYSICAL_INTERACTION")
Send setBands event to SinricPro Server indicating bands level has changed.
Definition EqualizerController.h:147
+
void onResetBands(ResetBandsCallback cb)
Set callback function for resetBands request.
Definition EqualizerController.h:134
+
std::function< bool(const String &, const String &, int &)> AdjustBandsCallback
Callback definition for onAdjustBands function.
Definition EqualizerController.h:55
+
std::function< bool(const String &, const String &, int &)> ResetBandsCallback
Callback definition for onResetBands function.
Definition EqualizerController.h:72
+
std::function< bool(const String &, const String &, int &)> SetBandsCallback
Callback definition for onSetBands function.
Definition EqualizerController.h:37
diff --git a/docs/_event_limiter_8h_source.html b/docs/_event_limiter_8h_source.html index 40bd341..ebde08b 100644 --- a/docs/_event_limiter_8h_source.html +++ b/docs/_event_limiter_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/EventLimiter.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/EventLimiter.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,76 +81,85 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
EventLimiter.h
+
EventLimiter.h
-
1 #pragma once
-
2 
-
3 #include "SinricProConfig.h"
-
4 #include "SinricProNamespace.h"
-
5 
-
6 namespace SINRICPRO_NAMESPACE {
-
7 
-
8 class EventLimiter {
-
9  public:
-
10  EventLimiter(unsigned long minimum_distance = 1000);
-
11  operator bool();
-
12  private:
-
13  unsigned long minimum_distance;
-
14  unsigned long next_event;
-
15  unsigned long extra_distance;
-
16  unsigned long fail_counter;
-
17 };
-
18 
-
19 EventLimiter::EventLimiter(unsigned long minimum_distance)
-
20 : minimum_distance(minimum_distance)
-
21 , next_event(0)
-
22 , extra_distance(0)
-
23 , fail_counter(0) {}
-
24 
-
25 EventLimiter::operator bool() {
-
26  unsigned long current_millis = millis();
-
27  unsigned long fail_threshold = (minimum_distance / 4);
-
28 
-
29  if ( current_millis >= next_event ) {
-
30 
-
31  if ( fail_counter > fail_threshold ) {
-
32 
-
33  extra_distance += minimum_distance;
-
34  fail_counter = 0;
-
35 
-
36  } else {
-
37 
-
38  extra_distance = 0;
-
39 
-
40  }
-
41 
-
42  next_event = current_millis + minimum_distance + extra_distance;
-
43  return false;
-
44 
-
45  }
-
46 
-
47  fail_counter++;
-
48  if (fail_counter == fail_threshold) Serial.printf("WARNING: YOUR CODE SENDS EXCESSIVE EVENTS! EVENTS ARE NOW LIMITED BY AN ADDITIONAL DELAY OF %lu SECONDS. PLEASE CHECK YOUR CODE!\r\n", extra_distance / 1000);
-
49 
-
50  return true;
-
51 }
-
52 
-
53 } // SINRICPRO_NAMESPACE
+
1#pragma once
+
2
+
3#include "SinricProConfig.h"
+
4#include "SinricProNamespace.h"
+
5
+
+
6namespace SINRICPRO_NAMESPACE {
+
7
+
8class EventLimiter {
+
9 public:
+
10 EventLimiter(unsigned long minimum_distance = 1000);
+
11 operator bool();
+
12 private:
+
13 unsigned long minimum_distance;
+
14 unsigned long next_event;
+
15 unsigned long extra_distance;
+
16 unsigned long fail_counter;
+
17};
+
18
+
19EventLimiter::EventLimiter(unsigned long minimum_distance)
+
20: minimum_distance(minimum_distance)
+
21, next_event(0)
+
22, extra_distance(0)
+
23, fail_counter(0) {}
+
24
+
25EventLimiter::operator bool() {
+
26 unsigned long current_millis = millis();
+
27 unsigned long fail_threshold = (minimum_distance / 4);
+
28
+
29 if ( current_millis >= next_event ) {
+
30
+
31 if ( fail_counter > fail_threshold ) {
+
32
+
33 extra_distance += minimum_distance;
+
34 fail_counter = 0;
+
35
+
36 } else {
+
37
+
38 extra_distance = 0;
+
39
+
40 }
+
41
+
42 next_event = current_millis + minimum_distance + extra_distance;
+
43 return false;
+
44
+
45 }
+
46
+
47 fail_counter++;
+
48 if (fail_counter == fail_threshold) Serial.printf("WARNING: YOUR CODE SENDS EXCESSIVE EVENTS! EVENTS ARE NOW LIMITED BY AN ADDITIONAL DELAY OF %lu SECONDS. PLEASE CHECK YOUR CODE!\r\n", extra_distance / 1000);
+
49
+
50 return true;
+
51}
+
52
+
53} // SINRICPRO_NAMESPACE
+
+
AirQuality.
Definition AirQualitySensor.h:19
diff --git a/docs/_input_controller_8h_source.html b/docs/_input_controller_8h_source.html index 7c18d5b..a81c4c7 100644 --- a/docs/_input_controller_8h_source.html +++ b/docs/_input_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/InputController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/InputController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,101 +81,118 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
InputController.h
+
InputController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../EventLimiter.h"
-
5 #include "../SinricProStrings.h"
-
6 
-
7 #include "../SinricProNamespace.h"
-
8 namespace SINRICPRO_NAMESPACE {
-
9 
-
10 FSTR(INPUT, selectInput); // "selectInput"
-
11 FSTR(INPUT, input); // "input"
-
12 
-
27 using SelectInputCallback = std::function<bool(const String &, String &)>;
-
28 
-
29 
-
34 template <typename T>
- -
36  public:
- -
38 
- -
40  bool sendSelectInputEvent(String intput, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
41 
-
42  protected:
-
43  bool handleInputController(SinricProRequest &request);
-
44 
-
45  private:
-
46  EventLimiter event_limiter;
-
47  SelectInputCallback selectInputCallback;
-
48 };
-
49 
-
50 template <typename T>
- -
52 : event_limiter(EVENT_LIMIT_STATE) {
-
53  T* device = static_cast<T*>(this);
-
54  device->registerRequestHandler(std::bind(&InputController<T>::handleInputController, this, std::placeholders::_1));
-
55 }
-
56 
-
64 template <typename T>
- -
66  selectInputCallback = cb;
-
67 }
-
68 
-
78 template <typename T>
-
79 bool InputController<T>::sendSelectInputEvent(String input, String cause) {
-
80  if (event_limiter) return false;
-
81  T* device = static_cast<T*>(this);
-
82 
-
83  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_INPUT_selectInput, cause.c_str());
-
84  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
85  event_value[FSTR_INPUT_input] = input;
-
86  return device->sendEvent(eventMessage);
-
87 }
-
88 
-
89 template <typename T>
-
90 bool InputController<T>::handleInputController(SinricProRequest &request) {
-
91  T* device = static_cast<T*>(this);
-
92 
-
93  bool success = false;
-
94 
-
95  if (selectInputCallback && request.action == FSTR_INPUT_selectInput) {
-
96  String input = request.request_value[FSTR_INPUT_input];
-
97  success = selectInputCallback(device->deviceId, input);
-
98  request.response_value[FSTR_INPUT_input] = input;
-
99  return success;
-
100  }
-
101 
-
102  return success;
-
103 }
-
104 
-
105 } // SINRICPRO_NAMESPACE
-
106 
-
107 template <typename T>
-
108 using InputController = SINRICPRO_NAMESPACE::InputController<T>;
-
InputController.
Definition: InputController.h:35
-
void onSelectInput(SelectInputCallback cb)
Set callback function for selectInput request.
Definition: InputController.h:65
-
bool sendSelectInputEvent(String intput, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send selectInput event to SinricPro Server to report selected input.
Definition: InputController.h:79
-
std::function< bool(const String &, String &)> SelectInputCallback
Callback definition for onSelectInput function.
Definition: InputController.h:27
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../EventLimiter.h"
+
5#include "../SinricProStrings.h"
+
6
+
7#include "../SinricProNamespace.h"
+
8namespace SINRICPRO_NAMESPACE {
+
9
+
10FSTR(INPUT, selectInput); // "selectInput"
+
11FSTR(INPUT, input); // "input"
+
12
+
27using SelectInputCallback = std::function<bool(const String &, String &)>;
+
28
+
29
+
34template <typename T>
+
+ +
36 public:
+ +
38
+
+ +
+ +
41
+
42 protected:
+
43 bool handleInputController(SinricProRequest &request);
+
44
+
45 private:
+
46 EventLimiter event_limiter;
+
47 SelectInputCallback selectInputCallback;
+
48};
+
49
+
50template <typename T>
+ +
52: event_limiter(EVENT_LIMIT_STATE) {
+
53 T* device = static_cast<T*>(this);
+
54 device->registerRequestHandler(std::bind(&InputController<T>::handleInputController, this, std::placeholders::_1));
+
55}
+
56
+
64template <typename T>
+
+ +
66 selectInputCallback = cb;
+
67}
+
+
68
+
78template <typename T>
+
+ +
80 if (event_limiter) return false;
+
81 T* device = static_cast<T*>(this);
+
82
+ + + +
86 return device->sendEvent(eventMessage);
+
87}
+
+
+
88
+
89template <typename T>
+ +
91 T* device = static_cast<T*>(this);
+
92
+
93 bool success = false;
+
94
+
95 if (selectInputCallback && request.action == FSTR_INPUT_selectInput) {
+
96 String input = request.request_value[FSTR_INPUT_input];
+
97 success = selectInputCallback(device->deviceId, input);
+
98 request.response_value[FSTR_INPUT_input] = input;
+
99 return success;
+
100 }
+
101
+
102 return success;
+
103}
+
104
+
105} // SINRICPRO_NAMESPACE
+
106
+
107template <typename T>
+
108using InputController = SINRICPRO_NAMESPACE::InputController<T>;
+
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
InputController.
Definition InputController.h:35
+
void onSelectInput(SelectInputCallback cb)
Set callback function for selectInput request.
Definition InputController.h:65
+
bool sendSelectInputEvent(String intput, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send selectInput event to SinricPro Server to report selected input.
Definition InputController.h:79
+
std::function< bool(const String &, String &)> SelectInputCallback
Callback definition for onSelectInput function.
Definition InputController.h:27
diff --git a/docs/_keypad_controller_8h_source.html b/docs/_keypad_controller_8h_source.html index 1bbc73d..a8405fa 100644 --- a/docs/_keypad_controller_8h_source.html +++ b/docs/_keypad_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/KeypadController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/KeypadController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,84 +81,93 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
KeypadController.h
+
KeypadController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../SinricProStrings.h"
-
5 
-
6 #include "../SinricProNamespace.h"
-
7 namespace SINRICPRO_NAMESPACE {
-
8 
-
9 FSTR(KEYPAD, sendKeystroke); // "sendKeystroke"
-
10 FSTR(KEYPAD, keystroke); // "keystroke"
-
11 
-
26 using KeystrokeCallback = std::function<bool(const String &, String &)>;
-
27 
-
28 
-
33 template <typename T>
- -
35  public:
- -
37 
-
38  void onKeystroke(KeystrokeCallback cb);
-
39 
-
40  protected:
-
41  bool handleKeypadController(SinricProRequest &request);
-
42 
-
43  private:
-
44  KeystrokeCallback keystrokeCallback;
-
45 };
-
46 
-
47 template <typename T>
- -
49  T* device = static_cast<T*>(this);
-
50  device->registerRequestHandler(std::bind(&KeypadController<T>::handleKeypadController, this, std::placeholders::_1));
-
51 }
-
52 
-
60 template <typename T>
-
61 void KeypadController<T>::onKeystroke(KeystrokeCallback cb) { keystrokeCallback = cb; }
-
62 
-
63 
-
64 template <typename T>
-
65 bool KeypadController<T>::handleKeypadController(SinricProRequest &request) {
-
66  T* device = static_cast<T*>(this);
-
67 
-
68  bool success = false;
-
69  if (request.action != FSTR_KEYPAD_sendKeystroke) return false;
-
70 
-
71  if (keystrokeCallback) {
-
72  String keystroke = request.request_value[FSTR_KEYPAD_keystroke] | "";
-
73  success = keystrokeCallback(device->deviceId, keystroke);
-
74  request.response_value[FSTR_KEYPAD_keystroke] = keystroke;
-
75  return success;
-
76  }
-
77 
-
78  return success;
-
79 }
-
80 
-
81 } // SINRICPRO_NAMESPACE
-
82 
-
83 template <typename T>
-
84 using KeypadController = SINRICPRO_NAMESPACE::KeypadController<T>;
-
KeypadController.
Definition: KeypadController.h:34
-
std::function< bool(const String &, String &)> KeystrokeCallback
Callback definition for onKeystroke function.
Definition: KeypadController.h:26
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../SinricProStrings.h"
+
5
+
6#include "../SinricProNamespace.h"
+
7namespace SINRICPRO_NAMESPACE {
+
8
+
9FSTR(KEYPAD, sendKeystroke); // "sendKeystroke"
+
10FSTR(KEYPAD, keystroke); // "keystroke"
+
11
+
26using KeystrokeCallback = std::function<bool(const String &, String &)>;
+
27
+
28
+
33template <typename T>
+
+ +
35 public:
+ +
37
+
38 void onKeystroke(KeystrokeCallback cb);
+
39
+
40 protected:
+
41 bool handleKeypadController(SinricProRequest &request);
+
42
+
43 private:
+
44 KeystrokeCallback keystrokeCallback;
+
45};
+
+
46
+
47template <typename T>
+ +
49 T* device = static_cast<T*>(this);
+
50 device->registerRequestHandler(std::bind(&KeypadController<T>::handleKeypadController, this, std::placeholders::_1));
+
51}
+
52
+
60template <typename T>
+ +
62
+
63
+
64template <typename T>
+ +
66 T* device = static_cast<T*>(this);
+
67
+
68 bool success = false;
+
69 if (request.action != FSTR_KEYPAD_sendKeystroke) return false;
+
70
+
71 if (keystrokeCallback) {
+
72 String keystroke = request.request_value[FSTR_KEYPAD_keystroke] | "";
+
73 success = keystrokeCallback(device->deviceId, keystroke);
+
74 request.response_value[FSTR_KEYPAD_keystroke] = keystroke;
+
75 return success;
+
76 }
+
77
+
78 return success;
+
79}
+
80
+
81} // SINRICPRO_NAMESPACE
+
82
+
83template <typename T>
+
84using KeypadController = SINRICPRO_NAMESPACE::KeypadController<T>;
+
AirQuality.
Definition AirQualitySensor.h:19
+
KeypadController.
Definition KeypadController.h:34
+
std::function< bool(const String &, String &)> KeystrokeCallback
Callback definition for onKeystroke function.
Definition KeypadController.h:26
diff --git a/docs/_lock_controller_8h_source.html b/docs/_lock_controller_8h_source.html index 55f37e2..07a80be 100644 --- a/docs/_lock_controller_8h_source.html +++ b/docs/_lock_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/LockController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/LockController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,104 +81,121 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
LockController.h
+
LockController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../EventLimiter.h"
-
5 #include "../SinricProStrings.h"
-
6 
-
7 #include "../SinricProNamespace.h"
-
8 namespace SINRICPRO_NAMESPACE {
-
9 
-
10 FSTR(LOCK, setLockState); // "setLockState"
-
11 FSTR(LOCK, state); // "state"
-
12 FSTR(LOCK, LOCKED); // "LOCKED"
-
13 FSTR(LOCK, UNLOCKED); // "UNLOCKED"
-
14 FSTR(LOCK, lock); // "lock"
-
15 FSTR(LOCK, JAMMED); // "JAMMED"
-
16 
-
36 using LockStateCallback = std::function<bool(const String &, bool &)>; // void onLockState(const DeviceId &deviceId, bool& lockState);
-
37 
-
38 
-
43 template <typename T>
- -
45  public:
- -
47 
- -
49  bool sendLockStateEvent(bool state, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
50 
-
51  protected:
-
52  bool handleLockController(SinricProRequest &request);
-
53 
-
54  private:
-
55  EventLimiter event_limiter;
-
56  LockStateCallback lockStateCallback;
-
57 };
-
58 
-
59 template <typename T>
- -
61 : event_limiter(EVENT_LIMIT_STATE) {
-
62  T* device = static_cast<T*>(this);
-
63  device->registerRequestHandler(std::bind(&LockController<T>::handleLockController, this, std::placeholders::_1));
-
64 }
-
65 
-
73 template <typename T>
- -
75  lockStateCallback = cb;
-
76 }
-
77 
-
87 template <typename T>
-
88 bool LockController<T>::sendLockStateEvent(bool state, String cause) {
-
89  if (event_limiter) return false;
-
90  T* device = static_cast<T*>(this);
-
91 
-
92  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_LOCK_setLockState, cause.c_str());
-
93  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
94  state ? event_value[FSTR_LOCK_state] = FSTR_LOCK_LOCKED : event_value[FSTR_LOCK_state] = FSTR_LOCK_UNLOCKED;
-
95  return device->sendEvent(eventMessage);
-
96 }
-
97 
-
98 template <typename T>
-
99 bool LockController<T>::handleLockController(SinricProRequest &request) {
-
100  T* device = static_cast<T*>(this);
-
101 
-
102  bool success = false;
-
103 
-
104  if (request.action == FSTR_LOCK_setLockState && lockStateCallback) {
-
105  bool lockState = request.request_value[FSTR_LOCK_state] == FSTR_LOCK_lock ? true : false;
-
106  success = lockStateCallback(device->deviceId, lockState);
-
107  request.response_value[FSTR_LOCK_state] = success ? lockState ? FSTR_LOCK_LOCKED : FSTR_LOCK_UNLOCKED : FSTR_LOCK_JAMMED;
-
108  return success;
-
109  }
-
110  return success;
-
111 }
-
112 
-
113 } // SINRICPRO_NAMESPACE
-
114 
-
115 template <typename T>
-
116 using LockController = SINRICPRO_NAMESPACE::LockController<T>;
-
LockController.
Definition: LockController.h:44
-
bool sendLockStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send lockState event to SinricPro Server indicating actual lock state.
Definition: LockController.h:88
-
void onLockState(LockStateCallback cb)
Set callback function for setLockState request.
Definition: LockController.h:74
-
std::function< bool(const String &, bool &)> LockStateCallback
Callback definition for onLockState function.
Definition: LockController.h:36
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../EventLimiter.h"
+
5#include "../SinricProStrings.h"
+
6
+
7#include "../SinricProNamespace.h"
+
8namespace SINRICPRO_NAMESPACE {
+
9
+
10FSTR(LOCK, setLockState); // "setLockState"
+
11FSTR(LOCK, state); // "state"
+
12FSTR(LOCK, LOCKED); // "LOCKED"
+
13FSTR(LOCK, UNLOCKED); // "UNLOCKED"
+
14FSTR(LOCK, lock); // "lock"
+
15FSTR(LOCK, JAMMED); // "JAMMED"
+
16
+
36using LockStateCallback = std::function<bool(const String &, bool &)>; // void onLockState(const DeviceId &deviceId, bool& lockState);
+
37
+
38
+
43template <typename T>
+
+ +
45 public:
+ +
47
+
+ +
+ +
50
+
51 protected:
+
52 bool handleLockController(SinricProRequest &request);
+
53
+
54 private:
+
55 EventLimiter event_limiter;
+
56 LockStateCallback lockStateCallback;
+
57};
+
58
+
59template <typename T>
+ +
61: event_limiter(EVENT_LIMIT_STATE) {
+
62 T* device = static_cast<T*>(this);
+
63 device->registerRequestHandler(std::bind(&LockController<T>::handleLockController, this, std::placeholders::_1));
+
64}
+
65
+
73template <typename T>
+
+ +
75 lockStateCallback = cb;
+
76}
+
+
77
+
87template <typename T>
+
+ +
89 if (event_limiter) return false;
+
90 T* device = static_cast<T*>(this);
+
91
+ + + +
95 return device->sendEvent(eventMessage);
+
96}
+
+
+
97
+
98template <typename T>
+ +
100 T* device = static_cast<T*>(this);
+
101
+
102 bool success = false;
+
103
+
104 if (request.action == FSTR_LOCK_setLockState && lockStateCallback) {
+
105 bool lockState = request.request_value[FSTR_LOCK_state] == FSTR_LOCK_lock ? true : false;
+
106 success = lockStateCallback(device->deviceId, lockState);
+ +
108 return success;
+
109 }
+
110 return success;
+
111}
+
112
+
113} // SINRICPRO_NAMESPACE
+
114
+
115template <typename T>
+
116using LockController = SINRICPRO_NAMESPACE::LockController<T>;
+
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
LockController.
Definition LockController.h:44
+
bool sendLockStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send lockState event to SinricPro Server indicating actual lock state.
Definition LockController.h:88
+
void onLockState(LockStateCallback cb)
Set callback function for setLockState request.
Definition LockController.h:74
+
std::function< bool(const String &, bool &)> LockStateCallback
Callback definition for onLockState function.
Definition LockController.h:36
diff --git a/docs/_media_controller_8h_source.html b/docs/_media_controller_8h_source.html index 5785c37..e95a24a 100644 --- a/docs/_media_controller_8h_source.html +++ b/docs/_media_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/MediaController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/MediaController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,101 +81,118 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
MediaController.h
+
MediaController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../EventLimiter.h"
-
5 #include "../SinricProStrings.h"
-
6 
-
7 #include "../SinricProNamespace.h"
-
8 namespace SINRICPRO_NAMESPACE {
-
9 
-
10 FSTR(MEDIA, mediaControl); // "mediaControl"
-
11 FSTR(MEDIA, control); // "control"
-
12 
-
27 using MediaControlCallback = std::function<bool(const String &, String &)>;
-
28 
-
29 
-
34 template <typename T>
- -
36  public:
- -
38 
- -
40  bool sendMediaControlEvent(String mediaControl, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
41 
-
42  protected:
-
43  bool handleMediaController(SinricProRequest &request);
-
44 
-
45  private:
-
46  EventLimiter event_limiter;
-
47  MediaControlCallback mediaControlCallback;
-
48 };
-
49 
-
50 template <typename T>
- -
52 : event_limiter(EVENT_LIMIT_STATE) {
-
53  T* device = static_cast<T*>(this);
-
54  device->registerRequestHandler(std::bind(&MediaController<T>::handleMediaController, this, std::placeholders::_1));
-
55 }
-
56 
-
64 template <typename T>
- -
66  mediaControlCallback = cb;
-
67 }
-
68 
-
78 template <typename T>
-
79 bool MediaController<T>::sendMediaControlEvent(String mediaControl, String cause) {
-
80  if (event_limiter) return false;
-
81  T* device = static_cast<T*>(this);
-
82 
-
83  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_MEDIA_mediaControl, cause.c_str());
-
84  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
85  event_value[FSTR_MEDIA_control] = mediaControl;
-
86  return device->sendEvent(eventMessage);
-
87 }
-
88 
-
89 template <typename T>
-
90 bool MediaController<T>::handleMediaController(SinricProRequest &request) {
-
91  T* device = static_cast<T*>(this);
-
92 
-
93  bool success = false;
-
94 
-
95  if (mediaControlCallback && request.action == FSTR_MEDIA_mediaControl) {
-
96  String mediaControl = request.request_value[FSTR_MEDIA_control];
-
97  success = mediaControlCallback(device->deviceId, mediaControl);
-
98  request.response_value[FSTR_MEDIA_control] = mediaControl;
-
99  return success;
-
100  }
-
101 
-
102  return success;
-
103 }
-
104 
-
105 } // SINRICPRO_NAMESPACE
-
106 
-
107 template <typename T>
-
108 using MediaController = SINRICPRO_NAMESPACE::MediaController<T>;
-
MediaController.
Definition: MediaController.h:35
-
bool sendMediaControlEvent(String mediaControl, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send mediaControl event to SinricPro Server indicating devices media control state.
Definition: MediaController.h:79
-
void onMediaControl(MediaControlCallback cb)
Set callback function for mediaControl request.
Definition: MediaController.h:65
-
std::function< bool(const String &, String &)> MediaControlCallback
Callback definition for onMediaControl function.
Definition: MediaController.h:27
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../EventLimiter.h"
+
5#include "../SinricProStrings.h"
+
6
+
7#include "../SinricProNamespace.h"
+
8namespace SINRICPRO_NAMESPACE {
+
9
+
10FSTR(MEDIA, mediaControl); // "mediaControl"
+
11FSTR(MEDIA, control); // "control"
+
12
+
27using MediaControlCallback = std::function<bool(const String &, String &)>;
+
28
+
29
+
34template <typename T>
+
+ +
36 public:
+ +
38
+
+ +
+ +
41
+
42 protected:
+
43 bool handleMediaController(SinricProRequest &request);
+
44
+
45 private:
+
46 EventLimiter event_limiter;
+
47 MediaControlCallback mediaControlCallback;
+
48};
+
49
+
50template <typename T>
+ +
52: event_limiter(EVENT_LIMIT_STATE) {
+
53 T* device = static_cast<T*>(this);
+
54 device->registerRequestHandler(std::bind(&MediaController<T>::handleMediaController, this, std::placeholders::_1));
+
55}
+
56
+
64template <typename T>
+
+ +
66 mediaControlCallback = cb;
+
67}
+
+
68
+
78template <typename T>
+
+ +
80 if (event_limiter) return false;
+
81 T* device = static_cast<T*>(this);
+
82
+ + + +
86 return device->sendEvent(eventMessage);
+
87}
+
+
+
88
+
89template <typename T>
+ +
91 T* device = static_cast<T*>(this);
+
92
+
93 bool success = false;
+
94
+
95 if (mediaControlCallback && request.action == FSTR_MEDIA_mediaControl) {
+
96 String mediaControl = request.request_value[FSTR_MEDIA_control];
+
97 success = mediaControlCallback(device->deviceId, mediaControl);
+
98 request.response_value[FSTR_MEDIA_control] = mediaControl;
+
99 return success;
+
100 }
+
101
+
102 return success;
+
103}
+
104
+
105} // SINRICPRO_NAMESPACE
+
106
+
107template <typename T>
+
108using MediaController = SINRICPRO_NAMESPACE::MediaController<T>;
+
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
MediaController.
Definition MediaController.h:35
+
bool sendMediaControlEvent(String mediaControl, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send mediaControl event to SinricPro Server indicating devices media control state.
Definition MediaController.h:79
+
void onMediaControl(MediaControlCallback cb)
Set callback function for mediaControl request.
Definition MediaController.h:65
+
std::function< bool(const String &, String &)> MediaControlCallback
Callback definition for onMediaControl function.
Definition MediaController.h:27
diff --git a/docs/_mode_controller_8h_source.html b/docs/_mode_controller_8h_source.html index 3c70e07..29e8d03 100644 --- a/docs/_mode_controller_8h_source.html +++ b/docs/_mode_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/ModeController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/ModeController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,139 +81,162 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
ModeController.h
+
ModeController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../EventLimiter.h"
-
5 #include "../SinricProStrings.h"
-
6 
-
7 #include "../SinricProNamespace.h"
-
8 
-
9 namespace SINRICPRO_NAMESPACE {
-
10 
-
11 FSTR(MODE, setMode); // "setMode"
-
12 FSTR(MODE, mode); // "mode"
-
13 
-
28 using ModeCallback = std::function<bool(const String &, String &)>;
-
29 
-
45 using GenericModeCallback = std::function<bool(const String &, const String &, String &)>;
-
46 
-
47 
-
52 template <typename T>
- -
54  public:
- -
56 
- -
58  void onSetMode(const String& instance, GenericModeCallback cb);
-
59 
-
60  bool sendModeEvent(String mode, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
61  bool sendModeEvent(String instance, String mode, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
62 
-
63  protected:
-
64 
-
65  bool handleModeController(SinricProRequest &request);
-
66 
-
67  private:
-
68  EventLimiter event_limiter;
-
69  std::map<String, EventLimiter> event_limiter_generic;
-
70  ModeCallback setModeCallback;
-
71  std::map<String, GenericModeCallback> genericModeCallback;
-
72 };
-
73 
-
74 template <typename T>
- -
76 : event_limiter(EVENT_LIMIT_STATE) {
-
77  T* device = static_cast<T*>(this);
-
78  device->registerRequestHandler(std::bind(&ModeController<T>::handleModeController, this, std::placeholders::_1));
-
79 }
-
80 
-
88 template <typename T>
-
89 void ModeController<T>::onSetMode(ModeCallback cb) { setModeCallback = cb; }
-
90 
-
99 template <typename T>
-
100 void ModeController<T>::onSetMode(const String& instance, GenericModeCallback cb) {
-
101  genericModeCallback[instance] = cb;
-
102 }
-
103 
-
113 template <typename T>
-
114 bool ModeController<T>::sendModeEvent(String mode, String cause) {
-
115  if (event_limiter) return false;
-
116  T* device = static_cast<T*>(this);
-
117 
-
118  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_MODE_setMode, cause.c_str());
-
119  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
120  event_value[FSTR_MODE_mode] = mode;
-
121  return device->sendEvent(eventMessage);
-
122 }
-
123 
-
134 template <typename T>
-
135 bool ModeController<T>::sendModeEvent(String instance, String mode, String cause) {
-
136  if (event_limiter_generic.find(instance) == event_limiter_generic.end()) event_limiter_generic[instance] = EventLimiter(EVENT_LIMIT_STATE);
-
137  if (event_limiter_generic[instance]) return false;
-
138 
-
139  T* device = static_cast<T*>(this);
-
140 
-
141  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_MODE_setMode, cause.c_str());
-
142  eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_instanceId] = instance;
-
143  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
144  event_value[FSTR_MODE_mode] = mode;
-
145  return device->sendEvent(eventMessage);
-
146 }
-
147 
-
148 template <typename T>
-
149 bool ModeController<T>::handleModeController(SinricProRequest &request) {
-
150  T* device = static_cast<T*>(this);
-
151 
-
152  bool success = false;
-
153  if (request.action != FSTR_MODE_setMode) return false;
-
154  String mode = request.request_value[FSTR_MODE_mode] | "";
-
155 
-
156  if (request.instance != "") {
-
157  if (genericModeCallback.find(request.instance) != genericModeCallback.end()) {
-
158  success = genericModeCallback[request.instance](device->deviceId, request.instance, mode);
-
159  request.response_value[FSTR_MODE_mode] = mode;
-
160  return success;
-
161  } else return false;
-
162  } else {
-
163  if (setModeCallback) {
-
164  success = setModeCallback(device->deviceId, mode);
-
165  request.response_value[FSTR_MODE_mode] = mode;
-
166  return success;
-
167  }
-
168  }
-
169 
-
170  return success;
-
171 }
-
172 
-
173 } // SINRICPRO_NAMESPACE
-
174 
-
175 template <typename T>
-
176 using ModeController = SINRICPRO_NAMESPACE::ModeController<T>;
-
ModeController.
Definition: ModeController.h:53
-
bool sendModeEvent(String mode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setMode event to SinricPro Server indicating the mode has changed.
Definition: ModeController.h:114
-
void onSetMode(const String &instance, GenericModeCallback cb)
Set callback function for setMode request on a specific instance.
Definition: ModeController.h:100
-
bool sendModeEvent(String instance, String mode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setMode event to SinricPro Server indicating the mode on a specific instance has changed.
Definition: ModeController.h:135
-
void onSetMode(ModeCallback cb)
Set callback function for setMode request.
Definition: ModeController.h:89
-
std::function< bool(const String &, String &)> ModeCallback
Callback definition for onSetMode function.
Definition: ModeController.h:28
-
std::function< bool(const String &, const String &, String &)> GenericModeCallback
Callback definition for onSetMode function for a specific instance.
Definition: ModeController.h:45
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../EventLimiter.h"
+
5#include "../SinricProStrings.h"
+
6
+
7#include "../SinricProNamespace.h"
+
8
+
9namespace SINRICPRO_NAMESPACE {
+
10
+
11FSTR(MODE, setMode); // "setMode"
+
12FSTR(MODE, mode); // "mode"
+
13
+
28using ModeCallback = std::function<bool(const String &, String &)>;
+
29
+
45using GenericModeCallback = std::function<bool(const String &, const String &, String &)>;
+
46
+
47
+
52template <typename T>
+
+ +
54 public:
+ +
56
+
+ +
+
58 void onSetMode(const String& instance, GenericModeCallback cb);
+
59
+
+ +
+
61 bool sendModeEvent(String instance, String mode, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
+
62
+
63 protected:
+
64
+
65 bool handleModeController(SinricProRequest &request);
+
66
+
67 private:
+
68 EventLimiter event_limiter;
+
69 std::map<String, EventLimiter> event_limiter_generic;
+
70 ModeCallback setModeCallback;
+
71 std::map<String, GenericModeCallback> genericModeCallback;
+
72};
+
73
+
74template <typename T>
+ +
76: event_limiter(EVENT_LIMIT_STATE) {
+
77 T* device = static_cast<T*>(this);
+
78 device->registerRequestHandler(std::bind(&ModeController<T>::handleModeController, this, std::placeholders::_1));
+
79}
+
80
+
88template <typename T>
+
89void ModeController<T>::onSetMode(ModeCallback cb) { setModeCallback = cb; }
+
90
+
99template <typename T>
+
+ +
101 genericModeCallback[instance] = cb;
+
102}
+
+
103
+
113template <typename T>
+
+ +
115 if (event_limiter) return false;
+
116 T* device = static_cast<T*>(this);
+
117
+ + + +
121 return device->sendEvent(eventMessage);
+
122}
+
+
123
+
134template <typename T>
+
+
135bool ModeController<T>::sendModeEvent(String instance, String mode, String cause) {
+
136 if (event_limiter_generic.find(instance) == event_limiter_generic.end()) event_limiter_generic[instance] = EventLimiter(EVENT_LIMIT_STATE);
+
137 if (event_limiter_generic[instance]) return false;
+
138
+
139 T* device = static_cast<T*>(this);
+
140
+ + + + +
145 return device->sendEvent(eventMessage);
+
146}
+
+
+
147
+
148template <typename T>
+
149bool ModeController<T>::handleModeController(SinricProRequest &request) {
+
150 T* device = static_cast<T*>(this);
+
151
+
152 bool success = false;
+
153 if (request.action != FSTR_MODE_setMode) return false;
+
154 String mode = request.request_value[FSTR_MODE_mode] | "";
+
155
+
156 if (request.instance != "") {
+
157 if (genericModeCallback.find(request.instance) != genericModeCallback.end()) {
+
158 success = genericModeCallback[request.instance](device->deviceId, request.instance, mode);
+
159 request.response_value[FSTR_MODE_mode] = mode;
+
160 return success;
+
161 } else return false;
+
162 } else {
+
163 if (setModeCallback) {
+
164 success = setModeCallback(device->deviceId, mode);
+
165 request.response_value[FSTR_MODE_mode] = mode;
+
166 return success;
+
167 }
+
168 }
+
169
+
170 return success;
+
171}
+
172
+
173} // SINRICPRO_NAMESPACE
+
174
+
175template <typename T>
+
176using ModeController = SINRICPRO_NAMESPACE::ModeController<T>;
+
+
+
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
ModeController.
Definition ModeController.h:53
+
bool sendModeEvent(String mode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setMode event to SinricPro Server indicating the mode has changed.
Definition ModeController.h:114
+
void onSetMode(const String &instance, GenericModeCallback cb)
Set callback function for setMode request on a specific instance.
Definition ModeController.h:100
+
bool sendModeEvent(String instance, String mode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setMode event to SinricPro Server indicating the mode on a specific instance has changed.
Definition ModeController.h:135
+
void onSetMode(ModeCallback cb)
Set callback function for setMode request.
Definition ModeController.h:89
+
std::function< bool(const String &, String &)> ModeCallback
Callback definition for onSetMode function.
Definition ModeController.h:28
+
std::function< bool(const String &, const String &, String &)> GenericModeCallback
Callback definition for onSetMode function for a specific instance.
Definition ModeController.h:45
diff --git a/docs/_motion_sensor_8h_source.html b/docs/_motion_sensor_8h_source.html index 2c73224..ac9a1cc 100644 --- a/docs/_motion_sensor_8h_source.html +++ b/docs/_motion_sensor_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/MotionSensor.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/MotionSensor.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,66 +81,79 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
MotionSensor.h
+
MotionSensor.h
-
1 #pragma once
-
2 
-
3 #include "../EventLimiter.h"
-
4 #include "../SinricProStrings.h"
-
5 
-
6 #include "../SinricProNamespace.h"
-
7 namespace SINRICPRO_NAMESPACE {
-
8 
-
9 FSTR(MOTION, motion); // "motion"
-
10 FSTR(MOTION, state); // "state"
-
11 FSTR(MOTION, detected); // "detected"
-
12 FSTR(MOTION, notDetected); // "notDetected"
-
13 
-
18 template <typename T>
-
19 class MotionSensor {
-
20  public:
-
21  MotionSensor();
-
22  bool sendMotionEvent(bool detected, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
23  private:
-
24  EventLimiter event_limiter;
-
25 };
-
26 
-
27 template <typename T>
- -
29 : event_limiter(EVENT_LIMIT_SENSOR_STATE) {}
-
30 
-
40 template <typename T>
-
41 bool MotionSensor<T>::sendMotionEvent(bool detected, String cause) {
-
42  if (event_limiter) return false;
-
43  T* device = static_cast<T*>(this);
-
44 
-
45  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_MOTION_motion, cause.c_str());
-
46  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
47  event_value[FSTR_MOTION_state] = detected ? FSTR_MOTION_detected : FSTR_MOTION_notDetected;
-
48  return device->sendEvent(eventMessage);
-
49 }
-
50 
-
51 } // SINRICPRO_NAMESPACE
-
52 
-
53 template <typename T>
-
54 using MotionSensor = SINRICPRO_NAMESPACE::MotionSensor<T>;
-
MotionSensor.
Definition: MotionSensor.h:19
-
bool sendMotionEvent(bool detected, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Sending motion detection state to SinricPro server.
Definition: MotionSensor.h:41
+
1#pragma once
+
2
+
3#include "../EventLimiter.h"
+
4#include "../SinricProStrings.h"
+
5
+
6#include "../SinricProNamespace.h"
+
7namespace SINRICPRO_NAMESPACE {
+
8
+
9FSTR(MOTION, motion); // "motion"
+
10FSTR(MOTION, state); // "state"
+
11FSTR(MOTION, detected); // "detected"
+
12FSTR(MOTION, notDetected); // "notDetected"
+
13
+
18template <typename T>
+
+ +
20 public:
+ +
+ +
23 private:
+
24 EventLimiter event_limiter;
+
25};
+
26
+
27template <typename T>
+ +
29: event_limiter(EVENT_LIMIT_SENSOR_STATE) {}
+
30
+
40template <typename T>
+
+ +
42 if (event_limiter) return false;
+
43 T* device = static_cast<T*>(this);
+
44
+ + + +
48 return device->sendEvent(eventMessage);
+
49}
+
+
+
50
+
51} // SINRICPRO_NAMESPACE
+
52
+
53template <typename T>
+
54using MotionSensor = SINRICPRO_NAMESPACE::MotionSensor<T>;
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
MotionSensor.
Definition MotionSensor.h:19
+
bool sendMotionEvent(bool detected, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Sending motion detection state to SinricPro server.
Definition MotionSensor.h:41
diff --git a/docs/_mute_controller_8h_source.html b/docs/_mute_controller_8h_source.html index 21aecb4..da4c742 100644 --- a/docs/_mute_controller_8h_source.html +++ b/docs/_mute_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/MuteController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/MuteController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,97 +81,112 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
MuteController.h
+
MuteController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../EventLimiter.h"
-
5 #include "../SinricProStrings.h"
-
6 
-
7 #include "../SinricProNamespace.h"
-
8 namespace SINRICPRO_NAMESPACE {
-
9 
-
10 FSTR(MUTE, mute); // "mute"
-
11 FSTR(MUTE, setMute); // "setMute"
-
12 
-
27 using MuteCallback = std::function<bool(const String &, bool &)>;
-
28 
-
29 
-
34 template <typename T>
- -
36  public:
- -
38 
-
39  void onMute(MuteCallback cb);
-
40  bool sendMuteEvent(bool mute, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
41  protected:
-
42  bool handleMuteController(SinricProRequest &request);
-
43 
-
44  private:
-
45  EventLimiter event_limiter;
-
46  MuteCallback muteCallback;
-
47 };
-
48 
-
49 template <typename T>
- -
51 :event_limiter(EVENT_LIMIT_STATE) {
-
52  T* device = static_cast<T*>(this);
-
53  device->registerRequestHandler(std::bind(&MuteController<T>::handleMuteController, this, std::placeholders::_1));
-
54 }
-
55 
-
63 template <typename T>
-
64 void MuteController<T>::onMute(MuteCallback cb) { muteCallback = cb; }
-
65 
-
75 template <typename T>
-
76 bool MuteController<T>::sendMuteEvent(bool mute, String cause) {
-
77  if (event_limiter) return false;
-
78  T* device = static_cast<T*>(this);
-
79 
-
80  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_MUTE_setMute, cause.c_str());
-
81  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
82  event_value[FSTR_MUTE_mute] = mute;
-
83  return device->sendEvent(eventMessage);
-
84 }
-
85 
-
86 template <typename T>
-
87 bool MuteController<T>::handleMuteController(SinricProRequest &request) {
-
88  T* device = static_cast<T*>(this);
-
89 
-
90  bool success = false;
-
91 
-
92  if (muteCallback && request.action == FSTR_MUTE_setMute) {
-
93  bool mute = request.request_value[FSTR_MUTE_mute];
-
94  success = muteCallback(device->deviceId, mute);
-
95  request.response_value[FSTR_MUTE_mute] = mute;
-
96  return success;
-
97  }
-
98  return success;
-
99 }
-
100 
-
101 } // SINRICPRO_NAMESPACE
-
102 
-
103 template <typename T>
-
104 using MuteController = SINRICPRO_NAMESPACE::MuteController<T>;
-
MuteController.
Definition: MuteController.h:35
-
bool sendMuteEvent(bool mute, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setMute event to SinricPro Server indicating actual mute state.
Definition: MuteController.h:76
-
void onMute(MuteCallback cb)
Set callback function for setMute request.
Definition: MuteController.h:64
-
std::function< bool(const String &, bool &)> MuteCallback
Callback definition for onMute function.
Definition: MuteController.h:27
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../EventLimiter.h"
+
5#include "../SinricProStrings.h"
+
6
+
7#include "../SinricProNamespace.h"
+
8namespace SINRICPRO_NAMESPACE {
+
9
+
10FSTR(MUTE, mute); // "mute"
+
11FSTR(MUTE, setMute); // "setMute"
+
12
+
27using MuteCallback = std::function<bool(const String &, bool &)>;
+
28
+
29
+
34template <typename T>
+
+ +
36 public:
+ +
38
+
+ +
+ +
41 protected:
+
42 bool handleMuteController(SinricProRequest &request);
+
43
+
44 private:
+
45 EventLimiter event_limiter;
+
46 MuteCallback muteCallback;
+
47};
+
48
+
49template <typename T>
+ +
51:event_limiter(EVENT_LIMIT_STATE) {
+
52 T* device = static_cast<T*>(this);
+
53 device->registerRequestHandler(std::bind(&MuteController<T>::handleMuteController, this, std::placeholders::_1));
+
54}
+
55
+
63template <typename T>
+ +
65
+
75template <typename T>
+
+ +
77 if (event_limiter) return false;
+
78 T* device = static_cast<T*>(this);
+
79
+ + + +
83 return device->sendEvent(eventMessage);
+
84}
+
+
+
85
+
86template <typename T>
+ +
88 T* device = static_cast<T*>(this);
+
89
+
90 bool success = false;
+
91
+
92 if (muteCallback && request.action == FSTR_MUTE_setMute) {
+
93 bool mute = request.request_value[FSTR_MUTE_mute];
+
94 success = muteCallback(device->deviceId, mute);
+
95 request.response_value[FSTR_MUTE_mute] = mute;
+
96 return success;
+
97 }
+
98 return success;
+
99}
+
100
+
101} // SINRICPRO_NAMESPACE
+
102
+
103template <typename T>
+
104using MuteController = SINRICPRO_NAMESPACE::MuteController<T>;
+
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
MuteController.
Definition MuteController.h:35
+
bool sendMuteEvent(bool mute, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setMute event to SinricPro Server indicating actual mute state.
Definition MuteController.h:76
+
void onMute(MuteCallback cb)
Set callback function for setMute request.
Definition MuteController.h:64
+
std::function< bool(const String &, bool &)> MuteCallback
Callback definition for onMute function.
Definition MuteController.h:27
diff --git a/docs/_percentage_controller_8h_source.html b/docs/_percentage_controller_8h_source.html index cc719f4..4c85210 100644 --- a/docs/_percentage_controller_8h_source.html +++ b/docs/_percentage_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/PercentageController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/PercentageController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,115 +81,123 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
PercentageController.h
+
PercentageController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../EventLimiter.h"
-
5 #include "../SinricProStrings.h"
-
6 
-
7 #include "../SinricProNamespace.h"
-
8 namespace SINRICPRO_NAMESPACE {
-
9 
-
10 FSTR(PERCENTAGE, setPercentage); // "setPercentage"
-
11 FSTR(PERCENTAGE, percentage); // "percentage"
-
12 FSTR(PERCENTAGE, adjustPercentage); // "adjustPercentage"
-
13 
-
29 using SetPercentageCallback = std::function<bool(const String &, int &)>;
-
44 using AdjustPercentageCallback = std::function<bool(const String &, int &)>;
-
45 
-
46 
-
51 template <typename T>
- -
53  public:
- -
55 
-
56  void onSetPercentage(SetPercentageCallback cb);
-
57  void onAdjustPercentage(AdjustPercentageCallback cb);
-
58 
-
59  bool sendSetPercentageEvent(int percentage, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
60 
-
61  protected:
-
62  bool handlePercentageController(SinricProRequest &request);
-
63 
-
64  private:
-
65  EventLimiter event_limiter;
-
66  SetPercentageCallback percentageCallback;
-
67  AdjustPercentageCallback adjustPercentageCallback;
-
68 };
-
69 
-
70 template <typename T>
- -
72 : event_limiter(EVENT_LIMIT_STATE) {
-
73  T* device = static_cast<T*>(this);
-
74  device->registerRequestHandler(std::bind(&PercentageController<T>::handlePercentageController, this, std::placeholders::_1));
-
75 }
-
76 
-
84 template <typename T>
- -
86 
-
94 template <typename T>
-
95 void PercentageController<T>::onAdjustPercentage(AdjustPercentageCallback cb) { adjustPercentageCallback = cb; }
-
96 
-
106 template <typename T>
-
107 bool PercentageController<T>::sendSetPercentageEvent(int percentage, String cause) {
-
108  if (event_limiter) return false;
-
109  T* device = static_cast<T*>(this);
-
110 
-
111  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_PERCENTAGE_setPercentage, cause.c_str());
-
112  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
113  event_value[FSTR_PERCENTAGE_percentage] = percentage;
-
114  return device->sendEvent(eventMessage);
-
115 }
-
116 
-
117 template <typename T>
-
118 bool PercentageController<T>::handlePercentageController(SinricProRequest &request) {
-
119  T* device = static_cast<T*>(this);
-
120 
-
121  bool success = false;
-
122 
-
123  if (percentageCallback && request.action == FSTR_PERCENTAGE_setPercentage) {
-
124  int percentage = request.request_value[FSTR_PERCENTAGE_percentage];
-
125  success = percentageCallback(device->deviceId, percentage);
-
126  request.response_value[FSTR_PERCENTAGE_percentage] = percentage;
-
127  return success;
-
128  }
-
129 
-
130  if (adjustPercentageCallback && request.action == FSTR_PERCENTAGE_adjustPercentage) {
-
131  int percentage = request.request_value[FSTR_PERCENTAGE_percentage];
-
132  success = adjustPercentageCallback(device->deviceId, percentage);
-
133  request.response_value[FSTR_PERCENTAGE_percentage] = percentage;
-
134  return success;
-
135  }
-
136  return success;
-
137 }
-
138 
-
139 } // SINRICPRO_NAMESPACE
-
140 
-
141 template <typename T>
-
142 using PercentageController = SINRICPRO_NAMESPACE::PercentageController<T>;
-
PercentageController.
Definition: PercentageController.h:52
-
void onAdjustPercentage(AdjustPercentageCallback cb)
Set callback function for adjustPercentage request.
Definition: PercentageController.h:95
-
bool sendSetPercentageEvent(int percentage, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setPercentage event to SinricPro Server indicating actual percentage has changed.
Definition: PercentageController.h:107
-
void onSetPercentage(SetPercentageCallback cb)
Set callback function for setPercentage request.
Definition: PercentageController.h:85
-
std::function< bool(const String &, int &)> AdjustPercentageCallback
Callback definition for onAdjustPercentage function.
Definition: PercentageController.h:44
-
std::function< bool(const String &, int &)> SetPercentageCallback
Callback definition for onSetPercentage function.
Definition: PercentageController.h:29
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../EventLimiter.h"
+
5#include "../SinricProStrings.h"
+
6
+
7#include "../SinricProNamespace.h"
+
8namespace SINRICPRO_NAMESPACE {
+
9
+
10FSTR(PERCENTAGE, setPercentage); // "setPercentage"
+
11FSTR(PERCENTAGE, percentage); // "percentage"
+
12FSTR(PERCENTAGE, adjustPercentage); // "adjustPercentage"
+
13
+
29using SetPercentageCallback = std::function<bool(const String &, int &)>;
+
44using AdjustPercentageCallback = std::function<bool(const String &, int &)>;
+
45
+
46
+
51template <typename T>
+
+ +
53 public:
+ +
55
+
56 void onSetPercentage(SetPercentageCallback cb);
+
57 void onAdjustPercentage(AdjustPercentageCallback cb);
+
58
+
59 bool sendSetPercentageEvent(int percentage, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
+
60
+
61 protected:
+
62 bool handlePercentageController(SinricProRequest &request);
+
63
+
64 private:
+
65 EventLimiter event_limiter;
+
66 SetPercentageCallback percentageCallback;
+
67 AdjustPercentageCallback adjustPercentageCallback;
+
68};
+
+
69
+
70template <typename T>
+ +
72: event_limiter(EVENT_LIMIT_STATE) {
+
73 T* device = static_cast<T*>(this);
+
74 device->registerRequestHandler(std::bind(&PercentageController<T>::handlePercentageController, this, std::placeholders::_1));
+
75}
+
76
+
84template <typename T>
+ +
86
+
94template <typename T>
+ +
96
+
106template <typename T>
+
+ +
108 if (event_limiter) return false;
+
109 T* device = static_cast<T*>(this);
+
110
+ + + +
114 return device->sendEvent(eventMessage);
+
115}
+
+
116
+
117template <typename T>
+ +
119 T* device = static_cast<T*>(this);
+
120
+
121 bool success = false;
+
122
+
123 if (percentageCallback && request.action == FSTR_PERCENTAGE_setPercentage) {
+
124 int percentage = request.request_value[FSTR_PERCENTAGE_percentage];
+
125 success = percentageCallback(device->deviceId, percentage);
+ +
127 return success;
+
128 }
+
129
+
130 if (adjustPercentageCallback && request.action == FSTR_PERCENTAGE_adjustPercentage) {
+
131 int percentage = request.request_value[FSTR_PERCENTAGE_percentage];
+
132 success = adjustPercentageCallback(device->deviceId, percentage);
+
133 request.response_value[FSTR_PERCENTAGE_percentage] = percentage;
+
134 return success;
+
135 }
+
136 return success;
+
137}
+
138
+
139} // SINRICPRO_NAMESPACE
+
140
+
141template <typename T>
+
142using PercentageController = SINRICPRO_NAMESPACE::PercentageController<T>;
+
AirQuality.
Definition AirQualitySensor.h:19
+
PercentageController.
Definition PercentageController.h:52
+
std::function< bool(const String &, int &)> AdjustPercentageCallback
Callback definition for onAdjustPercentage function.
Definition PercentageController.h:44
+
std::function< bool(const String &, int &)> SetPercentageCallback
Callback definition for onSetPercentage function.
Definition PercentageController.h:29
diff --git a/docs/_power_level_controller_8h_source.html b/docs/_power_level_controller_8h_source.html index 5ecce80..353771c 100644 --- a/docs/_power_level_controller_8h_source.html +++ b/docs/_power_level_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/PowerLevelController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/PowerLevelController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,118 +81,139 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
PowerLevelController.h
+
PowerLevelController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../EventLimiter.h"
-
5 #include "../SinricProStrings.h"
-
6 
-
7 #include "../SinricProNamespace.h"
-
8 namespace SINRICPRO_NAMESPACE {
-
9 
-
10 FSTR(POWERLEVEL, setPowerLevel); // "setPowerLevel"
-
11 FSTR(POWERLEVEL, powerLevel); // "powerLevel"
-
12 FSTR(POWERLEVEL, adjustPowerLevel); // "adjustPowerLevel"
-
13 FSTR(POWERLEVEL, powerLevelDelta); // "powerLevelDelta"
-
14 
-
30 using SetPowerLevelCallback = std::function<bool(const String &, int &)>;
-
45 using AdjustPowerLevelCallback = std::function<bool(const String &, int &)>;
-
46 
-
47 
-
52 template <typename T>
- -
54  public:
- -
56 
- - -
59  bool sendPowerLevelEvent(int powerLevel, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
60 
-
61  protected:
-
62  bool handlePowerLevelController(SinricProRequest &request);
-
63 
-
64  private:
-
65  EventLimiter event_limiter;
-
66  SetPowerLevelCallback setPowerLevelCallback;
-
67  AdjustPowerLevelCallback adjustPowerLevelCallback;
-
68 };
-
69 
-
70 template <typename T>
- -
72 : event_limiter(EVENT_LIMIT_STATE) {
-
73  T* device = static_cast<T*>(this);
-
74  device->registerRequestHandler(std::bind(&PowerLevelController<T>::handlePowerLevelController, this, std::placeholders::_1));
-
75 }
-
76 
-
83 template <typename T>
- -
85  setPowerLevelCallback = cb;
-
86 }
-
87 
-
94 template <typename T>
- -
96 {
-
97  adjustPowerLevelCallback = cb;
-
98 }
-
99 
-
109 template <typename T>
-
110 bool PowerLevelController<T>::sendPowerLevelEvent(int powerLevel, String cause) {
-
111  if (event_limiter) return false;
-
112  T* device = static_cast<T*>(this);
-
113 
-
114  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_POWERLEVEL_setPowerLevel, cause.c_str());
-
115  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
116  event_value[FSTR_POWERLEVEL_powerLevel] = powerLevel;
-
117  return device->sendEvent(eventMessage);
-
118 }
-
119 
-
120 template <typename T>
-
121 bool PowerLevelController<T>::handlePowerLevelController(SinricProRequest &request) {
-
122  T* device = static_cast<T*>(this);
-
123 
-
124  bool success = false;
-
125 
-
126  if (setPowerLevelCallback && request.action == FSTR_POWERLEVEL_setPowerLevel) {
-
127  int powerLevel = request.request_value[FSTR_POWERLEVEL_powerLevel];
-
128  success = setPowerLevelCallback(device->deviceId, powerLevel);
-
129  request.response_value[FSTR_POWERLEVEL_powerLevel] = powerLevel;
-
130  }
-
131 
-
132  if (adjustPowerLevelCallback && request.action == FSTR_POWERLEVEL_adjustPowerLevel) {
-
133  int powerLevelDelta = request.request_value[FSTR_POWERLEVEL_powerLevelDelta];
-
134  success = adjustPowerLevelCallback(device->deviceId, powerLevelDelta);
-
135  request.response_value[FSTR_POWERLEVEL_powerLevel] = powerLevelDelta;
-
136  }
-
137  return success;
-
138 }
-
139 
-
140 } // SINRICPRO_NAMESPACE
-
141 
-
142 template <typename T>
-
143 using PowerLevelController = SINRICPRO_NAMESPACE::PowerLevelController<T>;
-
PowerLevelController.
Definition: PowerLevelController.h:53
-
void onPowerLevel(SetPowerLevelCallback cb)
Set callback function for setPowerLevel request.
Definition: PowerLevelController.h:84
-
void onAdjustPowerLevel(AdjustPowerLevelCallback cb)
Set callback function for adjustPowerLevel request.
Definition: PowerLevelController.h:95
-
bool sendPowerLevelEvent(int powerLevel, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setPowerLevel event to SinricPro Server indicating actual power level.
Definition: PowerLevelController.h:110
-
std::function< bool(const String &, int &)> AdjustPowerLevelCallback
Definition for onAdjustPowerLevel callback.
Definition: PowerLevelController.h:45
-
std::function< bool(const String &, int &)> SetPowerLevelCallback
Definition for setPowerLevel callback.
Definition: PowerLevelController.h:30
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../EventLimiter.h"
+
5#include "../SinricProStrings.h"
+
6
+
7#include "../SinricProNamespace.h"
+
8namespace SINRICPRO_NAMESPACE {
+
9
+
10FSTR(POWERLEVEL, setPowerLevel); // "setPowerLevel"
+
11FSTR(POWERLEVEL, powerLevel); // "powerLevel"
+
12FSTR(POWERLEVEL, adjustPowerLevel); // "adjustPowerLevel"
+
13FSTR(POWERLEVEL, powerLevelDelta); // "powerLevelDelta"
+
14
+
30using SetPowerLevelCallback = std::function<bool(const String &, int &)>;
+
45using AdjustPowerLevelCallback = std::function<bool(const String &, int &)>;
+
46
+
47
+
52template <typename T>
+
+ +
54 public:
+ +
56
+
+ +
+ +
+ +
60
+
61 protected:
+
62 bool handlePowerLevelController(SinricProRequest &request);
+
63
+
64 private:
+
65 EventLimiter event_limiter;
+
66 SetPowerLevelCallback setPowerLevelCallback;
+
67 AdjustPowerLevelCallback adjustPowerLevelCallback;
+
68};
+
69
+
70template <typename T>
+ +
72: event_limiter(EVENT_LIMIT_STATE) {
+
73 T* device = static_cast<T*>(this);
+
74 device->registerRequestHandler(std::bind(&PowerLevelController<T>::handlePowerLevelController, this, std::placeholders::_1));
+
75}
+
76
+
83template <typename T>
+
+ +
85 setPowerLevelCallback = cb;
+
86}
+
+
87
+
94template <typename T>
+
+ +
96{
+
97 adjustPowerLevelCallback = cb;
+
98}
+
+
99
+
109template <typename T>
+
+ +
111 if (event_limiter) return false;
+
112 T* device = static_cast<T*>(this);
+
113
+ + + +
117 return device->sendEvent(eventMessage);
+
118}
+
+
+
119
+
120template <typename T>
+ +
122 T* device = static_cast<T*>(this);
+
123
+
124 bool success = false;
+
125
+
126 if (setPowerLevelCallback && request.action == FSTR_POWERLEVEL_setPowerLevel) {
+
127 int powerLevel = request.request_value[FSTR_POWERLEVEL_powerLevel];
+
128 success = setPowerLevelCallback(device->deviceId, powerLevel);
+ +
130 }
+
131
+
132 if (adjustPowerLevelCallback && request.action == FSTR_POWERLEVEL_adjustPowerLevel) {
+
133 int powerLevelDelta = request.request_value[FSTR_POWERLEVEL_powerLevelDelta];
+
134 success = adjustPowerLevelCallback(device->deviceId, powerLevelDelta);
+
135 request.response_value[FSTR_POWERLEVEL_powerLevel] = powerLevelDelta;
+
136 }
+
137 return success;
+
138}
+
139
+
140} // SINRICPRO_NAMESPACE
+
141
+
142template <typename T>
+
143using PowerLevelController = SINRICPRO_NAMESPACE::PowerLevelController<T>;
+
+
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
PowerLevelController.
Definition PowerLevelController.h:53
+
void onPowerLevel(SetPowerLevelCallback cb)
Set callback function for setPowerLevel request.
Definition PowerLevelController.h:84
+
void onAdjustPowerLevel(AdjustPowerLevelCallback cb)
Set callback function for adjustPowerLevel request.
Definition PowerLevelController.h:95
+
bool sendPowerLevelEvent(int powerLevel, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setPowerLevel event to SinricPro Server indicating actual power level.
Definition PowerLevelController.h:110
+
std::function< bool(const String &, int &)> AdjustPowerLevelCallback
Definition for onAdjustPowerLevel callback.
Definition PowerLevelController.h:45
+
std::function< bool(const String &, int &)> SetPowerLevelCallback
Definition for setPowerLevel callback.
Definition PowerLevelController.h:30
diff --git a/docs/_power_sensor_8h_source.html b/docs/_power_sensor_8h_source.html index 1c007ed..34baaf0 100644 --- a/docs/_power_sensor_8h_source.html +++ b/docs/_power_sensor_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/PowerSensor.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/PowerSensor.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,99 +81,112 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
PowerSensor.h
+
PowerSensor.h
-
1 #pragma once
-
2 
-
3 #include "../EventLimiter.h"
-
4 #include "../SinricProStrings.h"
-
5 
-
6 #include "../SinricProNamespace.h"
-
7 namespace SINRICPRO_NAMESPACE {
-
8 
-
9 FSTR(POWERSENSOR, powerUsage); // "powerUsage"
-
10 FSTR(POWERSENSOR, startTime); // "startTime"
-
11 FSTR(POWERSENSOR, voltage); // "voltage"
-
12 FSTR(POWERSENSOR, current); // "current"
-
13 FSTR(POWERSENSOR, power); // "power"
-
14 FSTR(POWERSENSOR, apparentPower); // "apparentPower"
-
15 FSTR(POWERSENSOR, reactivePower); // "reactivePower"
-
16 FSTR(POWERSENSOR, factor); // "factor"
-
17 FSTR(POWERSENSOR, wattHours); // "wattHours"
-
18 
-
23 template <typename T>
-
24 class PowerSensor {
-
25 public:
-
26  PowerSensor();
-
27  bool sendPowerSensorEvent(float voltage, float current, float power = -1.0f, float apparentPower = -1.0f, float reactivePower = -1.0f, float factor = -1.0f, String cause = FSTR_SINRICPRO_PERIODIC_POLL);
-
28 
-
29 private:
-
30  EventLimiter event_limiter;
-
31  unsigned long startTime = 0;
-
32  unsigned long lastPower = 0;
-
33  float getWattHours(unsigned long currentTimestamp);
-
34 };
-
35 
-
36 template <typename T>
- -
38 : event_limiter(EVENT_LIMIT_SENSOR_VALUE) {}
-
39 
-
53 template <typename T>
-
54 bool PowerSensor<T>::sendPowerSensorEvent(float voltage, float current, float power, float apparentPower, float reactivePower, float factor, String cause) {
-
55  if (event_limiter) return false;
-
56  T* device = static_cast<T*>(this);
-
57 
-
58  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_POWERSENSOR_powerUsage, cause.c_str());
-
59  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
60  if (power == -1)
-
61  power = voltage * current;
-
62  if (apparentPower != -1)
-
63  factor = power / apparentPower;
-
64 
-
65  unsigned long currentTimestamp = device->getTimestamp();
-
66 
-
67  event_value[FSTR_POWERSENSOR_startTime] = startTime;
-
68  event_value[FSTR_POWERSENSOR_voltage] = voltage;
-
69  event_value[FSTR_POWERSENSOR_current] = current;
-
70  event_value[FSTR_POWERSENSOR_power] = power;
-
71  event_value[FSTR_POWERSENSOR_apparentPower] = apparentPower;
-
72  event_value[FSTR_POWERSENSOR_reactivePower] = reactivePower;
-
73  event_value[FSTR_POWERSENSOR_factor] = factor;
-
74  event_value[FSTR_POWERSENSOR_wattHours] = getWattHours(currentTimestamp);
-
75 
-
76  startTime = currentTimestamp;
-
77  lastPower = power;
-
78  return device->sendEvent(eventMessage);
-
79 }
-
80 
-
81 template <typename T>
-
82 float PowerSensor<T>::getWattHours(unsigned long currentTimestamp) {
-
83  if (startTime)
-
84  return (currentTimestamp - startTime) * lastPower / 3600.0f;
-
85  return 0;
-
86 }
-
87 
-
88 } // SINRICPRO_NAMESPACE
-
89 
-
90 template <typename T>
-
91 using PowerSensor = SINRICPRO_NAMESPACE::PowerSensor<T>;
-
PowerSensor.
Definition: PowerSensor.h:24
-
bool sendPowerSensorEvent(float voltage, float current, float power=-1.0f, float apparentPower=-1.0f, float reactivePower=-1.0f, float factor=-1.0f, String cause=FSTR_SINRICPRO_PERIODIC_POLL)
Send PowerSensor event to SinricPro Server.
Definition: PowerSensor.h:54
+
1#pragma once
+
2
+
3#include "../EventLimiter.h"
+
4#include "../SinricProStrings.h"
+
5
+
6#include "../SinricProNamespace.h"
+
7namespace SINRICPRO_NAMESPACE {
+
8
+
9FSTR(POWERSENSOR, powerUsage); // "powerUsage"
+
10FSTR(POWERSENSOR, startTime); // "startTime"
+
11FSTR(POWERSENSOR, voltage); // "voltage"
+
12FSTR(POWERSENSOR, current); // "current"
+
13FSTR(POWERSENSOR, power); // "power"
+
14FSTR(POWERSENSOR, apparentPower); // "apparentPower"
+
15FSTR(POWERSENSOR, reactivePower); // "reactivePower"
+
16FSTR(POWERSENSOR, factor); // "factor"
+
17FSTR(POWERSENSOR, wattHours); // "wattHours"
+
18
+
23template <typename T>
+
+ +
25public:
+ +
+
27 bool sendPowerSensorEvent(float voltage, float current, float power = -1.0f, float apparentPower = -1.0f, float reactivePower = -1.0f, float factor = -1.0f, String cause = FSTR_SINRICPRO_PERIODIC_POLL);
+
28
+
29private:
+
30 EventLimiter event_limiter;
+
31 unsigned long startTime = 0;
+
32 unsigned long lastPower = 0;
+
33 float getWattHours(unsigned long currentTimestamp);
+
34};
+
35
+
36template <typename T>
+ +
38: event_limiter(EVENT_LIMIT_SENSOR_VALUE) {}
+
39
+
53template <typename T>
+
+
54bool PowerSensor<T>::sendPowerSensorEvent(float voltage, float current, float power, float apparentPower, float reactivePower, float factor, String cause) {
+
55 if (event_limiter) return false;
+
56 T* device = static_cast<T*>(this);
+
57
+ + +
60 if (power == -1)
+ +
62 if (apparentPower != -1)
+ +
64
+
65 unsigned long currentTimestamp = device->getTimestamp();
+
66
+ + + + + + + + +
75
+
76 startTime = currentTimestamp;
+
77 lastPower = power;
+
78 return device->sendEvent(eventMessage);
+
79}
+
+
+
80
+
81template <typename T>
+ +
83 if (startTime)
+
84 return (currentTimestamp - startTime) * lastPower / 3600.0f;
+
85 return 0;
+
86}
+
87
+
88} // SINRICPRO_NAMESPACE
+
89
+
90template <typename T>
+
91using PowerSensor = SINRICPRO_NAMESPACE::PowerSensor<T>;
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
PowerSensor.
Definition PowerSensor.h:24
+
bool sendPowerSensorEvent(float voltage, float current, float power=-1.0f, float apparentPower=-1.0f, float reactivePower=-1.0f, float factor=-1.0f, String cause=FSTR_SINRICPRO_PERIODIC_POLL)
Send PowerSensor event to SinricPro Server.
Definition PowerSensor.h:54
diff --git a/docs/_power_state_controller_8h_source.html b/docs/_power_state_controller_8h_source.html index 8480648..243b2f0 100644 --- a/docs/_power_state_controller_8h_source.html +++ b/docs/_power_state_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/PowerStateController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/PowerStateController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,102 +81,119 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
PowerStateController.h
+
PowerStateController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../EventLimiter.h"
-
5 #include "../SinricProStrings.h"
-
6 
-
7 #include "../SinricProNamespace.h"
-
8 namespace SINRICPRO_NAMESPACE {
-
9 
-
10 FSTR(POWERSTATE, state); // "state"
-
11 FSTR(POWERSTATE, On); // "On"
-
12 FSTR(POWERSTATE, Off); // "Off"
-
13 FSTR(POWERSTATE, setPowerState); // "setPowerState"
-
14 
-
28 using PowerStateCallback = std::function<bool(const String &, bool &)>;
-
29 
-
30 
-
35 template <typename T>
- -
37  public:
- -
39 
- -
41  bool sendPowerStateEvent(bool state, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
42 
-
43  protected:
-
44  bool handlePowerStateController(SinricProRequest &request);
-
45 
-
46  private:
-
47  EventLimiter event_limiter;
-
48  PowerStateCallback powerStateCallback;
-
49 };
-
50 
-
51 template <typename T>
- -
53 : event_limiter(EVENT_LIMIT_STATE) {
-
54  T* device = static_cast<T*>(this);
-
55  device->registerRequestHandler(std::bind(&PowerStateController<T>::handlePowerStateController, this, std::placeholders::_1));
-
56 }
-
57 
-
65 template <typename T>
- -
67  powerStateCallback = cb;
-
68 }
-
69 
-
79 template <typename T>
-
80 bool PowerStateController<T>::sendPowerStateEvent(bool state, String cause) {
-
81  if (event_limiter) return false;
-
82  T* device = static_cast<T*>(this);
-
83 
-
84  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_POWERSTATE_setPowerState, cause.c_str());
-
85  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
86  event_value[FSTR_POWERSTATE_state] = state ? FSTR_POWERSTATE_On : FSTR_POWERSTATE_Off;
-
87  return device->sendEvent(eventMessage);
-
88 }
-
89 
-
90 template <typename T>
-
91 bool PowerStateController<T>::handlePowerStateController(SinricProRequest &request) {
-
92  T* device = static_cast<T*>(this);
-
93 
-
94  bool success = false;
-
95 
-
96  if (request.action == FSTR_POWERSTATE_setPowerState && powerStateCallback) {
-
97  bool powerState = request.request_value[FSTR_POWERSTATE_state] == FSTR_POWERSTATE_On ? true : false;
-
98  success = powerStateCallback(device->deviceId, powerState);
-
99  request.response_value[FSTR_POWERSTATE_state] = powerState ? FSTR_POWERSTATE_On : FSTR_POWERSTATE_Off;
-
100  return success;
-
101  }
-
102  return success;
-
103 }
-
104 
-
105 } // SINRICPRO_NAMESPACE
-
106 
-
107 template <typename T>
-
108 using PowerStateController = SINRICPRO_NAMESPACE::PowerStateController<T>;
-
PowerStateController.
Definition: PowerStateController.h:36
-
void onPowerState(PowerStateCallback cb)
Set callback function for powerState request.
Definition: PowerStateController.h:66
-
bool sendPowerStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setPowerState event to SinricPro Server indicating actual power state.
Definition: PowerStateController.h:80
-
std::function< bool(const String &, bool &)> PowerStateCallback
Callback definition for onPowerState function.
Definition: PowerStateController.h:28
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../EventLimiter.h"
+
5#include "../SinricProStrings.h"
+
6
+
7#include "../SinricProNamespace.h"
+
8namespace SINRICPRO_NAMESPACE {
+
9
+
10FSTR(POWERSTATE, state); // "state"
+
11FSTR(POWERSTATE, On); // "On"
+
12FSTR(POWERSTATE, Off); // "Off"
+
13FSTR(POWERSTATE, setPowerState); // "setPowerState"
+
14
+
28using PowerStateCallback = std::function<bool(const String &, bool &)>;
+
29
+
30
+
35template <typename T>
+
+ +
37 public:
+ +
39
+
+ +
+ +
42
+
43 protected:
+
44 bool handlePowerStateController(SinricProRequest &request);
+
45
+
46 private:
+
47 EventLimiter event_limiter;
+
48 PowerStateCallback powerStateCallback;
+
49};
+
50
+
51template <typename T>
+ +
53: event_limiter(EVENT_LIMIT_STATE) {
+
54 T* device = static_cast<T*>(this);
+
55 device->registerRequestHandler(std::bind(&PowerStateController<T>::handlePowerStateController, this, std::placeholders::_1));
+
56}
+
57
+
65template <typename T>
+
+ +
67 powerStateCallback = cb;
+
68}
+
+
69
+
79template <typename T>
+
+ +
81 if (event_limiter) return false;
+
82 T* device = static_cast<T*>(this);
+
83
+ + + +
87 return device->sendEvent(eventMessage);
+
88}
+
+
+
89
+
90template <typename T>
+ +
92 T* device = static_cast<T*>(this);
+
93
+
94 bool success = false;
+
95
+
96 if (request.action == FSTR_POWERSTATE_setPowerState && powerStateCallback) {
+
97 bool powerState = request.request_value[FSTR_POWERSTATE_state] == FSTR_POWERSTATE_On ? true : false;
+
98 success = powerStateCallback(device->deviceId, powerState);
+ +
100 return success;
+
101 }
+
102 return success;
+
103}
+
104
+
105} // SINRICPRO_NAMESPACE
+
106
+
107template <typename T>
+
108using PowerStateController = SINRICPRO_NAMESPACE::PowerStateController<T>;
+
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
PowerStateController.
Definition PowerStateController.h:36
+
void onPowerState(PowerStateCallback cb)
Set callback function for powerState request.
Definition PowerStateController.h:66
+
bool sendPowerStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setPowerState event to SinricPro Server indicating actual power state.
Definition PowerStateController.h:80
+
std::function< bool(const String &, bool &)> PowerStateCallback
Callback definition for onPowerState function.
Definition PowerStateController.h:28
diff --git a/docs/_push_notification_8h_source.html b/docs/_push_notification_8h_source.html index 5c9386b..2dee495 100644 --- a/docs/_push_notification_8h_source.html +++ b/docs/_push_notification_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/PushNotification.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/PushNotification.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,66 +81,79 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
PushNotification.h
+
PushNotification.h
-
1 #pragma once
-
2 
-
3 #include "../EventLimiter.h"
-
4 #include "../SinricProStrings.h"
-
5 
-
6 #include "../SinricProNamespace.h"
-
7 namespace SINRICPRO_NAMESPACE {
-
8 
-
9 FSTR(PUSHNOTIFICATION, pushNotification); // "pushNotification"
-
10 FSTR(PUSHNOTIFICATION, alert); // "alert"
-
11 
-
16 template <typename T>
- -
18  public:
- -
20  bool sendPushNotification(String notification);
-
21  private:
-
22  EventLimiter event_limiter;
-
23 };
-
24 
-
25 template <typename T>
- -
27 : event_limiter (EVENT_LIMIT_SENSOR_VALUE) {}
-
28 
-
37 template <typename T>
-
38 bool PushNotification<T>::sendPushNotification(String notification) {
-
39  if (event_limiter) return false;
-
40  T* device = static_cast<T*>(this);
-
41 
-
42  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_PUSHNOTIFICATION_pushNotification, FSTR_SINRICPRO_ALERT);
-
43  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
44 
-
45  event_value[FSTR_PUSHNOTIFICATION_alert] = notification;
-
46 
-
47  return device->sendEvent(eventMessage);
-
48 }
-
49 
-
50 } // SINRICPRO_NAMESPACE
-
51 
-
52 template <typename T>
-
53 using PushNotification = SINRICPRO_NAMESPACE::PushNotification<T>;
-
PushNotification.
Definition: PushNotification.h:17
-
bool sendPushNotification(String notification)
Sending push notifications to SinricPro App.
Definition: PushNotification.h:38
+
1#pragma once
+
2
+
3#include "../EventLimiter.h"
+
4#include "../SinricProStrings.h"
+
5
+
6#include "../SinricProNamespace.h"
+
7namespace SINRICPRO_NAMESPACE {
+
8
+
9FSTR(PUSHNOTIFICATION, pushNotification); // "pushNotification"
+
10FSTR(PUSHNOTIFICATION, alert); // "alert"
+
11
+
16template <typename T>
+
+ +
18 public:
+ +
+ +
21 private:
+
22 EventLimiter event_limiter;
+
23};
+
24
+
25template <typename T>
+ +
27: event_limiter (EVENT_LIMIT_SENSOR_VALUE) {}
+
28
+
37template <typename T>
+ +
+
49
+
50} // SINRICPRO_NAMESPACE
+
51
+
52template <typename T>
+
53using PushNotification = SINRICPRO_NAMESPACE::PushNotification<T>;
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
PushNotification.
Definition PushNotification.h:17
+
bool sendPushNotification(String notification)
Sending push notifications to SinricPro App.
Definition PushNotification.h:38
diff --git a/docs/_range_controller_8h_source.html b/docs/_range_controller_8h_source.html index 9edcdb9..4567bb3 100644 --- a/docs/_range_controller_8h_source.html +++ b/docs/_range_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/RangeController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/RangeController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,258 +81,286 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
RangeController.h
+
RangeController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../EventLimiter.h"
-
5 #include "../SinricProStrings.h"
-
6 
-
7 #include "../SinricProNamespace.h"
-
8 namespace SINRICPRO_NAMESPACE {
-
9 
-
10 FSTR(RANGE, setRangeValue); // "setRangeValue"
-
11 FSTR(RANGE, rangeValue); // "rangeValue"
-
12 FSTR(RANGE, adjustRangeValue); // "adjustRangeValue"
-
13 FSTR(RANGE, rangeValueDelta); // "rangeValueDelta"
-
14 
-
30 using GenericRangeValueCallback_int = bool (*)(const String &, const String &, int &);
-
31 using GenericRangeValueCallback_float = bool (*)(const String &, const String &, float &);
-
32 
-
33 struct GenericRangeValueCallback {
-
34  GenericRangeValueCallback() : type(type_unknown) {}
-
35  GenericRangeValueCallback(GenericRangeValueCallback_int cb) : type(type_int), cb_int(cb) {}
-
36  GenericRangeValueCallback(GenericRangeValueCallback_float cb) : type(type_float), cb_float(cb) {}
-
37  enum {
-
38  type_unknown,
-
39  type_int,
-
40  type_float
-
41  } type;
-
42  union {
- -
44  GenericRangeValueCallback_float cb_float;
-
45  };
-
46 };
-
47 
-
48 using SetRangeValueCallback = bool (*)(const String &, int &);
-
49 
- -
66  using GenericSetRangeValueCallback_float = GenericRangeValueCallback_float;
-
67 
-
82 using AdjustRangeValueCallback = bool (*)(const String &, int &);
-
83 
- -
100 using GenericAdjustRangeValueCallback_float = GenericRangeValueCallback_float;
-
101 
-
102 
-
103 
-
108 template <typename T>
- -
110  public:
-
111 
-
112  RangeController();
-
113 
-
114  void onRangeValue(SetRangeValueCallback cb);
-
115  void onRangeValue(const String& instance, GenericSetRangeValueCallback_int cb);
-
116  void onRangeValue(const String& instance, GenericSetRangeValueCallback_float cb);
-
117 
- -
119  void onAdjustRangeValue(const String& instance, GenericAdjustRangeValueCallback_int cb);
-
120  void onAdjustRangeValue(const String& instance, GenericAdjustRangeValueCallback_float cb);
-
121 
-
122  bool sendRangeValueEvent(int rangeValue, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
123  bool sendRangeValueEvent(const String& instance, int rangeValue, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
124  bool sendRangeValueEvent(const String& instance, float rangeValue, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
125 
-
126  protected:
-
127  bool handleRangeController(SinricProRequest &request);
-
128 
-
129  private:
-
130  EventLimiter event_limiter;
-
131  std::map<String, EventLimiter> event_limiter_generic;
-
132  SetRangeValueCallback setRangeValueCallback;
-
133  std::map<String, GenericRangeValueCallback> genericSetRangeValueCallback;
-
134  AdjustRangeValueCallback adjustRangeValueCallback;
-
135  std::map<String, GenericRangeValueCallback> genericAdjustRangeValueCallback;
-
136 };
-
137 
-
138 template <typename T>
- -
140 : event_limiter(EVENT_LIMIT_STATE) {
-
141  T* device = static_cast<T*>(this);
-
142  device->registerRequestHandler(std::bind(&RangeController<T>::handleRangeController, this, std::placeholders::_1));
-
143 }
-
144 
-
151 template <typename T>
-
152 void RangeController<T>::onRangeValue(SetRangeValueCallback cb) {
-
153  setRangeValueCallback = cb;
-
154 }
-
155 
-
163 template <typename T>
- -
165  genericSetRangeValueCallback[instance] = GenericRangeValueCallback(cb);
-
166 }
-
167 
-
168 template <typename T>
-
169 void RangeController<T>::onRangeValue(const String& instance, GenericSetRangeValueCallback_float cb) {
-
170  genericSetRangeValueCallback[instance] = GenericRangeValueCallback(cb);
-
171 }
-
172 
-
179 template <typename T>
- -
181  adjustRangeValueCallback = cb;
-
182 }
-
183 
-
184 template <typename T>
- -
186  genericAdjustRangeValueCallback[instance] = GenericRangeValueCallback(cb);
-
187 }
-
188 
-
189 template <typename T>
-
190 void RangeController<T>::onAdjustRangeValue(const String &instance, GenericAdjustRangeValueCallback_float cb) {
-
191  genericAdjustRangeValueCallback[instance] = GenericRangeValueCallback(cb);
-
192 }
-
193 
-
203 template <typename T>
-
204 bool RangeController<T>::sendRangeValueEvent(int rangeValue, String cause) {
-
205  if (event_limiter) return false;
-
206  T* device = static_cast<T*>(this);
-
207 
-
208  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_RANGE_setRangeValue, cause.c_str());
-
209  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
210  event_value[FSTR_RANGE_rangeValue] = rangeValue;
-
211  return device->sendEvent(eventMessage);
-
212 }
-
213 
-
224 template <typename T>
-
225 bool RangeController<T>::sendRangeValueEvent(const String& instance, int rangeValue, String cause){
-
226  if (event_limiter_generic.find(instance) == event_limiter_generic.end()) event_limiter_generic[instance] = EventLimiter(EVENT_LIMIT_STATE);
-
227  if (event_limiter_generic[instance]) return false;
-
228  T* device = static_cast<T*>(this);
-
229 
-
230  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_RANGE_setRangeValue, cause.c_str());
-
231  eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_instanceId] = instance;
-
232 
-
233  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
234  event_value[FSTR_RANGE_rangeValue] = rangeValue;
-
235  return device->sendEvent(eventMessage);
-
236 }
-
237 
-
238 template <typename T>
-
239 bool RangeController<T>::sendRangeValueEvent(const String& instance, float rangeValue, String cause) {
-
240  if (event_limiter_generic.find(instance) == event_limiter_generic.end()) event_limiter_generic[instance] = EventLimiter(EVENT_LIMIT_STATE);
-
241  if (event_limiter_generic[instance]) return false;
-
242  T* device = static_cast<T*>(this);
-
243 
-
244  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_RANGE_setRangeValue, cause.c_str());
-
245  eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_instanceId] = instance;
-
246 
-
247  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
248  event_value[FSTR_RANGE_rangeValue] = rangeValue;
-
249  return device->sendEvent(eventMessage);
-
250 }
-
251 
-
252 template <typename T>
-
253 bool RangeController<T>::handleRangeController(SinricProRequest &request) {
-
254  T* device = static_cast<T*>(this);
-
255 
-
256  bool success = false;
-
257 
-
258  if (request.action == FSTR_RANGE_setRangeValue) {
-
259 
-
260  if (request.instance == "") {
-
261 
-
262  int rangeValue = request.request_value[FSTR_RANGE_rangeValue];
-
263  if (setRangeValueCallback) success = setRangeValueCallback(device->deviceId, rangeValue);
-
264  request.response_value[FSTR_RANGE_rangeValue] = rangeValue;
-
265  return success;
-
266 
-
267  } else {
-
268 
-
269  if (genericSetRangeValueCallback.find(request.instance) == genericSetRangeValueCallback.end()) return false;
-
270 
-
271  auto& cb = genericSetRangeValueCallback[request.instance];
-
272 
-
273  if (cb.type == GenericRangeValueCallback::type_float) {
-
274  float value = request.request_value[FSTR_RANGE_rangeValue];
-
275  success = cb.cb_float(device->deviceId, request.instance, value);
-
276  request.response_value[FSTR_RANGE_rangeValue] = value;
-
277  return success;
-
278  }
-
279 
-
280  if (cb.type == GenericRangeValueCallback::type_int) {
-
281  int value = request.request_value[FSTR_RANGE_rangeValue];
-
282  success = cb.cb_int(device->deviceId, request.instance, value);
-
283  request.response_value[FSTR_RANGE_rangeValue] = value;
-
284  return success;
-
285  }
-
286  }
-
287  }
-
288 
-
289  if (request.action == FSTR_RANGE_adjustRangeValue) {
-
290 
-
291  if (request.instance == "") {
-
292 
-
293  int rangeValue = request.request_value[FSTR_RANGE_rangeValueDelta];
-
294  if (adjustRangeValueCallback) success = adjustRangeValueCallback(device->deviceId, rangeValue);
-
295  request.response_value[FSTR_RANGE_rangeValue] = rangeValue;
-
296  return success;
-
297 
-
298  } else {
-
299 
-
300  if (genericAdjustRangeValueCallback.find(request.instance) == genericAdjustRangeValueCallback.end()) return false;
-
301 
-
302  auto& cb = genericAdjustRangeValueCallback[request.instance];
-
303 
-
304  if (cb.type == GenericRangeValueCallback::type_float) {
-
305  float value = request.request_value[FSTR_RANGE_rangeValueDelta];
-
306  success = cb.cb_float(device->deviceId, request.instance, value);
-
307  request.response_value[FSTR_RANGE_rangeValue] = value;
-
308  return success;
-
309  }
-
310 
-
311  if (cb.type == GenericRangeValueCallback::type_int) {
-
312  int value = request.request_value[FSTR_RANGE_rangeValueDelta];
-
313  success = cb.cb_int(device->deviceId, request.instance, value);
-
314  request.response_value[FSTR_RANGE_rangeValue] = value;
-
315  return success;
-
316  }
-
317  }
-
318  }
-
319 
-
320  return false;
-
321 }
-
322 
-
323 } // SINRICPRO_NAMESPACE
-
324 
-
325 template <typename T>
-
326 using RangeController = SINRICPRO_NAMESPACE::RangeController<T>;
-
RangeControllerFloatInt.
Definition: RangeController.h:109
-
bool sendRangeValueEvent(int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send rangeValue event to report curent rangeValue to SinricPro server.
Definition: RangeController.h:204
-
void onRangeValue(const String &instance, GenericSetRangeValueCallback_int cb)
Set callback function for setRangeValue request on a specific instance (custom device)
Definition: RangeController.h:164
-
void onRangeValue(SetRangeValueCallback cb)
Set callback function for setRangeValue request.
Definition: RangeController.h:152
-
bool sendRangeValueEvent(const String &instance, int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send rangeValue event to report curent rangeValue to SinricPro server for a specific instance (custom...
Definition: RangeController.h:225
-
void onAdjustRangeValue(AdjustRangeValueCallback cb)
Set callback function for adjustRangeValue request.
Definition: RangeController.h:180
-
bool(*)(const String &, const String &, int &) GenericRangeValueCallback_int
Callback definition for onRangeValue function.
Definition: RangeController.h:30
-
GenericRangeValueCallback_int GenericSetRangeValueCallback_int
Callback definition for onRangeValue function on a specific instance.
Definition: RangeController.h:65
-
bool(*)(const String &, int &) AdjustRangeValueCallback
Callback definition for onAdjustRangeValue function.
Definition: RangeController.h:82
-
GenericRangeValueCallback_int GenericAdjustRangeValueCallback_int
Callback definition for onAdjustRangeValue function on a specific instance for custom devices.
Definition: RangeController.h:99
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../EventLimiter.h"
+
5#include "../SinricProStrings.h"
+
6
+
7#include "../SinricProNamespace.h"
+
8namespace SINRICPRO_NAMESPACE {
+
9
+
10FSTR(RANGE, setRangeValue); // "setRangeValue"
+
11FSTR(RANGE, rangeValue); // "rangeValue"
+
12FSTR(RANGE, adjustRangeValue); // "adjustRangeValue"
+
13FSTR(RANGE, rangeValueDelta); // "rangeValueDelta"
+
14
+
30using GenericRangeValueCallback_int = bool (*)(const String &, const String &, int &);
+
31using GenericRangeValueCallback_float = bool (*)(const String &, const String &, float &);
+
32
+
33struct GenericRangeValueCallback {
+
34 GenericRangeValueCallback() : type(type_unknown) {}
+
35 GenericRangeValueCallback(GenericRangeValueCallback_int cb) : type(type_int), cb_int(cb) {}
+
36 GenericRangeValueCallback(GenericRangeValueCallback_float cb) : type(type_float), cb_float(cb) {}
+
37 enum {
+
38 type_unknown,
+
39 type_int,
+
40 type_float
+
41 } type;
+
42 union {
+ +
44 GenericRangeValueCallback_float cb_float;
+
45 };
+
46};
+
47
+
48using SetRangeValueCallback = bool (*)(const String &, int &);
+
49
+ +
66 using GenericSetRangeValueCallback_float = GenericRangeValueCallback_float;
+
67
+
82using AdjustRangeValueCallback = bool (*)(const String &, int &);
+
83
+ +
100using GenericAdjustRangeValueCallback_float = GenericRangeValueCallback_float;
+
101
+
102
+
103
+
108template <typename T>
+
+ +
110 public:
+
111
+ +
113
+
+ +
+
115 void onRangeValue(const String& instance, GenericSetRangeValueCallback_int cb);
+
116 void onRangeValue(const String& instance, GenericSetRangeValueCallback_float cb);
+
117
+
+ +
119 void onAdjustRangeValue(const String& instance, GenericAdjustRangeValueCallback_int cb);
+
120 void onAdjustRangeValue(const String& instance, GenericAdjustRangeValueCallback_float cb);
+
121
+
+ +
+
123 bool sendRangeValueEvent(const String& instance, int rangeValue, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
+
124 bool sendRangeValueEvent(const String& instance, float rangeValue, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
+
125
+
126 protected:
+
127 bool handleRangeController(SinricProRequest &request);
+
128
+
129 private:
+
130 EventLimiter event_limiter;
+
131 std::map<String, EventLimiter> event_limiter_generic;
+
132 SetRangeValueCallback setRangeValueCallback;
+
133 std::map<String, GenericRangeValueCallback> genericSetRangeValueCallback;
+
134 AdjustRangeValueCallback adjustRangeValueCallback;
+
135 std::map<String, GenericRangeValueCallback> genericAdjustRangeValueCallback;
+
136};
+
137
+
138template <typename T>
+ +
140: event_limiter(EVENT_LIMIT_STATE) {
+
141 T* device = static_cast<T*>(this);
+
142 device->registerRequestHandler(std::bind(&RangeController<T>::handleRangeController, this, std::placeholders::_1));
+
143}
+
144
+
151template <typename T>
+
+
152void RangeController<T>::onRangeValue(SetRangeValueCallback cb) {
+
153 setRangeValueCallback = cb;
+
154}
+
+
155
+
163template <typename T>
+
+ +
165 genericSetRangeValueCallback[instance] = GenericRangeValueCallback(cb);
+
166}
+
+
167
+
168template <typename T>
+ +
170 genericSetRangeValueCallback[instance] = GenericRangeValueCallback(cb);
+
171}
+
172
+
179template <typename T>
+
+ +
181 adjustRangeValueCallback = cb;
+
182}
+
+
183
+
184template <typename T>
+ +
186 genericAdjustRangeValueCallback[instance] = GenericRangeValueCallback(cb);
+
187}
+
188
+
189template <typename T>
+
190void RangeController<T>::onAdjustRangeValue(const String &instance, GenericAdjustRangeValueCallback_float cb) {
+
191 genericAdjustRangeValueCallback[instance] = GenericRangeValueCallback(cb);
+
192}
+
193
+
203template <typename T>
+
+ +
205 if (event_limiter) return false;
+
206 T* device = static_cast<T*>(this);
+
207
+ + + +
211 return device->sendEvent(eventMessage);
+
212}
+
+
213
+
224template <typename T>
+
+
225bool RangeController<T>::sendRangeValueEvent(const String& instance, int rangeValue, String cause){
+
226 if (event_limiter_generic.find(instance) == event_limiter_generic.end()) event_limiter_generic[instance] = EventLimiter(EVENT_LIMIT_STATE);
+
227 if (event_limiter_generic[instance]) return false;
+
228 T* device = static_cast<T*>(this);
+
229
+ + +
232
+ + +
235 return device->sendEvent(eventMessage);
+
236}
+
+
+
237
+
238template <typename T>
+
239bool RangeController<T>::sendRangeValueEvent(const String& instance, float rangeValue, String cause) {
+
240 if (event_limiter_generic.find(instance) == event_limiter_generic.end()) event_limiter_generic[instance] = EventLimiter(EVENT_LIMIT_STATE);
+
241 if (event_limiter_generic[instance]) return false;
+
242 T* device = static_cast<T*>(this);
+
243
+ + +
246
+ + +
249 return device->sendEvent(eventMessage);
+
250}
+
251
+
252template <typename T>
+
253bool RangeController<T>::handleRangeController(SinricProRequest &request) {
+
254 T* device = static_cast<T*>(this);
+
255
+
256 bool success = false;
+
257
+
258 if (request.action == FSTR_RANGE_setRangeValue) {
+
259
+
260 if (request.instance == "") {
+
261
+
262 int rangeValue = request.request_value[FSTR_RANGE_rangeValue];
+
263 if (setRangeValueCallback) success = setRangeValueCallback(device->deviceId, rangeValue);
+
264 request.response_value[FSTR_RANGE_rangeValue] = rangeValue;
+
265 return success;
+
266
+
267 } else {
+
268
+
269 if (genericSetRangeValueCallback.find(request.instance) == genericSetRangeValueCallback.end()) return false;
+
270
+
271 auto& cb = genericSetRangeValueCallback[request.instance];
+
272
+
273 if (cb.type == GenericRangeValueCallback::type_float) {
+
274 float value = request.request_value[FSTR_RANGE_rangeValue];
+
275 success = cb.cb_float(device->deviceId, request.instance, value);
+
276 request.response_value[FSTR_RANGE_rangeValue] = value;
+
277 return success;
+
278 }
+
279
+
280 if (cb.type == GenericRangeValueCallback::type_int) {
+
281 int value = request.request_value[FSTR_RANGE_rangeValue];
+
282 success = cb.cb_int(device->deviceId, request.instance, value);
+
283 request.response_value[FSTR_RANGE_rangeValue] = value;
+
284 return success;
+
285 }
+
286 }
+
287 }
+
288
+
289 if (request.action == FSTR_RANGE_adjustRangeValue) {
+
290
+
291 if (request.instance == "") {
+
292
+
293 int rangeValue = request.request_value[FSTR_RANGE_rangeValueDelta];
+
294 if (adjustRangeValueCallback) success = adjustRangeValueCallback(device->deviceId, rangeValue);
+
295 request.response_value[FSTR_RANGE_rangeValue] = rangeValue;
+
296 return success;
+
297
+
298 } else {
+
299
+
300 if (genericAdjustRangeValueCallback.find(request.instance) == genericAdjustRangeValueCallback.end()) return false;
+
301
+
302 auto& cb = genericAdjustRangeValueCallback[request.instance];
+
303
+
304 if (cb.type == GenericRangeValueCallback::type_float) {
+
305 float value = request.request_value[FSTR_RANGE_rangeValueDelta];
+
306 success = cb.cb_float(device->deviceId, request.instance, value);
+
307 request.response_value[FSTR_RANGE_rangeValue] = value;
+
308 return success;
+
309 }
+
310
+
311 if (cb.type == GenericRangeValueCallback::type_int) {
+
312 int value = request.request_value[FSTR_RANGE_rangeValueDelta];
+
313 success = cb.cb_int(device->deviceId, request.instance, value);
+
314 request.response_value[FSTR_RANGE_rangeValue] = value;
+
315 return success;
+
316 }
+
317 }
+
318 }
+
319
+
320 return false;
+
321}
+
322
+
323} // SINRICPRO_NAMESPACE
+
324
+
325template <typename T>
+
326using RangeController = SINRICPRO_NAMESPACE::RangeController<T>;
+
+
+
+
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
RangeControllerFloatInt.
Definition RangeController.h:109
+
bool sendRangeValueEvent(int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send rangeValue event to report curent rangeValue to SinricPro server.
Definition RangeController.h:204
+
void onRangeValue(const String &instance, GenericSetRangeValueCallback_int cb)
Set callback function for setRangeValue request on a specific instance (custom device)
Definition RangeController.h:164
+
void onRangeValue(SetRangeValueCallback cb)
Set callback function for setRangeValue request.
Definition RangeController.h:152
+
bool sendRangeValueEvent(const String &instance, int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send rangeValue event to report curent rangeValue to SinricPro server for a specific instance (custom...
Definition RangeController.h:225
+
void onAdjustRangeValue(AdjustRangeValueCallback cb)
Set callback function for adjustRangeValue request.
Definition RangeController.h:180
+
bool(*)(const String &, const String &, int &) GenericRangeValueCallback_int
Callback definition for onRangeValue function.
Definition RangeController.h:30
+
GenericRangeValueCallback_int GenericSetRangeValueCallback_int
Callback definition for onRangeValue function on a specific instance.
Definition RangeController.h:65
+
bool(*)(const String &, int &) AdjustRangeValueCallback
Callback definition for onAdjustRangeValue function.
Definition RangeController.h:82
diff --git a/docs/_setting_controller_8h_source.html b/docs/_setting_controller_8h_source.html index feb2615..52b22ae 100644 --- a/docs/_setting_controller_8h_source.html +++ b/docs/_setting_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/SettingController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/SettingController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,83 +81,89 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SettingController.h
+
SettingController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../SinricProStrings.h"
-
5 
-
6 #include "../SinricProNamespace.h"
-
7 namespace SINRICPRO_NAMESPACE {
-
8 
-
9 using SetSettingCallback = std::function<bool(const String&, const String&, String&)>;
-
10 
-
11 FSTR(SETTING, setSetting); // "setSetting"
-
12 FSTR(SETTING, id); // "id"
-
13 FSTR(SETTING, value); // "value"
-
14 
-
15 template <typename T>
-
16 class SettingController {
-
17  public:
-
18  SettingController();
-
19  void onSetSetting(SetSettingCallback cb);
-
20 
-
21  protected:
-
22  bool handleSettingController(SinricProRequest &request);
-
23 
-
24  private:
-
25  SetSettingCallback setSettingCallback;
-
26 };
-
27 
-
28 template <typename T>
-
29 SettingController<T>::SettingController() {
-
30  T* device = static_cast<T*>(this);
-
31  device->registerRequestHandler(std::bind(&SettingController<T>::handleSettingController, this, std::placeholders::_1));
-
32 }
-
33 
-
34 template <typename T>
-
35 void SettingController<T>::onSetSetting(SetSettingCallback cb) {
-
36  setSettingCallback = cb;
-
37 }
-
38 
-
39 template <typename T>
-
40 bool SettingController<T>::handleSettingController(SinricProRequest &request) {
-
41  T* device = static_cast<T*>(this);
-
42 
-
43  bool success = false;
-
44 
-
45  if (setSettingCallback && request.action == FSTR_SETTING_setSetting) {
-
46  String settingId = request.request_value[FSTR_SETTING_id] | "";
-
47  String settingValue = request.request_value[FSTR_SETTING_value] | "";
-
48  success = setSettingCallback(device->deviceId, settingId, settingValue);
-
49  request.response_value[FSTR_SETTING_id] = settingId;
-
50  request.response_value[FSTR_SETTING_value] = settingValue;
-
51  return success;
-
52  }
-
53 
-
54  return success;
-
55 }
-
56 
-
57 } // SINRICPRO_NAMESPACE
-
58 
-
59 template <typename T>
-
60 using SettingController = SINRICPRO_NAMESPACE::SettingController<T>;
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../SinricProStrings.h"
+
5
+
6#include "../SinricProNamespace.h"
+
7namespace SINRICPRO_NAMESPACE {
+
8
+
9using SetSettingCallback = std::function<bool(const String&, const String&, String&)>;
+
10
+
11FSTR(SETTING, setSetting); // "setSetting"
+
12FSTR(SETTING, id); // "id"
+
13FSTR(SETTING, value); // "value"
+
14
+
15template <typename T>
+
16class SettingController {
+
17 public:
+
18 SettingController();
+
19 void onSetSetting(SetSettingCallback cb);
+
20
+
21 protected:
+
22 bool handleSettingController(SinricProRequest &request);
+
23
+
24 private:
+
25 SetSettingCallback setSettingCallback;
+
26};
+
27
+
28template <typename T>
+
29SettingController<T>::SettingController() {
+
30 T* device = static_cast<T*>(this);
+
31 device->registerRequestHandler(std::bind(&SettingController<T>::handleSettingController, this, std::placeholders::_1));
+
32}
+
33
+
34template <typename T>
+
35void SettingController<T>::onSetSetting(SetSettingCallback cb) {
+
36 setSettingCallback = cb;
+
37}
+
38
+
39template <typename T>
+
40bool SettingController<T>::handleSettingController(SinricProRequest &request) {
+
41 T* device = static_cast<T*>(this);
+
42
+
43 bool success = false;
+
44
+
45 if (setSettingCallback && request.action == FSTR_SETTING_setSetting) {
+
46 String settingId = request.request_value[FSTR_SETTING_id] | "";
+
47 String settingValue = request.request_value[FSTR_SETTING_value] | "";
+
48 success = setSettingCallback(device->deviceId, settingId, settingValue);
+
49 request.response_value[FSTR_SETTING_id] = settingId;
+
50 request.response_value[FSTR_SETTING_value] = settingValue;
+
51 return success;
+
52 }
+
53
+
54 return success;
+
55}
+
56
+
57} // SINRICPRO_NAMESPACE
+
58
+
59template <typename T>
+
60using SettingController = SINRICPRO_NAMESPACE::SettingController<T>;
diff --git a/docs/_sinric_pro_8h_source.html b/docs/_sinric_pro_8h_source.html index 98d6749..a6a9e18 100644 --- a/docs/_sinric_pro_8h_source.html +++ b/docs/_sinric_pro_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricPro.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricPro.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,499 +81,541 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricPro.h
+
SinricPro.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #include "SinricProInterface.h"
-
11 #include "SinricProDeviceInterface.h"
-
12 #include "SinricProWebsocket.h"
-
13 #include "SinricProUDP.h"
-
14 #include "SinricProSignature.h"
-
15 #include "SinricProMessageid.h"
-
16 #include "SinricProQueue.h"
-
17 #include "SinricProStrings.h"
-
18 
-
19 #include "SinricProNamespace.h"
-
20 namespace SINRICPRO_NAMESPACE {
-
21 
-
29 using ConnectedCallbackHandler = std::function<void(void)>;
-
30 
-
38 using DisconnectedCallbackHandler = std::function<void(void)>;
-
39 
-
45 class SinricProClass : public SinricProInterface {
-
46  friend class SinricProDevice;
-
47 
-
48  public:
-
49  void begin(String appKey, String appSecret, String serverURL = SINRICPRO_SERVER_URL);
-
50  void handle();
-
51  void stop();
-
52  bool isConnected();
-
53  void onConnected(ConnectedCallbackHandler cb);
-
54  void onDisconnected(DisconnectedCallbackHandler cb);
-
55  void onPong(std::function<void(uint32_t)> cb);
-
56  void restoreDeviceStates(bool flag);
-
57  void setResponseMessage(String &&message);
-
58  unsigned long getTimestamp() override;
-
59 
-
60  struct proxy {
-
61  proxy(SinricProClass* ptr, String deviceId) : ptr(ptr), deviceId(deviceId) {}
-
62  SinricProClass* ptr;
-
63  String deviceId;
-
64  template <typename DeviceType>
-
65  operator DeviceType&() { return as<DeviceType>(); }
-
66  template <typename DeviceType>
-
67  DeviceType& as() { return ptr->getDeviceInstance<DeviceType>(deviceId); }
-
68  };
-
69 
-
70  proxy operator[](const String deviceId);
-
71  protected:
-
72  template <typename DeviceType>
-
73  DeviceType& add(String deviceId);
-
74 
-
75  void add(SinricProDeviceInterface &newDevice);
-
76  void add(SinricProDeviceInterface *newDevice);
-
77 
-
78  DynamicJsonDocument prepareResponse(JsonDocument &requestMessage);
-
79  DynamicJsonDocument prepareEvent(String deviceId, const char *action, const char *cause) override;
-
80  void sendMessage(JsonDocument &jsonMessage) override;
-
81 
-
82  private:
-
83  void handleReceiveQueue();
-
84  void handleSendQueue();
-
85 
-
86  void handleRequest(DynamicJsonDocument& requestMessage, interface_t Interface);
-
87  void handleResponse(DynamicJsonDocument& responseMessage);
-
88 
-
89  DynamicJsonDocument prepareRequest(String deviceId, const char* action);
-
90 
-
91  void connect();
-
92  void disconnect();
-
93  void reconnect();
-
94 
-
95  void onConnect();
-
96  void onDisconnect();
-
97 
-
98  void extractTimestamp(JsonDocument &message);
-
99 
-
100  SinricProDeviceInterface* getDevice(String deviceId);
-
101 
-
102  template <typename DeviceType>
-
103  DeviceType& getDeviceInstance(String deviceId);
-
104 
-
105  std::vector<SinricProDeviceInterface*> devices;
-
106 
-
107  String appKey;
-
108  String appSecret;
-
109  String serverURL;
-
110 
-
111  WebsocketListener _websocketListener;
-
112  UdpListener _udpListener;
-
113  SinricProQueue_t receiveQueue;
-
114  SinricProQueue_t sendQueue;
-
115 
-
116  unsigned long baseTimestamp = 0;
-
117 
-
118  bool _begin = false;
-
119  String responseMessageStr = "";
-
120 };
-
121 
-
122 SinricProDeviceInterface* SinricProClass::getDevice(String deviceId) {
-
123  for (auto& device : devices) {
-
124  if (deviceId == device->getDeviceId()) return device;
-
125  }
-
126  return nullptr;
-
127 }
-
128 
-
129 template <typename DeviceType>
-
130 DeviceType& SinricProClass::getDeviceInstance(String deviceId) {
-
131  DeviceType* tmp_device = (DeviceType*) getDevice(deviceId);
-
132  if (tmp_device) return *tmp_device;
-
133 
-
134  DEBUG_SINRIC("[SinricPro]: Device \"%s\" does not exist. Creating new device\r\n", deviceId.c_str());
-
135  DeviceType& tmp_deviceInstance = add<DeviceType>(deviceId);
-
136 
-
137  if (isConnected()) {
-
138  DEBUG_SINRIC("[SinricPro]: Reconnecting to server.\r\n");
-
139  reconnect();
-
140  }
-
141 
-
142  return tmp_deviceInstance;
-
143 }
-
144 
-
161 void SinricProClass::begin(String appKey, String appSecret, String serverURL) {
-
162  bool success = true;
-
163  if (!appKey.length()) {
-
164  DEBUG_SINRIC("[SinricPro:begin()]: App-Key \"%s\" is invalid!! Please check your app-key!! SinricPro will not work!\r\n", appKey.c_str());
-
165  success = false;
-
166  }
-
167  if (!appSecret.length()) {
-
168  DEBUG_SINRIC("[SinricPro:begin()]: App-Secret \"%s\" is invalid!! Please check your app-secret!! SinricPro will not work!\r\n", appSecret.c_str());
-
169  success = false;
-
170  }
-
171 
-
172  if(!success) {
-
173  _begin = false;
-
174  return;
-
175  }
-
176 
-
177  this->appKey = appKey;
-
178  this->appSecret = appSecret;
-
179  this->serverURL = serverURL;
-
180  _begin = true;
-
181  _udpListener.begin(&receiveQueue);
-
182 }
-
183 
-
184 template <typename DeviceType>
-
185 DeviceType& SinricProClass::add(String deviceId) {
-
186 
-
187  DeviceType* newDevice = new DeviceType(deviceId);
-
188  DEBUG_SINRIC("[SinricPro:add()]: Adding device with id \"%s\".\r\n", deviceId.c_str());
-
189  newDevice->begin(this);
-
190 
-
191  devices.push_back(newDevice);
-
192  return *newDevice;
-
193 }
-
194 
-
195 __attribute__ ((deprecated("Please use DeviceType& myDevice = SinricPro.add<DeviceType>(String);")))
-
196 void SinricProClass::add(SinricProDeviceInterface* newDevice) {
-
197  newDevice->begin(this);
-
198  devices.push_back(newDevice);
-
199 }
-
200 
-
201 __attribute__ ((deprecated("Please use DeviceType& myDevice = SinricPro.add<DeviceType>(String);")))
-
202 void SinricProClass::add(SinricProDeviceInterface& newDevice) {
-
203  newDevice.begin(this);
-
204  devices.push_back(&newDevice);
-
205 }
-
206 
-
222 void SinricProClass::handle() {
-
223  static bool begin_error = false;
-
224  if (!_begin) {
-
225  if (!begin_error) { // print this only once!
-
226  DEBUG_SINRIC("[SinricPro:handle()]: ERROR! SinricPro.begin() failed or was not called prior to event handler\r\n");
-
227  DEBUG_SINRIC("[SinricPro:handle()]: -Reasons include an invalid app-key, invalid app-secret or no valid deviceIds)\r\n");
-
228  DEBUG_SINRIC("[SinricPro:handle()]: -SinricPro is disabled! Check earlier log messages for details.\r\n");
-
229  begin_error = true;
-
230  }
-
231  return;
-
232  }
-
233 
-
234  if (WiFi.isConnected()) {
-
235 
-
236  if (!isConnected()) connect();
-
237  _websocketListener.handle();
-
238  _udpListener.handle();
-
239 
-
240  }
-
241 
-
242  handleReceiveQueue();
-
243  handleSendQueue();
-
244 }
-
245 
-
246 DynamicJsonDocument SinricProClass::prepareRequest(String deviceId, const char* action) {
-
247  DynamicJsonDocument requestMessage(1024);
-
248  JsonObject header = requestMessage.createNestedObject(FSTR_SINRICPRO_header);
-
249  header[FSTR_SINRICPRO_payloadVersion] = 2;
-
250  header[FSTR_SINRICPRO_signatureVersion] = 1;
-
251 
-
252  JsonObject payload = requestMessage.createNestedObject(FSTR_SINRICPRO_payload);
-
253  payload[FSTR_SINRICPRO_action] = action;
-
254  payload[FSTR_SINRICPRO_createdAt] = 0;
-
255  payload[FSTR_SINRICPRO_deviceId] = deviceId;
-
256  payload[FSTR_SINRICPRO_replyToken] = MessageID().getID();
-
257  payload[FSTR_SINRICPRO_type] = FSTR_SINRICPRO_request;
-
258  payload.createNestedObject(FSTR_SINRICPRO_value);
-
259  return requestMessage;
-
260 }
-
261 
-
262 void SinricProClass::handleResponse(DynamicJsonDocument& responseMessage) {
-
263  (void) responseMessage;
-
264  DEBUG_SINRIC("[SinricPro.handleResponse()]:\r\n");
-
265 
-
266  #ifndef NODEBUG_SINRIC
-
267  serializeJsonPretty(responseMessage, DEBUG_ESP_PORT);
-
268  Serial.println();
-
269  #endif
-
270 }
-
271 
-
272 void SinricProClass::handleRequest(DynamicJsonDocument& requestMessage, interface_t Interface) {
-
273  DEBUG_SINRIC("[SinricPro.handleRequest()]: handling request\r\n");
-
274  #ifndef NODEBUG_SINRIC
-
275  serializeJsonPretty(requestMessage, DEBUG_ESP_PORT);
-
276  #endif
-
277 
-
278  DynamicJsonDocument responseMessage = prepareResponse(requestMessage);
-
279 
-
280  // handle devices
-
281  bool success = false;
-
282  const char* deviceId = requestMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_deviceId];
-
283  String action = requestMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_action] | "";
-
284  String instance = requestMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_instanceId] | "";
-
285  JsonObject request_value = requestMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
286  JsonObject response_value = responseMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
287 
-
288  for (auto& device : devices) {
-
289  if (device->getDeviceId() == deviceId && success == false) {
-
290  SinricProRequest request {
-
291  action,
-
292  instance,
-
293  request_value,
-
294  response_value
-
295  };
-
296  success = device->handleRequest(request);
-
297  responseMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_success] = success;
-
298  if (!success) {
-
299  if (responseMessageStr.length() > 0){
-
300  responseMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_message] = responseMessageStr;
-
301  responseMessageStr = "";
-
302  } else {
-
303  responseMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_message] = "Device did not handle \""+ action + "\"";
-
304  }
-
305  }
-
306  }
-
307  }
-
308 
-
309  String responseString;
-
310  serializeJson(responseMessage, responseString);
-
311  sendQueue.push(new SinricProMessage(Interface, responseString.c_str()));
-
312 }
-
313 
-
314 void SinricProClass::handleReceiveQueue() {
-
315  if (receiveQueue.size() == 0) return;
-
316 
-
317  DEBUG_SINRIC("[SinricPro.handleReceiveQueue()]: %i message(s) in receiveQueue\r\n", receiveQueue.size());
-
318  while (receiveQueue.size() > 0) {
-
319  SinricProMessage* rawMessage = receiveQueue.front();
-
320  receiveQueue.pop();
-
321  DynamicJsonDocument jsonMessage(1024);
-
322  deserializeJson(jsonMessage, rawMessage->getMessage());
-
323 
-
324  bool sigMatch = false;
-
325 
-
326  if (strncmp(rawMessage->getMessage(), "{\"timestamp\":", 13) == 0 && strlen(rawMessage->getMessage()) <= 26) {
-
327  sigMatch=true; // timestamp message has no signature...ignore sigMatch for this!
-
328  } else {
-
329  String signature = jsonMessage[FSTR_SINRICPRO_signature][FSTR_SINRICPRO_HMAC] | "";
-
330  String payload = extractPayload(rawMessage->getMessage());
-
331  String calculatedSignature = calculateSignature(appSecret.c_str(), payload);
-
332  sigMatch = (calculatedSignature == signature);
-
333  }
-
334 
-
335  String messageType = jsonMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_type];
-
336 
-
337  if (sigMatch) { // signature is valid process message
-
338  DEBUG_SINRIC("[SinricPro.handleReceiveQueue()]: Signature is valid. Processing message...\r\n");
-
339  extractTimestamp(jsonMessage);
-
340  if (messageType == FSTR_SINRICPRO_response) handleResponse(jsonMessage);
-
341  if (messageType == FSTR_SINRICPRO_request) handleRequest(jsonMessage, rawMessage->getInterface());
-
342  } else {
-
343  DEBUG_SINRIC("[SinricPro.handleReceiveQueue()]: Signature is invalid! Sending messsage to [dev/null] ;)\r\n");
-
344  }
-
345  delete rawMessage;
-
346  }
-
347 }
-
348 
-
349 void SinricProClass::handleSendQueue() {
-
350  if (!isConnected()) return;
-
351  if (!baseTimestamp) return;
-
352  while (sendQueue.size() > 0) {
-
353  DEBUG_SINRIC("[SinricPro:handleSendQueue()]: %i message(s) in sendQueue\r\n", sendQueue.size());
-
354  DEBUG_SINRIC("[SinricPro:handleSendQueue()]: Sending message...\r\n");
-
355 
-
356  SinricProMessage* rawMessage = sendQueue.front(); sendQueue.pop();
-
357 
-
358  DynamicJsonDocument jsonMessage(1024);
-
359  deserializeJson(jsonMessage, rawMessage->getMessage());
-
360  jsonMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_createdAt] = getTimestamp();
-
361  signMessage(appSecret, jsonMessage);
-
362 
-
363  String messageStr;
-
364 
-
365  serializeJson(jsonMessage, messageStr);
-
366  #ifndef NODEBUG_SINRIC
-
367  serializeJsonPretty(jsonMessage, DEBUG_ESP_PORT);
-
368  Serial.println();
-
369  #endif
-
370 
-
371  switch (rawMessage->getInterface()) {
-
372  case IF_WEBSOCKET: DEBUG_SINRIC("[SinricPro:handleSendQueue]: Sending to websocket\r\n"); _websocketListener.sendMessage(messageStr); break;
-
373  case IF_UDP: DEBUG_SINRIC("[SinricPro:handleSendQueue]: Sending to UDP\r\n");_udpListener.sendMessage(messageStr); break;
-
374  default: break;
-
375  }
-
376  delete rawMessage;
-
377  DEBUG_SINRIC("[SinricPro:handleSendQueue()]: message sent.\r\n");
-
378  }
-
379 }
-
380 
-
381 void SinricProClass::connect() {
-
382  String deviceList;
-
383  int i = 0;
-
384  for (auto& device : devices) {
-
385  String deviceId = device->getDeviceId();
-
386  if (i>0) deviceList += ';';
-
387  deviceList += device->getDeviceId();
-
388  i++;
-
389  }
-
390 
-
391  _websocketListener.begin(serverURL, appKey, deviceList, &receiveQueue);
-
392 }
-
393 
-
394 
-
395 void SinricProClass::stop() {
-
396  _begin = false;
-
397  DEBUG_SINRIC("[SinricPro:stop()\r\n");
-
398  _websocketListener.stop();
-
399 }
-
400 
-
401 bool SinricProClass::isConnected() {
-
402  return _websocketListener.isConnected();
-
403 };
-
404 
-
414 void SinricProClass::onConnected(ConnectedCallbackHandler cb) {
-
415  _websocketListener.onConnected(cb);
-
416 }
-
417 
-
427 void SinricProClass::onDisconnected(DisconnectedCallbackHandler cb) {
-
428  _websocketListener.onDisconnected(cb);
-
429 }
-
430 
-
431 void SinricProClass::onPong(std::function<void(uint32_t)> cb) {
-
432  _websocketListener.onPong(cb);
-
433 }
-
434 
-
435 
-
436 void SinricProClass::reconnect() {
-
437  DEBUG_SINRIC("SinricPro:reconnect(): disconnecting\r\n");
-
438  stop();
-
439  DEBUG_SINRIC("SinricPro:reconnect(): connecting\r\n");
-
440  connect();
-
441 }
-
442 
-
443 void SinricProClass::onConnect() {
-
444  DEBUG_SINRIC("[SinricPro]: Connected to \"%s\"!]\r\n", serverURL.c_str());
-
445 }
-
446 
-
447 void SinricProClass::onDisconnect() {
-
448  DEBUG_SINRIC("[SinricPro]: Disconnect\r\n");
-
449 }
-
450 
-
451 
-
452 void SinricProClass::extractTimestamp(JsonDocument &message) {
-
453  unsigned long tempTimestamp = 0;
-
454  // extract timestamp from timestamp message right after websocket connection is established
-
455  tempTimestamp = message["timestamp"] | 0;
-
456  if (tempTimestamp) {
-
457  baseTimestamp = tempTimestamp - (millis() / 1000);
-
458  DEBUG_SINRIC("[SinricPro:extractTimestamp(): Got Timestamp %lu\r\n", tempTimestamp);
-
459  return;
-
460  }
-
461 
-
462  // extract timestamp from request message
-
463  tempTimestamp = message[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_createdAt] | 0;
-
464  if (tempTimestamp) {
-
465  DEBUG_SINRIC("[SinricPro:extractTimestamp(): Got Timestamp %lu\r\n", tempTimestamp);
-
466  baseTimestamp = tempTimestamp - (millis() / 1000);
-
467  return;
-
468  }
-
469 }
-
470 
-
471 
-
472 void SinricProClass::sendMessage(JsonDocument& jsonMessage) {
-
473  if (!isConnected()) {
-
474  DEBUG_SINRIC("[SinricPro:sendMessage()]: device is offline, message has been dropped\r\n");
-
475  return;
-
476  }
-
477  DEBUG_SINRIC("[SinricPro:sendMessage()]: pushing message into sendQueue\r\n");
-
478  String messageString;
-
479  serializeJson(jsonMessage, messageString);
-
480  sendQueue.push(new SinricProMessage(IF_WEBSOCKET, messageString.c_str()));
-
481 }
-
482 
-
492 void SinricProClass::restoreDeviceStates(bool flag) {
-
493  _websocketListener.setRestoreDeviceStates(flag);
-
494 }
-
495 
-
512 SinricProClass::proxy SinricProClass::operator[](const String deviceId) {
-
513  return proxy(this, deviceId);
-
514 }
-
515 
-
516 void SinricProClass::setResponseMessage(String &&message) {
-
517  responseMessageStr = message;
-
518 }
-
519 
-
525 unsigned long SinricProClass::getTimestamp() {
-
526  return baseTimestamp + (millis()/1000);
-
527 }
-
528 
-
529 DynamicJsonDocument SinricProClass::prepareResponse(JsonDocument& requestMessage) {
-
530  DynamicJsonDocument responseMessage(1024);
-
531  JsonObject header = responseMessage.createNestedObject(FSTR_SINRICPRO_header);
-
532  header[FSTR_SINRICPRO_payloadVersion] = 2;
-
533  header[FSTR_SINRICPRO_signatureVersion] = 1;
-
534 
-
535  JsonObject payload = responseMessage.createNestedObject(FSTR_SINRICPRO_payload);
-
536  payload[FSTR_SINRICPRO_action] = requestMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_action];
-
537  payload[FSTR_SINRICPRO_clientId] = requestMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_clientId];
-
538  payload[FSTR_SINRICPRO_createdAt] = 0;
-
539  payload[FSTR_SINRICPRO_deviceId] = requestMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_deviceId];
-
540  if (requestMessage[FSTR_SINRICPRO_payload].containsKey(FSTR_SINRICPRO_instanceId)) payload[FSTR_SINRICPRO_instanceId] = requestMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_instanceId];
-
541  payload[FSTR_SINRICPRO_message] = FSTR_SINRICPRO_OK;
-
542  payload[FSTR_SINRICPRO_replyToken] = requestMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_replyToken];
-
543  payload[FSTR_SINRICPRO_success] = false;
-
544  payload[FSTR_SINRICPRO_type] = FSTR_SINRICPRO_response;
-
545  payload.createNestedObject(FSTR_SINRICPRO_value);
-
546  return responseMessage;
-
547 }
-
548 
-
549 
-
550 DynamicJsonDocument SinricProClass::prepareEvent(String deviceId, const char* action, const char* cause) {
-
551  DynamicJsonDocument eventMessage(1024);
-
552  JsonObject header = eventMessage.createNestedObject(FSTR_SINRICPRO_header);
-
553  header[FSTR_SINRICPRO_payloadVersion] = 2;
-
554  header[FSTR_SINRICPRO_signatureVersion] = 1;
-
555 
-
556  JsonObject payload = eventMessage.createNestedObject(FSTR_SINRICPRO_payload);
-
557  payload[FSTR_SINRICPRO_action] = action;
-
558  payload[FSTR_SINRICPRO_cause].createNestedObject(FSTR_SINRICPRO_type);
-
559  payload[FSTR_SINRICPRO_cause][FSTR_SINRICPRO_type] = cause;
-
560  payload[FSTR_SINRICPRO_createdAt] = 0;
-
561  payload[FSTR_SINRICPRO_deviceId] = deviceId;
-
562  payload[FSTR_SINRICPRO_replyToken] = MessageID().getID();
-
563  payload[FSTR_SINRICPRO_type] = FSTR_SINRICPRO_event;
-
564  payload.createNestedObject(FSTR_SINRICPRO_value);
-
565  return eventMessage;
-
566 }
-
567 
-
568 } // SINRICPRO_NAMESPACE
-
569 
-
570 SINRICPRO_NAMESPACE::SinricProClass SinricPro;
-
The main class of this library, handling communication between SinricPro Server and your devices.
Definition: SinricPro.h:45
-
Base class for all device types.
Definition: SinricProDevice.h:24
-
std::function< void(void)> DisconnectedCallbackHandler
Callback definition for onDisconnected function.
Definition: SinricPro.h:38
-
std::function< void(void)> ConnectedCallbackHandler
Callback definition for onConnected function.
Definition: SinricPro.h:29
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#include "SinricProDeviceInterface.h"
+
11#include "SinricProInterface.h"
+
12#include "SinricProMessageid.h"
+
13#include "SinricProNamespace.h"
+
14#include "SinricProQueue.h"
+
15#include "SinricProSignature.h"
+
16#include "SinricProStrings.h"
+
17#include "SinricProUDP.h"
+
18#include "SinricProWebsocket.h"
+
19#include "Timestamp.h"
+
20namespace SINRICPRO_NAMESPACE {
+
21
+
29using ConnectedCallbackHandler = std::function<void(void)>;
+
30
+
38using DisconnectedCallbackHandler = std::function<void(void)>;
+
39
+
40using PongCallback = std::function<void(uint32_t)>;
+
41
+
+
47class SinricProClass : public SinricProInterface {
+
48 friend class SinricProDevice;
+
49
+
50 public:
+
51 class Proxy;
+
52
+
53 public:
+
54 void begin(String appKey, String appSecret, String serverURL = SINRICPRO_SERVER_URL);
+
55 void handle();
+
56 void stop();
+
57 bool isConnected();
+
58 void onConnected(ConnectedCallbackHandler cb);
+
59 void onDisconnected(DisconnectedCallbackHandler cb);
+
60 void onPong(PongCallback cb);
+
61 void restoreDeviceStates(bool flag);
+
62 void setResponseMessage(String&& message);
+
63 unsigned long getTimestamp() override;
+
64 Proxy operator[](const String deviceId);
+
65
+
66 protected:
+
67 template <typename DeviceType>
+
68 DeviceType& add(String deviceId);
+
69
+
70 void add(SinricProDeviceInterface& newDevice);
+
71 void add(SinricProDeviceInterface* newDevice);
+
72
+ +
74 DynamicJsonDocument prepareEvent(String deviceId, const char* action, const char* cause) override;
+
75 void sendMessage(JsonDocument& jsonMessage) override;
+
76
+
77 private:
+
78 void handleReceiveQueue();
+
79 void handleSendQueue();
+
80
+
81 void handleRequest(DynamicJsonDocument& requestMessage, interface_t Interface);
+
82 void handleResponse(DynamicJsonDocument& responseMessage);
+
83
+
84 DynamicJsonDocument prepareRequest(String deviceId, const char* action);
+
85
+
86 void connect();
+
87 void disconnect();
+
88 void reconnect();
+
89
+
90 void onConnect();
+
91 void onDisconnect();
+
92
+
93 void extractTimestamp(JsonDocument& message);
+
94
+
95 SinricProDeviceInterface* getDevice(String deviceId);
+
96
+
97 template <typename DeviceType>
+
98 DeviceType& getDeviceInstance(String deviceId);
+
99
+
100 std::vector<SinricProDeviceInterface*> devices;
+
101
+
102 String appKey;
+
103 String appSecret;
+
104 String serverURL;
+
105
+
106 WebsocketListener _websocketListener;
+
107 UdpListener _udpListener;
+
108 SinricProQueue_t receiveQueue;
+
109 SinricProQueue_t sendQueue;
+
110
+
111 Timestamp timestamp;
+
112
+
113 bool _begin = false;
+
114 String responseMessageStr = "";
+
115};
+
+
116
+
117class SinricProClass::Proxy {
+
118 public:
+
119 Proxy(SinricProClass* ptr, const String& deviceId);
+
120
+
121 template <typename DeviceType>
+
122 operator DeviceType&();
+
123
+
124 protected:
+
125 SinricProClass* ptr;
+
126 String deviceId;
+
127};
+
128
+
129SinricProClass::Proxy::Proxy(SinricProClass* ptr, const String& deviceId)
+
130 : ptr(ptr), deviceId(deviceId) {}
+
131
+
132template <typename DeviceType>
+
133SinricProClass::Proxy::operator DeviceType&() {
+
134 return ptr->getDeviceInstance<DeviceType>(deviceId);
+
135}
+
136
+
137SinricProDeviceInterface* SinricProClass::getDevice(String deviceId) {
+
138 for (auto& device : devices) {
+
139 if (deviceId == device->getDeviceId()) return device;
+
140 }
+
141 return nullptr;
+
142}
+
143
+
144template <typename DeviceType>
+
145DeviceType& SinricProClass::getDeviceInstance(String deviceId) {
+
146 DeviceType* tmp_device = (DeviceType*)getDevice(deviceId);
+
147 if (tmp_device) return *tmp_device;
+
148
+
149 DEBUG_SINRIC("[SinricPro]: Device \"%s\" does not exist. Creating new device\r\n", deviceId.c_str());
+
150 DeviceType& tmp_deviceInstance = add<DeviceType>(deviceId);
+
151
+
152 if (isConnected()) {
+
153 DEBUG_SINRIC("[SinricPro]: Reconnecting to server.\r\n");
+
154 reconnect();
+
155 }
+
156
+
157 return tmp_deviceInstance;
+
158}
+
159
+
+
176void SinricProClass::begin(String appKey, String appSecret, String serverURL) {
+
177 bool success = true;
+
178 if (!appKey.length()) {
+
179 DEBUG_SINRIC("[SinricPro:begin()]: App-Key \"%s\" is invalid!! Please check your app-key!! SinricPro will not work!\r\n", appKey.c_str());
+
180 success = false;
+
181 }
+
182 if (!appSecret.length()) {
+
183 DEBUG_SINRIC("[SinricPro:begin()]: App-Secret \"%s\" is invalid!! Please check your app-secret!! SinricPro will not work!\r\n", appSecret.c_str());
+
184 success = false;
+
185 }
+
186
+
187 if (!success) {
+
188 _begin = false;
+
189 return;
+
190 }
+
191
+
192 this->appKey = appKey;
+
193 this->appSecret = appSecret;
+
194 this->serverURL = serverURL;
+
195 _begin = true;
+
196 _udpListener.begin(&receiveQueue);
+
197}
+
+
198
+
199template <typename DeviceType>
+
200DeviceType& SinricProClass::add(String deviceId) {
+
201 DeviceType* newDevice = new DeviceType(deviceId);
+
202 DEBUG_SINRIC("[SinricPro:add()]: Adding device with id \"%s\".\r\n", deviceId.c_str());
+
203 newDevice->begin(this);
+
204
+
205 devices.push_back(newDevice);
+
206 return *newDevice;
+
207}
+
208
+
209__attribute__((deprecated("Please use DeviceType& myDevice = SinricPro.add<DeviceType>(String);"))) void SinricProClass::add(SinricProDeviceInterface* newDevice) {
+
210 newDevice->begin(this);
+
211 devices.push_back(newDevice);
+
212}
+
213
+
214__attribute__((deprecated("Please use DeviceType& myDevice = SinricPro.add<DeviceType>(String);"))) void SinricProClass::add(SinricProDeviceInterface& newDevice) {
+
215 newDevice.begin(this);
+
216 devices.push_back(&newDevice);
+
217}
+
218
+
+ +
235 static bool begin_error = false;
+
236 if (!_begin) {
+
237 if (!begin_error) { // print this only once!
+
238 DEBUG_SINRIC("[SinricPro:handle()]: ERROR! SinricPro.begin() failed or was not called prior to event handler\r\n");
+
239 DEBUG_SINRIC("[SinricPro:handle()]: -Reasons include an invalid app-key, invalid app-secret or no valid deviceIds)\r\n");
+
240 DEBUG_SINRIC("[SinricPro:handle()]: -SinricPro is disabled! Check earlier log messages for details.\r\n");
+
241 begin_error = true;
+
242 }
+
243 return;
+
244 }
+
245
+
246 if (WiFi.isConnected()) {
+
247 if (!isConnected()) connect();
+
248 _websocketListener.handle();
+
249 _udpListener.handle();
+
250 }
+
251
+
252 handleReceiveQueue();
+
253 handleSendQueue();
+
254}
+
+
255
+
256DynamicJsonDocument SinricProClass::prepareRequest(String deviceId, const char* action) {
+ + + + +
261
+ + + + +
266 payload[FSTR_SINRICPRO_replyToken] = MessageID().getID();
+ +
268 payload.createNestedObject(FSTR_SINRICPRO_value);
+
269 return requestMessage;
+
270}
+
271
+
272void SinricProClass::handleResponse(DynamicJsonDocument& responseMessage) {
+
273 (void)responseMessage;
+
274 DEBUG_SINRIC("[SinricPro.handleResponse()]:\r\n");
+
275
+
276#ifndef NODEBUG_SINRIC
+
277 serializeJsonPretty(responseMessage, DEBUG_ESP_PORT);
+
278 Serial.println();
+
279#endif
+
280}
+
281
+
282void SinricProClass::handleRequest(DynamicJsonDocument& requestMessage, interface_t Interface) {
+
283 DEBUG_SINRIC("[SinricPro.handleRequest()]: handling request\r\n");
+
284#ifndef NODEBUG_SINRIC
+
285 serializeJsonPretty(requestMessage, DEBUG_ESP_PORT);
+
286#endif
+
287
+
288 DynamicJsonDocument responseMessage = prepareResponse(requestMessage);
+
289
+
290 // handle devices
+
291 bool success = false;
+
292 const char* deviceId = requestMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_deviceId];
+
293 String action = requestMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_action] | "";
+
294 String instance = requestMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_instanceId] | "";
+
295 JsonObject request_value = requestMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
+
296 JsonObject response_value = responseMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
+
297
+
298 for (auto& device : devices) {
+
299 if (device->getDeviceId() == deviceId && success == false) {
+
300 SinricProRequest request{
+
301 action,
+
302 instance,
+
303 request_value,
+
304 response_value};
+
305 success = device->handleRequest(request);
+
306 responseMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_success] = success;
+
307 if (!success) {
+
308 if (responseMessageStr.length() > 0) {
+
309 responseMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_message] = responseMessageStr;
+
310 responseMessageStr = "";
+
311 } else {
+
312 responseMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_message] = "Device did not handle \"" + action + "\"";
+
313 }
+
314 }
+
315 }
+
316 }
+
317
+
318 String responseString;
+
319 serializeJson(responseMessage, responseString);
+
320 sendQueue.push(new SinricProMessage(Interface, responseString.c_str()));
+
321}
+
322
+
323void SinricProClass::handleReceiveQueue() {
+
324 if (receiveQueue.size() == 0) return;
+
325
+
326 DEBUG_SINRIC("[SinricPro.handleReceiveQueue()]: %i message(s) in receiveQueue\r\n", receiveQueue.size());
+
327 while (receiveQueue.size() > 0) {
+
328 SinricProMessage* rawMessage = receiveQueue.front();
+
329 receiveQueue.pop();
+
330 DynamicJsonDocument jsonMessage(1024);
+
331 deserializeJson(jsonMessage, rawMessage->getMessage());
+
332
+
333 bool sigMatch = false;
+
334
+
335 if (strncmp(rawMessage->getMessage(), "{\"timestamp\":", 13) == 0 && strlen(rawMessage->getMessage()) <= 26) {
+
336 sigMatch = true; // timestamp message has no signature...ignore sigMatch for this!
+
337 } else {
+
338 String signature = jsonMessage[FSTR_SINRICPRO_signature][FSTR_SINRICPRO_HMAC] | "";
+
339 String payload = extractPayload(rawMessage->getMessage());
+
340 String calculatedSignature = calculateSignature(appSecret.c_str(), payload);
+
341 sigMatch = (calculatedSignature == signature);
+
342 }
+
343
+
344 String messageType = jsonMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_type];
+
345
+
346 if (sigMatch) { // signature is valid process message
+
347 DEBUG_SINRIC("[SinricPro.handleReceiveQueue()]: Signature is valid. Processing message...\r\n");
+
348 extractTimestamp(jsonMessage);
+
349 if (messageType == FSTR_SINRICPRO_response) handleResponse(jsonMessage);
+
350 if (messageType == FSTR_SINRICPRO_request) handleRequest(jsonMessage, rawMessage->getInterface());
+
351 } else {
+
352 DEBUG_SINRIC("[SinricPro.handleReceiveQueue()]: Signature is invalid! Sending messsage to [dev/null] ;)\r\n");
+
353 }
+
354 delete rawMessage;
+
355 }
+
356}
+
357
+
358void SinricProClass::handleSendQueue() {
+
359 if (!isConnected()) return;
+
360 if (!timestamp.getTimestamp()) return;
+
361 while (sendQueue.size() > 0) {
+
362 DEBUG_SINRIC("[SinricPro:handleSendQueue()]: %i message(s) in sendQueue\r\n", sendQueue.size());
+
363 DEBUG_SINRIC("[SinricPro:handleSendQueue()]: Sending message...\r\n");
+
364
+
365 SinricProMessage* rawMessage = sendQueue.front();
+
366 sendQueue.pop();
+
367
+
368 DynamicJsonDocument jsonMessage(1024);
+
369 deserializeJson(jsonMessage, rawMessage->getMessage());
+
370 jsonMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_createdAt] = timestamp.getTimestamp();
+
371 signMessage(appSecret, jsonMessage);
+
372
+
373 String messageStr;
+
374
+
375 serializeJson(jsonMessage, messageStr);
+
376#ifndef NODEBUG_SINRIC
+
377 serializeJsonPretty(jsonMessage, DEBUG_ESP_PORT);
+
378 Serial.println();
+
379#endif
+
380
+
381 switch (rawMessage->getInterface()) {
+
382 case IF_WEBSOCKET:
+
383 DEBUG_SINRIC("[SinricPro:handleSendQueue]: Sending to websocket\r\n");
+
384 _websocketListener.sendMessage(messageStr);
+
385 break;
+
386 case IF_UDP:
+
387 DEBUG_SINRIC("[SinricPro:handleSendQueue]: Sending to UDP\r\n");
+
388 _udpListener.sendMessage(messageStr);
+
389 break;
+
390 default:
+
391 break;
+
392 }
+
393 delete rawMessage;
+
394 DEBUG_SINRIC("[SinricPro:handleSendQueue()]: message sent.\r\n");
+
395 }
+
396}
+
397
+
398void SinricProClass::connect() {
+
399 String deviceList;
+
400 int i = 0;
+
401 for (auto& device : devices) {
+
402 String deviceId = device->getDeviceId();
+
403 if (i > 0) deviceList += ';';
+
404 deviceList += device->getDeviceId();
+
405 i++;
+
406 }
+
407
+
408 _websocketListener.begin(serverURL, appKey, deviceList, &receiveQueue);
+
409}
+
410
+
411void SinricProClass::stop() {
+
412 _begin = false;
+
413 DEBUG_SINRIC("[SinricPro:stop()\r\n");
+
414 _websocketListener.stop();
+
415}
+
416
+
417bool SinricProClass::isConnected() {
+
418 return _websocketListener.isConnected();
+
419};
+
420
+
+ +
431 _websocketListener.onConnected(cb);
+
432}
+
+
433
+
+ +
444 _websocketListener.onDisconnected(cb);
+
445}
+
+
446
+
447void SinricProClass::onPong(PongCallback cb) {
+
448 _websocketListener.onPong(cb);
+
449}
+
450
+
451void SinricProClass::reconnect() {
+
452 DEBUG_SINRIC("SinricPro:reconnect(): disconnecting\r\n");
+
453 stop();
+
454 DEBUG_SINRIC("SinricPro:reconnect(): connecting\r\n");
+
455 connect();
+
456}
+
457
+
458void SinricProClass::onConnect() {
+
459 DEBUG_SINRIC("[SinricPro]: Connected to \"%s\"!]\r\n", serverURL.c_str());
+
460}
+
461
+
462void SinricProClass::onDisconnect() {
+
463 DEBUG_SINRIC("[SinricPro]: Disconnect\r\n");
+
464}
+
465
+
466void SinricProClass::extractTimestamp(JsonDocument& message) {
+
467 unsigned long tempTimestamp = 0;
+
468 // extract timestamp from timestamp message right after websocket connection is established
+
469 tempTimestamp = message["timestamp"] | 0;
+
470 if (tempTimestamp) {
+
471 timestamp.setTimestamp(tempTimestamp);
+
472 DEBUG_SINRIC("[SinricPro:extractTimestamp(): Got Timestamp %lu\r\n", tempTimestamp);
+
473 return;
+
474 }
+
475
+
476 // extract timestamp from request message
+
477 tempTimestamp = message[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_createdAt] | 0;
+
478 if (tempTimestamp) {
+
479 DEBUG_SINRIC("[SinricPro:extractTimestamp(): Got Timestamp %lu\r\n", tempTimestamp);
+
480 timestamp.setTimestamp(tempTimestamp);
+
481 return;
+
482 }
+
483}
+
484
+
485void SinricProClass::sendMessage(JsonDocument& jsonMessage) {
+
486 if (!isConnected()) {
+
487 DEBUG_SINRIC("[SinricPro:sendMessage()]: device is offline, message has been dropped\r\n");
+
488 return;
+
489 }
+
490 DEBUG_SINRIC("[SinricPro:sendMessage()]: pushing message into sendQueue\r\n");
+
491 String messageString;
+
492 serializeJson(jsonMessage, messageString);
+
493 sendQueue.push(new SinricProMessage(IF_WEBSOCKET, messageString.c_str()));
+
494}
+
495
+
+ +
506 _websocketListener.setRestoreDeviceStates(flag);
+
507}
+
+
508
+
+
525SinricProClass::Proxy SinricProClass::operator[](const String deviceId) {
+
526 return Proxy(this, deviceId);
+
527}
+
+
528
+
529void SinricProClass::setResponseMessage(String&& message) {
+
530 responseMessageStr = message;
+
531}
+
532
+
+ +
539 return timestamp.getTimestamp();
+
540}
+
+
541
+
542DynamicJsonDocument SinricProClass::prepareResponse(JsonDocument& requestMessage) {
+ + + + +
547
+ + + + + + + + + + +
558 payload.createNestedObject(FSTR_SINRICPRO_value);
+
559 return responseMessage;
+
560}
+
561
+
562DynamicJsonDocument SinricProClass::prepareEvent(String deviceId, const char* action, const char* cause) {
+
563 DynamicJsonDocument eventMessage(1024);
+
564 JsonObject header = eventMessage.createNestedObject(FSTR_SINRICPRO_header);
+
565 header[FSTR_SINRICPRO_payloadVersion] = 2;
+
566 header[FSTR_SINRICPRO_signatureVersion] = 1;
+
567
+
568 JsonObject payload = eventMessage.createNestedObject(FSTR_SINRICPRO_payload);
+
569 payload[FSTR_SINRICPRO_action] = action;
+
570 payload[FSTR_SINRICPRO_cause].createNestedObject(FSTR_SINRICPRO_type);
+
571 payload[FSTR_SINRICPRO_cause][FSTR_SINRICPRO_type] = cause;
+
572 payload[FSTR_SINRICPRO_createdAt] = 0;
+
573 payload[FSTR_SINRICPRO_deviceId] = deviceId;
+
574 payload[FSTR_SINRICPRO_replyToken] = MessageID().getID();
+
575 payload[FSTR_SINRICPRO_type] = FSTR_SINRICPRO_event;
+
576 payload.createNestedObject(FSTR_SINRICPRO_value);
+
577 return eventMessage;
+
578}
+
579
+
580} // namespace SINRICPRO_NAMESPACE
+
581
+
582SINRICPRO_NAMESPACE::SinricProClass SinricPro;
+
AirQuality.
Definition AirQualitySensor.h:19
+
The main class of this library, handling communication between SinricPro Server and your devices.
Definition SinricPro.h:47
+
void begin(String appKey, String appSecret, String serverURL="ws.sinric.pro")
Initializing SinricProClass to be able to connect to SinricPro Server.
Definition SinricPro.h:176
+
void restoreDeviceStates(bool flag)
Enable / disable restore device states function.
Definition SinricPro.h:505
+
void handle()
Handles communication between device and SinricPro Server.
Definition SinricPro.h:234
+
void onDisconnected(DisconnectedCallbackHandler cb)
Set callback function for websocket disconnected event.
Definition SinricPro.h:443
+
Proxy operator[](const String deviceId)
operator[] is used tor create a new device instance or get an existing device instance
Definition SinricPro.h:525
+
void onConnected(ConnectedCallbackHandler cb)
Set callback function for websocket connected event.
Definition SinricPro.h:430
+
unsigned long getTimestamp() override
Get the current timestamp.
Definition SinricPro.h:538
+
Base class for all device types.
Definition SinricProDevice.h:24
+
std::function< void(void)> DisconnectedCallbackHandler
Callback definition for onDisconnected function.
Definition SinricPro.h:38
+
std::function< void(void)> ConnectedCallbackHandler
Callback definition for onConnected function.
Definition SinricPro.h:29
diff --git a/docs/_sinric_pro_air_quality_sensor_8h_source.html b/docs/_sinric_pro_air_quality_sensor_8h_source.html index d0c9a80..dfa9f0e 100644 --- a/docs/_sinric_pro_air_quality_sensor_8h_source.html +++ b/docs/_sinric_pro_air_quality_sensor_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProAirQualitySensor.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProAirQualitySensor.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,61 +81,65 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProAirQualitySensor.h
+
SinricProAirQualitySensor.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 #pragma once
-
8 
-
9 #include "SinricProDevice.h"
-
10 #include "Capabilities/SettingController.h"
-
11 #include "Capabilities/PushNotification.h"
-
12 #include "Capabilities/PowerStateController.h"
-
13 #include "Capabilities/AirQualitySensor.h"
-
14 
-
15 #include "SinricProNamespace.h"
-
16 namespace SINRICPRO_NAMESPACE {
-
17 
- -
24  public SettingController<SinricProAirQualitySensor>,
-
25  public PushNotification<SinricProAirQualitySensor>,
-
26  public PowerStateController<SinricProAirQualitySensor>,
-
27  public AirQualitySensor<SinricProAirQualitySensor> {
-
28  friend class SettingController<SinricProAirQualitySensor>;
-
29  friend class PushNotification<AirQualitySensor>;
- - -
32 public:
-
33  SinricProAirQualitySensor(const String &deviceId) : SinricProDevice(deviceId, "AIR_QUALITY_SENSOR"){};
-
34 };
-
35 
-
36 } // SINRICPRO_NAMESPACE
-
37 
-
38 using SinricProAirQualitySensor = SINRICPRO_NAMESPACE::SinricProAirQualitySensor;
-
AirQuality.
Definition: AirQualitySensor.h:19
-
PowerStateController.
Definition: PowerStateController.h:36
-
PushNotification.
Definition: PushNotification.h:17
-
Device to report air quality events.
Definition: SinricProAirQualitySensor.h:27
-
Base class for all device types.
Definition: SinricProDevice.h:24
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7#pragma once
+
8
+
9#include "SinricProDevice.h"
+
10#include "Capabilities/SettingController.h"
+
11#include "Capabilities/PushNotification.h"
+
12#include "Capabilities/AirQualitySensor.h"
+
13
+
14#include "SinricProNamespace.h"
+
15namespace SINRICPRO_NAMESPACE {
+
16
+
+ +
23 public SettingController<SinricProAirQualitySensor>,
+
24 public PushNotification<SinricProAirQualitySensor>,
+
25 public AirQualitySensor<SinricProAirQualitySensor> {
+
26 friend class SettingController<SinricProAirQualitySensor>;
+ + +
29public:
+
30 SinricProAirQualitySensor(const String &deviceId) : SinricProDevice(deviceId, "AIR_QUALITY_SENSOR"){};
+
31};
+
+
32
+
33} // SINRICPRO_NAMESPACE
+
34
+
35using SinricProAirQualitySensor = SINRICPRO_NAMESPACE::SinricProAirQualitySensor;
+
AirQuality.
Definition AirQualitySensor.h:19
+
PushNotification.
Definition PushNotification.h:17
+
Device to report air quality events.
Definition SinricProAirQualitySensor.h:25
+
Base class for all device types.
Definition SinricProDevice.h:24
diff --git a/docs/_sinric_pro_blinds_8h_source.html b/docs/_sinric_pro_blinds_8h_source.html index 1168142..c8091f8 100644 --- a/docs/_sinric_pro_blinds_8h_source.html +++ b/docs/_sinric_pro_blinds_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProBlinds.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProBlinds.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,61 +81,69 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProBlinds.h
+
SinricProBlinds.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 #pragma once
-
8 
-
9 #include "SinricProDevice.h"
-
10 #include "Capabilities/SettingController.h"
-
11 #include "Capabilities/PushNotification.h"
-
12 #include "Capabilities/RangeController.h"
-
13 #include "Capabilities/PowerStateController.h"
-
14 
-
15 #include "SinricProNamespace.h"
-
16 namespace SINRICPRO_NAMESPACE {
-
17 
- -
29  public SettingController<SinricProBlinds>,
-
30  public PushNotification<SinricProBlinds>,
-
31  public PowerStateController<SinricProBlinds>,
-
32  public RangeController<SinricProBlinds> {
-
33  friend class SettingController<SinricProBlinds>;
-
34  friend class PushNotification<SinricProBlinds>;
- -
36  friend class RangeController<SinricProBlinds>;
-
37  public:
-
38  SinricProBlinds(const String &deviceId) : SinricProDevice(deviceId, "BLIND"){}
-
39 };
-
40 
-
41 } // SINRICPRO_NAMESPACE
-
42 
-
43 using SinricProBlinds = SINRICPRO_NAMESPACE::SinricProBlinds;
-
PowerStateController.
Definition: PowerStateController.h:36
-
PushNotification.
Definition: PushNotification.h:17
-
RangeControllerFloatInt.
Definition: RangeController.h:109
-
Device to control interior blinds.
Definition: SinricProBlinds.h:32
-
Base class for all device types.
Definition: SinricProDevice.h:24
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7#pragma once
+
8
+
9#include "SinricProDevice.h"
+
10#include "Capabilities/SettingController.h"
+
11#include "Capabilities/PushNotification.h"
+
12#include "Capabilities/RangeController.h"
+
13#include "Capabilities/PowerStateController.h"
+
14
+
15#include "SinricProNamespace.h"
+
16namespace SINRICPRO_NAMESPACE {
+
17
+
+ +
29 public SettingController<SinricProBlinds>,
+
30 public PushNotification<SinricProBlinds>,
+
31 public PowerStateController<SinricProBlinds>,
+
32 public RangeController<SinricProBlinds> {
+
33 friend class SettingController<SinricProBlinds>;
+ + +
36 friend class RangeController<SinricProBlinds>;
+
37 public:
+
38 SinricProBlinds(const String &deviceId) : SinricProDevice(deviceId, "BLIND"){}
+
39};
+
+
40
+
41} // SINRICPRO_NAMESPACE
+
42
+
43using SinricProBlinds = SINRICPRO_NAMESPACE::SinricProBlinds;
+
PowerStateController.
Definition PowerStateController.h:36
+
PushNotification.
Definition PushNotification.h:17
+
RangeControllerFloatInt.
Definition RangeController.h:109
+
Device to control interior blinds.
Definition SinricProBlinds.h:32
+
Base class for all device types.
Definition SinricProDevice.h:24
diff --git a/docs/_sinric_pro_camera_8h_source.html b/docs/_sinric_pro_camera_8h_source.html index fa64728..4c5fced 100644 --- a/docs/_sinric_pro_camera_8h_source.html +++ b/docs/_sinric_pro_camera_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProCamera.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProCamera.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,58 +81,66 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProCamera.h
+
SinricProCamera.h
-
1 
-
2 /*
-
3  * Copyright (c) 2019 Sinric. All rights reserved.
-
4  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
5  *
-
6  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
7  */
-
8 #pragma once
-
9 
-
10 #include "SinricProDevice.h"
-
11 #include "Capabilities/SettingController.h"
-
12 #include "Capabilities/PushNotification.h"
-
13 #include "Capabilities/PowerStateController.h"
-
14 
-
15 #include "SinricProNamespace.h"
-
16 namespace SINRICPRO_NAMESPACE {
-
17 
- -
24  public SettingController<SinricProCamera>,
-
25  public PushNotification<SinricProCamera>,
-
26  public PowerStateController<SinricProCamera> {
-
27  friend class SettingController<SinricProCamera>;
-
28  friend class PushNotification<SinricProCamera>;
- -
30  public:
-
31  SinricProCamera(const String &deviceId) : SinricProDevice(deviceId, "CAMERA") {}
-
32 };
-
33 
-
34 } // SINRICPRO_NAMESPACE
-
35 
-
36 using SinricProCamera = SINRICPRO_NAMESPACE::SinricProCamera;
-
PowerStateController.
Definition: PowerStateController.h:36
-
PushNotification.
Definition: PushNotification.h:17
-
Camera suporting basic on / off command.
Definition: SinricProCamera.h:26
-
Base class for all device types.
Definition: SinricProDevice.h:24
+
1
+
2/*
+
3 * Copyright (c) 2019 Sinric. All rights reserved.
+
4 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
5 *
+
6 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
7 */
+
8#pragma once
+
9
+
10#include "SinricProDevice.h"
+
11#include "Capabilities/SettingController.h"
+
12#include "Capabilities/PushNotification.h"
+
13#include "Capabilities/PowerStateController.h"
+
14
+
15#include "SinricProNamespace.h"
+
16namespace SINRICPRO_NAMESPACE {
+
17
+
+ +
24 public SettingController<SinricProCamera>,
+
25 public PushNotification<SinricProCamera>,
+
26 public PowerStateController<SinricProCamera> {
+
27 friend class SettingController<SinricProCamera>;
+ + +
30 public:
+
31 SinricProCamera(const String &deviceId) : SinricProDevice(deviceId, "CAMERA") {}
+
32};
+
+
33
+
34} // SINRICPRO_NAMESPACE
+
35
+
36using SinricProCamera = SINRICPRO_NAMESPACE::SinricProCamera;
+
PowerStateController.
Definition PowerStateController.h:36
+
PushNotification.
Definition PushNotification.h:17
+
Camera suporting basic on / off command.
Definition SinricProCamera.h:26
+
Base class for all device types.
Definition SinricProDevice.h:24
diff --git a/docs/_sinric_pro_config_8h_source.html b/docs/_sinric_pro_config_8h_source.html index fb2fde8..1fa4d6c 100644 --- a/docs/_sinric_pro_config_8h_source.html +++ b/docs/_sinric_pro_config_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProConfig.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProConfig.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,71 +81,77 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProConfig.h
+
SinricProConfig.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 /*
-
10  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
11  * !! !!
-
12  * !! WARNING: DON'T TOUCH ! !!
-
13  * !! ====================== !!
-
14  * !! PLEASE DO NOT MODIFY ANY OF THESE SETTINGS HERE !!
-
15  * !! THIS IS FOR INTERNAL CONFIGURATION ONLY !!
-
16  * !! SINRIC PRO MIGHT NOT WORK IF YOU MODIFY THIS !!
-
17  * !! !!
-
18  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
19  */
-
20 
-
21 #pragma once
-
22 
-
23 // Server Configuration
-
24 #ifndef SINRICPRO_NOSSL
-
25 #define WEBSOCKET_SSL
-
26 #endif
-
27 
-
28 #define SINRICPRO_SERVER_URL "ws.sinric.pro"
-
29 #define SINRICPRO_SERVER_PORT 80
-
30 #define SINRICPRO_SERVER_SSL_PORT 443
-
31 
-
32 // UDP Configuration
-
33 #define UDP_MULTICAST_IP IPAddress(224,9,9,9)
-
34 #define UDP_MULTICAST_PORT 3333
-
35 
-
36 // WebSocket Configuration
-
37 #ifdef DEBUG_WIFI_ISSUE
-
38  #define WEBSOCKET_PING_INTERVAL 10000
-
39 #else
-
40  #define WEBSOCKET_PING_INTERVAL 300000
-
41 #endif
-
42 #define WEBSOCKET_PING_TIMEOUT 10000
-
43 #define WEBSOCKET_RETRY_COUNT 2
-
44 
-
45 // EventLimiter Configuration
-
46 #define EVENT_LIMIT_STATE 1000
-
47 #define EVENT_LIMIT_SENSOR_STATE EVENT_LIMIT_STATE
-
48 #define EVENT_LIMIT_SENSOR_VALUE 60000
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9/*
+
10 * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
11 * !! !!
+
12 * !! WARNING: DON'T TOUCH ! !!
+
13 * !! ====================== !!
+
14 * !! PLEASE DO NOT MODIFY ANY OF THESE SETTINGS HERE !!
+
15 * !! THIS IS FOR INTERNAL CONFIGURATION ONLY !!
+
16 * !! SINRIC PRO MIGHT NOT WORK IF YOU MODIFY THIS !!
+
17 * !! !!
+
18 * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
19 */
+
20
+
21#pragma once
+
22
+
23// Server Configuration
+
24#ifndef SINRICPRO_NOSSL
+
25#define WEBSOCKET_SSL
+
26#endif
+
27
+
28#define SINRICPRO_SERVER_URL "ws.sinric.pro"
+
29#define SINRICPRO_SERVER_PORT 80
+
30#define SINRICPRO_SERVER_SSL_PORT 443
+
31
+
32// UDP Configuration
+
33#define UDP_MULTICAST_IP IPAddress(224,9,9,9)
+
34#define UDP_MULTICAST_PORT 3333
+
35
+
36// WebSocket Configuration
+
37#ifdef DEBUG_WIFI_ISSUE
+
38 #define WEBSOCKET_PING_INTERVAL 10000
+
39#else
+
40 #define WEBSOCKET_PING_INTERVAL 300000
+
41#endif
+
42#define WEBSOCKET_PING_TIMEOUT 10000
+
43#define WEBSOCKET_RETRY_COUNT 2
+
44
+
45// EventLimiter Configuration
+
46#define EVENT_LIMIT_STATE 1000
+
47#define EVENT_LIMIT_SENSOR_STATE EVENT_LIMIT_STATE
+
48#define EVENT_LIMIT_SENSOR_VALUE 60000
diff --git a/docs/_sinric_pro_contactsensor_8h_source.html b/docs/_sinric_pro_contactsensor_8h_source.html index ca1d056..9f01109 100644 --- a/docs/_sinric_pro_contactsensor_8h_source.html +++ b/docs/_sinric_pro_contactsensor_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProContactsensor.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProContactsensor.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,61 +81,65 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProContactsensor.h
+
SinricProContactsensor.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 #pragma once
-
8 
-
9 #include "SinricProDevice.h"
-
10 #include "Capabilities/SettingController.h"
-
11 #include "Capabilities/PushNotification.h"
-
12 #include "Capabilities/PowerStateController.h"
-
13 #include "Capabilities/ContactSensor.h"
-
14 
-
15 #include "SinricProNamespace.h"
-
16 namespace SINRICPRO_NAMESPACE {
-
17 
- -
24  public SettingController<SinricProContactsensor>,
-
25  public PushNotification<SinricProContactsensor>,
-
26  public PowerStateController<SinricProContactsensor>,
-
27  public ContactSensor<SinricProContactsensor> {
-
28  friend class SettingController<SinricProContactsensor>;
- - - -
32  public:
-
33  SinricProContactsensor(const String &deviceId) : SinricProDevice(deviceId, "CONTACT_SENSOR") {}
-
34 };
-
35 
-
36 } // SINRICPRO_NAMESPACE
-
37 
-
38 using SinricProContactsensor = SINRICPRO_NAMESPACE::SinricProContactsensor;
-
ContactSensor.
Definition: ContactSensor.h:19
-
PowerStateController.
Definition: PowerStateController.h:36
-
PushNotification.
Definition: PushNotification.h:17
-
Device to report contact sensor events.
Definition: SinricProContactsensor.h:27
-
Base class for all device types.
Definition: SinricProDevice.h:24
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7#pragma once
+
8
+
9#include "SinricProDevice.h"
+
10#include "Capabilities/SettingController.h"
+
11#include "Capabilities/PushNotification.h"
+
12#include "Capabilities/ContactSensor.h"
+
13
+
14#include "SinricProNamespace.h"
+
15namespace SINRICPRO_NAMESPACE {
+
16
+
+ +
23 public SettingController<SinricProContactsensor>,
+
24 public PushNotification<SinricProContactsensor>,
+
25 public ContactSensor<SinricProContactsensor> {
+
26 friend class SettingController<SinricProContactsensor>;
+ + +
29 public:
+
30 SinricProContactsensor(const String &deviceId) : SinricProDevice(deviceId, "CONTACT_SENSOR") {}
+
31};
+
+
32
+
33} // SINRICPRO_NAMESPACE
+
34
+
35using SinricProContactsensor = SINRICPRO_NAMESPACE::SinricProContactsensor;
+
ContactSensor.
Definition ContactSensor.h:19
+
PushNotification.
Definition PushNotification.h:17
+
Device to report contact sensor events.
Definition SinricProContactsensor.h:25
+
Base class for all device types.
Definition SinricProDevice.h:24
diff --git a/docs/_sinric_pro_debug_8h_source.html b/docs/_sinric_pro_debug_8h_source.html index 43acaea..d972984 100644 --- a/docs/_sinric_pro_debug_8h_source.html +++ b/docs/_sinric_pro_debug_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProDebug.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProDebug.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,45 +81,51 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProDebug.h
+
SinricProDebug.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #ifndef NODEBUG_SINRIC
-
11 #ifdef DEBUG_ESP_PORT
-
12 #define DEBUG_SINRIC(...) DEBUG_ESP_PORT.printf( __VA_ARGS__ )
-
13 #else
-
14 //#define DEBUG_WEBSOCKETS(...) os_printf( __VA_ARGS__ )
-
15 #endif
-
16 #endif
-
17 
-
18 
-
19 #ifndef DEBUG_SINRIC
-
20 #define DEBUG_SINRIC(...)
-
21 #define NODEBUG_SINRIC
-
22 #endif
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#ifndef NODEBUG_SINRIC
+
11#ifdef DEBUG_ESP_PORT
+
12#define DEBUG_SINRIC(...) DEBUG_ESP_PORT.printf( __VA_ARGS__ )
+
13#else
+
14//#define DEBUG_WEBSOCKETS(...) os_printf( __VA_ARGS__ )
+
15#endif
+
16#endif
+
17
+
18
+
19#ifndef DEBUG_SINRIC
+
20#define DEBUG_SINRIC(...)
+
21#define NODEBUG_SINRIC
+
22#endif
diff --git a/docs/_sinric_pro_device_8h_source.html b/docs/_sinric_pro_device_8h_source.html index 100b974..5511983 100644 --- a/docs/_sinric_pro_device_8h_source.html +++ b/docs/_sinric_pro_device_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProDevice.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProDevice.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,132 +81,141 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProDevice.h
+
SinricProDevice.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #include "SinricProRequest.h"
-
11 #include "SinricProDeviceInterface.h"
-
12 #include <map>
-
13 
-
14 #include "SinricProNamespace.h"
-
15 namespace SINRICPRO_NAMESPACE {
-
16 
-
24 class SinricProDevice : public SinricProDeviceInterface {
-
25  friend class SinricProClass;
-
26 public:
-
27  SinricProDevice(const String &deviceId, const String &productType = "");
-
28  bool operator==(const String& other);
-
29 
-
30  virtual String getDeviceId();
-
31 protected:
-
32  virtual ~SinricProDevice();
-
33 
-
34  void registerRequestHandler(const SinricProRequestHandler &requestHandler);
-
35  unsigned long getTimestamp();
-
36  virtual bool sendEvent(JsonDocument &event);
-
37  virtual DynamicJsonDocument prepareEvent(const char *action, const char *cause);
-
38 
-
39  virtual String getProductType();
-
40  virtual void begin(SinricProInterface *eventSender);
-
41  bool handleRequest(SinricProRequest &request);
-
42 
-
43  String deviceId;
-
44  std::vector<SinricProRequestHandler> requestHandlers;
-
45 
-
46 private:
-
47  SinricProInterface *eventSender;
-
48  String productType;
-
49 };
-
50 
-
51 SinricProDevice::SinricProDevice(const String &deviceId, const String &productType) :
-
52  deviceId(deviceId),
-
53  eventSender(nullptr),
-
54  productType(productType) {
-
55 }
-
56 
-
57 SinricProDevice::~SinricProDevice() {}
-
58 
-
59 void SinricProDevice::begin(SinricProInterface* eventSender) {
-
60  this->eventSender = eventSender;
-
61 }
-
62 
-
63 String SinricProDevice::getDeviceId() {
-
64  return deviceId;
-
65 }
-
66 
-
67 bool SinricProDevice::operator==(const String &other) {
-
68  return other == deviceId;
-
69 }
-
70 
-
71 DynamicJsonDocument SinricProDevice::prepareEvent(const char* action, const char* cause) {
-
72  if (eventSender) return eventSender->prepareEvent(deviceId, action, cause);
-
73  DEBUG_SINRIC("[SinricProDevice:prepareEvent()]: Device \"%s\" isn't configured correctly! The \'%s\' event will be ignored.\r\n", deviceId.c_str(), action);
-
74  return DynamicJsonDocument(1024);
-
75 }
-
76 
-
77 
-
78 bool SinricProDevice::sendEvent(JsonDocument& event) {
-
79  if (!SinricPro.isConnected()) {
-
80  DEBUG_SINRIC("[SinricProDevice::sendEvent]: The event could not be sent. No connection to the SinricPro server.\r\n");
-
81  return false;
-
82  }
-
83 
-
84  if (eventSender) {
-
85  eventSender->sendMessage(event);
-
86  return true;
-
87  }
-
88 
-
89  return false;
-
90 }
-
91 
-
92 void SinricProDevice::registerRequestHandler(const SinricProRequestHandler &requestHandler) {
-
93  requestHandlers.push_back(requestHandler);
-
94 }
-
95 
-
96 unsigned long SinricProDevice::getTimestamp() {
-
97  if (eventSender) return eventSender->getTimestamp();
-
98  return 0;
-
99 }
-
100 
-
101 String SinricProDevice::getProductType() {
-
102  return String("sinric.device.type.")+productType;
-
103 }
-
104 
-
105 bool SinricProDevice::handleRequest(SinricProRequest &request) {
-
106  for (auto& requestHandler : requestHandlers) {
-
107  if (requestHandler(request)) return true;
-
108  }
-
109  return false;
-
110 }
-
111 
-
112 } // SINRICPRO_NAMESPACE
-
113 
-
114 using SinricProDevice = SINRICPRO_NAMESPACE::SinricProDevice;
-
The main class of this library, handling communication between SinricPro Server and your devices.
Definition: SinricPro.h:45
-
Base class for all device types.
Definition: SinricProDevice.h:24
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#include "SinricProRequest.h"
+
11#include "SinricProDeviceInterface.h"
+
12#include <map>
+
13
+
14#include "SinricProNamespace.h"
+
15namespace SINRICPRO_NAMESPACE {
+
16
+
+
24class SinricProDevice : public SinricProDeviceInterface {
+
25 friend class SinricProClass;
+
26public:
+
27 SinricProDevice(const String &deviceId, const String &productType = "");
+
28 bool operator==(const String& other);
+
29
+
30 virtual String getDeviceId();
+
31protected:
+
32 virtual ~SinricProDevice();
+
33
+
34 void registerRequestHandler(const SinricProRequestHandler &requestHandler);
+
35 unsigned long getTimestamp();
+
36 virtual bool sendEvent(JsonDocument &event);
+
37 virtual DynamicJsonDocument prepareEvent(const char *action, const char *cause);
+
38
+
39 virtual String getProductType();
+
40 virtual void begin(SinricProInterface *eventSender);
+
41 bool handleRequest(SinricProRequest &request);
+
42
+
43 String deviceId;
+
44 std::vector<SinricProRequestHandler> requestHandlers;
+
45
+
46private:
+
47 SinricProInterface *eventSender;
+
48 String productType;
+
49};
+
+
50
+
51SinricProDevice::SinricProDevice(const String &deviceId, const String &productType) :
+
52 deviceId(deviceId),
+
53 eventSender(nullptr),
+
54 productType(productType) {
+
55}
+
56
+
57SinricProDevice::~SinricProDevice() {}
+
58
+
59void SinricProDevice::begin(SinricProInterface* eventSender) {
+
60 this->eventSender = eventSender;
+
61}
+
62
+
63String SinricProDevice::getDeviceId() {
+
64 return deviceId;
+
65}
+
66
+
67bool SinricProDevice::operator==(const String &other) {
+
68 return other == deviceId;
+
69}
+
70
+
71DynamicJsonDocument SinricProDevice::prepareEvent(const char* action, const char* cause) {
+
72 if (eventSender) return eventSender->prepareEvent(deviceId, action, cause);
+
73 DEBUG_SINRIC("[SinricProDevice:prepareEvent()]: Device \"%s\" isn't configured correctly! The \'%s\' event will be ignored.\r\n", deviceId.c_str(), action);
+
74 return DynamicJsonDocument(1024);
+
75}
+
76
+
77
+
78bool SinricProDevice::sendEvent(JsonDocument& event) {
+
79 if (!SinricPro.isConnected()) {
+
80 DEBUG_SINRIC("[SinricProDevice::sendEvent]: The event could not be sent. No connection to the SinricPro server.\r\n");
+
81 return false;
+
82 }
+
83
+
84 if (eventSender) {
+
85 eventSender->sendMessage(event);
+
86 return true;
+
87 }
+
88
+
89 return false;
+
90}
+
91
+
92void SinricProDevice::registerRequestHandler(const SinricProRequestHandler &requestHandler) {
+
93 requestHandlers.push_back(requestHandler);
+
94}
+
95
+
96unsigned long SinricProDevice::getTimestamp() {
+
97 if (eventSender) return eventSender->getTimestamp();
+
98 return 0;
+
99}
+
100
+
101String SinricProDevice::getProductType() {
+
102 return String("sinric.device.type.")+productType;
+
103}
+
104
+
105bool SinricProDevice::handleRequest(SinricProRequest &request) {
+
106 for (auto& requestHandler : requestHandlers) {
+
107 if (requestHandler(request)) return true;
+
108 }
+
109 return false;
+
110}
+
111
+
112} // SINRICPRO_NAMESPACE
+
113
+
114using SinricProDevice = SINRICPRO_NAMESPACE::SinricProDevice;
+
AirQuality.
Definition AirQualitySensor.h:19
+
The main class of this library, handling communication between SinricPro Server and your devices.
Definition SinricPro.h:47
+
Base class for all device types.
Definition SinricProDevice.h:24
diff --git a/docs/_sinric_pro_device_interface_8h_source.html b/docs/_sinric_pro_device_interface_8h_source.html index e1ab447..fb3a1b7 100644 --- a/docs/_sinric_pro_device_interface_8h_source.html +++ b/docs/_sinric_pro_device_interface_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProDeviceInterface.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProDeviceInterface.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,42 +81,48 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProDeviceInterface.h
+
SinricProDeviceInterface.h
-
1 #pragma once
-
2 
-
3 #include "SinricProInterface.h"
-
4 #include "SinricProRequest.h"
-
5 
-
6 #include "SinricProNamespace.h"
-
7 namespace SINRICPRO_NAMESPACE {
-
8 
-
9 class SinricProDeviceInterface {
-
10  friend class SinricProClass;
-
11  protected:
-
12  virtual bool handleRequest(SinricProRequest &request) = 0;
-
13  virtual String getDeviceId() = 0;
-
14  virtual String getProductType() = 0;
-
15  virtual void begin(SinricProInterface* eventSender) = 0;
-
16  virtual unsigned long getTimestamp();
-
17 };
-
18 
-
19 } // SINRICPRO_NAMESPACE
+
1#pragma once
+
2
+
3#include "SinricProInterface.h"
+
4#include "SinricProRequest.h"
+
5
+
6#include "SinricProNamespace.h"
+
7namespace SINRICPRO_NAMESPACE {
+
8
+
9class SinricProDeviceInterface {
+
10 friend class SinricProClass;
+
11 protected:
+
12 virtual bool handleRequest(SinricProRequest &request) = 0;
+
13 virtual String getDeviceId() = 0;
+
14 virtual String getProductType() = 0;
+
15 virtual void begin(SinricProInterface* eventSender) = 0;
+
16 virtual unsigned long getTimestamp();
+
17};
+
18
+
19} // SINRICPRO_NAMESPACE
diff --git a/docs/_sinric_pro_dim_switch_8h_source.html b/docs/_sinric_pro_dim_switch_8h_source.html index b54e5f5..180a089 100644 --- a/docs/_sinric_pro_dim_switch_8h_source.html +++ b/docs/_sinric_pro_dim_switch_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProDimSwitch.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProDimSwitch.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,62 +81,70 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProDimSwitch.h
+
SinricProDimSwitch.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #include "SinricProDevice.h"
-
11 #include "Capabilities/SettingController.h"
-
12 #include "Capabilities/PushNotification.h"
-
13 #include "Capabilities/PowerStateController.h"
-
14 #include "Capabilities/PowerLevelController.h"
-
15 
-
16 #include "SinricProNamespace.h"
-
17 namespace SINRICPRO_NAMESPACE {
-
18 
- -
25  public SettingController<SinricProDimSwitch>,
-
26  public PushNotification<SinricProDimSwitch>,
-
27  public PowerStateController<SinricProDimSwitch>,
-
28  public PowerLevelController<SinricProDimSwitch> {
-
29  friend class SettingController<SinricProDimSwitch>;
- - - -
33  public:
-
34  SinricProDimSwitch(const String &deviceId) : SinricProDevice(deviceId, "DIMMABLE_SWITCH"){};
-
35 };
-
36 
-
37 } // SINRICPRO_NAMESPACE
-
38 
-
39 using SinricProDimSwitch = SINRICPRO_NAMESPACE::SinricProDimSwitch;
-
PowerLevelController.
Definition: PowerLevelController.h:53
-
PowerStateController.
Definition: PowerStateController.h:36
-
PushNotification.
Definition: PushNotification.h:17
-
Base class for all device types.
Definition: SinricProDevice.h:24
-
Device which supports on / off and dimming commands.
Definition: SinricProDimSwitch.h:28
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#include "SinricProDevice.h"
+
11#include "Capabilities/SettingController.h"
+
12#include "Capabilities/PushNotification.h"
+
13#include "Capabilities/PowerStateController.h"
+
14#include "Capabilities/PowerLevelController.h"
+
15
+
16#include "SinricProNamespace.h"
+
17namespace SINRICPRO_NAMESPACE {
+
18
+
+ +
25 public SettingController<SinricProDimSwitch>,
+
26 public PushNotification<SinricProDimSwitch>,
+
27 public PowerStateController<SinricProDimSwitch>,
+
28 public PowerLevelController<SinricProDimSwitch> {
+
29 friend class SettingController<SinricProDimSwitch>;
+ + + +
33 public:
+
34 SinricProDimSwitch(const String &deviceId) : SinricProDevice(deviceId, "DIMMABLE_SWITCH"){};
+
35};
+
+
36
+
37} // SINRICPRO_NAMESPACE
+
38
+
39using SinricProDimSwitch = SINRICPRO_NAMESPACE::SinricProDimSwitch;
+
PowerLevelController.
Definition PowerLevelController.h:53
+
PowerStateController.
Definition PowerStateController.h:36
+
PushNotification.
Definition PushNotification.h:17
+
Base class for all device types.
Definition SinricProDevice.h:24
+
Device which supports on / off and dimming commands.
Definition SinricProDimSwitch.h:28
diff --git a/docs/_sinric_pro_doorbell_8h_source.html b/docs/_sinric_pro_doorbell_8h_source.html index 51769c7..0537d0c 100644 --- a/docs/_sinric_pro_doorbell_8h_source.html +++ b/docs/_sinric_pro_doorbell_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProDoorbell.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProDoorbell.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,61 +81,69 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProDoorbell.h
+
SinricProDoorbell.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 #pragma once
-
8 
-
9 #include "SinricProDevice.h"
-
10 #include "Capabilities/SettingController.h"
-
11 #include "Capabilities/PushNotification.h"
-
12 #include "Capabilities/PowerStateController.h"
-
13 #include "Capabilities/Doorbell.h"
-
14 
-
15 #include "SinricProNamespace.h"
-
16 namespace SINRICPRO_NAMESPACE {
-
17 
- -
24  public SettingController<SinricProDoorbell>,
-
25  public PushNotification<SinricProDoorbell>,
-
26  public PowerStateController<SinricProDoorbell>,
-
27  public Doorbell<SinricProDoorbell> {
-
28  friend class SettingController<SinricProDoorbell>;
-
29  friend class PushNotification<SinricProDoorbell>;
- -
31  friend class Doorbell<SinricProDoorbell>;
-
32  public:
-
33  SinricProDoorbell(const String &deviceId) : SinricProDevice(deviceId, "CONTACT_SENSOR") {}
-
34 };
-
35 
-
36 } // Namespace
-
37 
-
38 using SinricProDoorbell = SINRICPRO_NAMESPACE::SinricProDoorbell;
-
Dorbell.
Definition: Doorbell.h:18
-
PowerStateController.
Definition: PowerStateController.h:36
-
PushNotification.
Definition: PushNotification.h:17
-
Base class for all device types.
Definition: SinricProDevice.h:24
-
Device to report doorbell events.
Definition: SinricProDoorbell.h:27
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7#pragma once
+
8
+
9#include "SinricProDevice.h"
+
10#include "Capabilities/SettingController.h"
+
11#include "Capabilities/PushNotification.h"
+
12#include "Capabilities/PowerStateController.h"
+
13#include "Capabilities/Doorbell.h"
+
14
+
15#include "SinricProNamespace.h"
+
16namespace SINRICPRO_NAMESPACE {
+
17
+
+ +
24 public SettingController<SinricProDoorbell>,
+
25 public PushNotification<SinricProDoorbell>,
+
26 public PowerStateController<SinricProDoorbell>,
+
27 public Doorbell<SinricProDoorbell> {
+
28 friend class SettingController<SinricProDoorbell>;
+ + +
31 friend class Doorbell<SinricProDoorbell>;
+
32 public:
+
33 SinricProDoorbell(const String &deviceId) : SinricProDevice(deviceId, "CONTACT_SENSOR") {}
+
34};
+
+
35
+
36} // Namespace
+
37
+
38using SinricProDoorbell = SINRICPRO_NAMESPACE::SinricProDoorbell;
+
Dorbell.
Definition Doorbell.h:18
+
PowerStateController.
Definition PowerStateController.h:36
+
PushNotification.
Definition PushNotification.h:17
+
Base class for all device types.
Definition SinricProDevice.h:24
+
Device to report doorbell events.
Definition SinricProDoorbell.h:27
diff --git a/docs/_sinric_pro_fan_8h_source.html b/docs/_sinric_pro_fan_8h_source.html index 76efa40..6716629 100644 --- a/docs/_sinric_pro_fan_8h_source.html +++ b/docs/_sinric_pro_fan_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProFan.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProFan.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,62 +81,70 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProFan.h
+
SinricProFan.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #include "SinricProDevice.h"
-
11 #include "Capabilities/SettingController.h"
-
12 #include "Capabilities/PushNotification.h"
-
13 #include "Capabilities/PowerStateController.h"
-
14 #include "Capabilities/PowerLevelController.h"
-
15 
-
16 #include "SinricProNamespace.h"
-
17 namespace SINRICPRO_NAMESPACE {
-
18 
- -
25  public SettingController<SinricProFan>,
-
26  public PushNotification<SinricProFan>,
-
27  public PowerStateController<SinricProFan>,
-
28  public PowerLevelController<SinricProFan> {
-
29  friend class SettingController<SinricProFan>;
-
30  friend class PushNotification<SinricProFan>;
-
31  friend class PowerStateController<SinricProFan>;
-
32  friend class PowerLevelController<SinricProFan>;
-
33  public:
-
34  SinricProFan(const String &deviceId) : SinricProDevice(deviceId, "FAN_NON-US") {}
-
35 };
-
36 
-
37 } // Namespace
-
38 
-
39 using SinricProFan = SINRICPRO_NAMESPACE::SinricProFan;
-
PowerLevelController.
Definition: PowerLevelController.h:53
-
PowerStateController.
Definition: PowerStateController.h:36
-
PushNotification.
Definition: PushNotification.h:17
-
Base class for all device types.
Definition: SinricProDevice.h:24
-
Device to turn on / off a fan and change it's speed by using powerlevel.
Definition: SinricProFan.h:28
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#include "SinricProDevice.h"
+
11#include "Capabilities/SettingController.h"
+
12#include "Capabilities/PushNotification.h"
+
13#include "Capabilities/PowerStateController.h"
+
14#include "Capabilities/PowerLevelController.h"
+
15
+
16#include "SinricProNamespace.h"
+
17namespace SINRICPRO_NAMESPACE {
+
18
+
+ +
25 public SettingController<SinricProFan>,
+
26 public PushNotification<SinricProFan>,
+
27 public PowerStateController<SinricProFan>,
+
28 public PowerLevelController<SinricProFan> {
+
29 friend class SettingController<SinricProFan>;
+
30 friend class PushNotification<SinricProFan>;
+ + +
33 public:
+
34 SinricProFan(const String &deviceId) : SinricProDevice(deviceId, "FAN_NON-US") {}
+
35};
+
+
36
+
37} // Namespace
+
38
+
39using SinricProFan = SINRICPRO_NAMESPACE::SinricProFan;
+
PowerLevelController.
Definition PowerLevelController.h:53
+
PowerStateController.
Definition PowerStateController.h:36
+
PushNotification.
Definition PushNotification.h:17
+
Base class for all device types.
Definition SinricProDevice.h:24
+
Device to turn on / off a fan and change it's speed by using powerlevel.
Definition SinricProFan.h:28
diff --git a/docs/_sinric_pro_fan_u_s_8h_source.html b/docs/_sinric_pro_fan_u_s_8h_source.html index dd93b76..00db716 100644 --- a/docs/_sinric_pro_fan_u_s_8h_source.html +++ b/docs/_sinric_pro_fan_u_s_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProFanUS.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProFanUS.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,62 +81,70 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProFanUS.h
+
SinricProFanUS.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #include "SinricProDevice.h"
-
11 #include "Capabilities/SettingController.h"
-
12 #include "Capabilities/PushNotification.h"
-
13 #include "Capabilities/PowerStateController.h"
-
14 #include "Capabilities/RangeController.h"
-
15 
-
16 #include "SinricProNamespace.h"
-
17 namespace SINRICPRO_NAMESPACE {
-
18 
- -
25  public SettingController<SinricProFanUS>,
-
26  public PushNotification<SinricProFanUS>,
-
27  public PowerStateController<SinricProFanUS>,
-
28  public RangeController<SinricProFanUS> {
-
29  friend class SettingController<SinricProFanUS>;
-
30  friend class PushNotification<SinricProFanUS>;
- -
32  friend class RangeController<SinricProFanUS>;
-
33  public:
-
34  SinricProFanUS(const String &deviceId) : SinricProDevice(deviceId, "FAN") {}
-
35 };
-
36 
-
37 } // Namespace
-
38 
-
39 using SinricProFanUS = SINRICPRO_NAMESPACE::SinricProFanUS;
-
PowerStateController.
Definition: PowerStateController.h:36
-
PushNotification.
Definition: PushNotification.h:17
-
RangeControllerFloatInt.
Definition: RangeController.h:109
-
Base class for all device types.
Definition: SinricProDevice.h:24
-
Device to control a fan with on / off commands and its speed by a range value.
Definition: SinricProFanUS.h:28
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#include "SinricProDevice.h"
+
11#include "Capabilities/SettingController.h"
+
12#include "Capabilities/PushNotification.h"
+
13#include "Capabilities/PowerStateController.h"
+
14#include "Capabilities/RangeController.h"
+
15
+
16#include "SinricProNamespace.h"
+
17namespace SINRICPRO_NAMESPACE {
+
18
+
+ +
25 public SettingController<SinricProFanUS>,
+
26 public PushNotification<SinricProFanUS>,
+
27 public PowerStateController<SinricProFanUS>,
+
28 public RangeController<SinricProFanUS> {
+
29 friend class SettingController<SinricProFanUS>;
+
30 friend class PushNotification<SinricProFanUS>;
+ +
32 friend class RangeController<SinricProFanUS>;
+
33 public:
+
34 SinricProFanUS(const String &deviceId) : SinricProDevice(deviceId, "FAN") {}
+
35};
+
+
36
+
37} // Namespace
+
38
+
39using SinricProFanUS = SINRICPRO_NAMESPACE::SinricProFanUS;
+
PowerStateController.
Definition PowerStateController.h:36
+
PushNotification.
Definition PushNotification.h:17
+
RangeControllerFloatInt.
Definition RangeController.h:109
+
Base class for all device types.
Definition SinricProDevice.h:24
+
Device to control a fan with on / off commands and its speed by a range value.
Definition SinricProFanUS.h:28
diff --git a/docs/_sinric_pro_garage_door_8h_source.html b/docs/_sinric_pro_garage_door_8h_source.html index abd4c7f..807ea20 100644 --- a/docs/_sinric_pro_garage_door_8h_source.html +++ b/docs/_sinric_pro_garage_door_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProGarageDoor.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProGarageDoor.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,58 +81,66 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProGarageDoor.h
+
SinricProGarageDoor.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #include "SinricProDevice.h"
-
11 #include "Capabilities/SettingController.h"
-
12 #include "Capabilities/PushNotification.h"
-
13 #include "Capabilities/DoorController.h"
-
14 
-
15 #include "SinricProNamespace.h"
-
16 namespace SINRICPRO_NAMESPACE {
-
17 
- -
27  public SettingController<SinricProGarageDoor>,
-
28  public PushNotification<SinricProGarageDoor>,
-
29  public DoorController<SinricProGarageDoor> {
-
30  friend class SettingController<SinricProGarageDoor>;
- -
32  friend class DoorController<SinricProGarageDoor>;
-
33  public:
-
34  SinricProGarageDoor(const String &deviceId) : SinricProDevice(deviceId, "GARAGE_DOOR") {}
-
35 };
-
36 
-
37 } // Namespace
-
38 
-
39 using SinricProGarageDoor = SINRICPRO_NAMESPACE::SinricProGarageDoor;
-
DoorController - only used for GarageDoor device and cannot used as capability for a custom device!
Definition: DoorController.h:36
-
PushNotification.
Definition: PushNotification.h:17
-
Base class for all device types.
Definition: SinricProDevice.h:24
-
Device to control a garage door.
Definition: SinricProGarageDoor.h:29
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#include "SinricProDevice.h"
+
11#include "Capabilities/SettingController.h"
+
12#include "Capabilities/PushNotification.h"
+
13#include "Capabilities/DoorController.h"
+
14
+
15#include "SinricProNamespace.h"
+
16namespace SINRICPRO_NAMESPACE {
+
17
+
+ +
27 public SettingController<SinricProGarageDoor>,
+
28 public PushNotification<SinricProGarageDoor>,
+
29 public DoorController<SinricProGarageDoor> {
+
30 friend class SettingController<SinricProGarageDoor>;
+ + +
33 public:
+
34 SinricProGarageDoor(const String &deviceId) : SinricProDevice(deviceId, "GARAGE_DOOR") {}
+
35};
+
+
36
+
37} // Namespace
+
38
+
39using SinricProGarageDoor = SINRICPRO_NAMESPACE::SinricProGarageDoor;
+
DoorController - only used for GarageDoor device and cannot used as capability for a custom device!
Definition DoorController.h:36
+
PushNotification.
Definition PushNotification.h:17
+
Base class for all device types.
Definition SinricProDevice.h:24
+
Device to control a garage door.
Definition SinricProGarageDoor.h:29
diff --git a/docs/_sinric_pro_interface_8h_source.html b/docs/_sinric_pro_interface_8h_source.html index 8fc12f8..05a615d 100644 --- a/docs/_sinric_pro_interface_8h_source.html +++ b/docs/_sinric_pro_interface_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProInterface.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProInterface.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,48 +81,54 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProInterface.h
+
SinricProInterface.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #include "ArduinoJson.h"
-
11 #include "SinricProQueue.h"
-
12 
-
13 #include "SinricProNamespace.h"
-
14 namespace SINRICPRO_NAMESPACE {
-
15 
-
16 class SinricProInterface {
-
17  friend class SinricProDevice;
-
18  protected:
-
19  virtual void sendMessage(JsonDocument& jsonEvent);
-
20  virtual DynamicJsonDocument prepareEvent(String deviceId, const char* action, const char* cause);
-
21  virtual unsigned long getTimestamp();
-
22  virtual bool isConnected();
-
23 };
-
24 
-
25 } // SINRICPRO_NAMESPACE
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#include "ArduinoJson.h"
+
11#include "SinricProQueue.h"
+
12
+
13#include "SinricProNamespace.h"
+
14namespace SINRICPRO_NAMESPACE {
+
15
+
16class SinricProInterface {
+
17 friend class SinricProDevice;
+
18 protected:
+
19 virtual void sendMessage(JsonDocument& jsonEvent);
+
20 virtual DynamicJsonDocument prepareEvent(String deviceId, const char* action, const char* cause);
+
21 virtual unsigned long getTimestamp();
+
22 virtual bool isConnected();
+
23};
+
24
+
25} // SINRICPRO_NAMESPACE
diff --git a/docs/_sinric_pro_light_8h_source.html b/docs/_sinric_pro_light_8h_source.html index cf2ddbf..6fbdb0d 100644 --- a/docs/_sinric_pro_light_8h_source.html +++ b/docs/_sinric_pro_light_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProLight.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProLight.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,69 +81,77 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProLight.h
+
SinricProLight.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 #pragma once
-
8 
-
9 #include "SinricProDevice.h"
-
10 #include "Capabilities/SettingController.h"
-
11 #include "Capabilities/PushNotification.h"
-
12 #include "Capabilities/PowerStateController.h"
-
13 #include "Capabilities/BrightnessController.h"
-
14 #include "Capabilities/ColorController.h"
-
15 #include "Capabilities/ColorTemperatureController.h"
-
16 
-
17 #include "SinricProNamespace.h"
-
18 namespace SINRICPRO_NAMESPACE {
-
19 
- -
32  public SettingController<SinricProLight>,
-
33  public PushNotification<SinricProLight>,
-
34  public PowerStateController<SinricProLight>,
-
35  public BrightnessController<SinricProLight>,
-
36  public ColorController<SinricProLight>,
-
37  public ColorTemperatureController<SinricProLight> {
-
38  friend class SettingController<SinricProLight>;
-
39  friend class PushNotification<SinricProLight>;
- - -
42  friend class ColorController<SinricProLight>;
- -
44  public:
-
45  SinricProLight(const String &deviceId) : SinricProDevice(deviceId, "LIGHT") {}
-
46 };
-
47 
-
48 } // SINRICPRO_NAMESPACE
-
49 
-
50 using SinricProLight = SINRICPRO_NAMESPACE::SinricProLight;
-
BrightnessController.
Definition: BrightnessController.h:50
-
ColorController.
Definition: ColorController.h:40
-
ColorTemperatureController.
Definition: ColorTemperatureController.h:66
-
PowerStateController.
Definition: PowerStateController.h:36
-
PushNotification.
Definition: PushNotification.h:17
-
Base class for all device types.
Definition: SinricProDevice.h:24
-
Device to control a light.
Definition: SinricProLight.h:37
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7#pragma once
+
8
+
9#include "SinricProDevice.h"
+
10#include "Capabilities/SettingController.h"
+
11#include "Capabilities/PushNotification.h"
+
12#include "Capabilities/PowerStateController.h"
+
13#include "Capabilities/BrightnessController.h"
+
14#include "Capabilities/ColorController.h"
+
15#include "Capabilities/ColorTemperatureController.h"
+
16
+
17#include "SinricProNamespace.h"
+
18namespace SINRICPRO_NAMESPACE {
+
19
+
+ +
32 public SettingController<SinricProLight>,
+
33 public PushNotification<SinricProLight>,
+
34 public PowerStateController<SinricProLight>,
+
35 public BrightnessController<SinricProLight>,
+
36 public ColorController<SinricProLight>,
+
37 public ColorTemperatureController<SinricProLight> {
+
38 friend class SettingController<SinricProLight>;
+
39 friend class PushNotification<SinricProLight>;
+ + +
42 friend class ColorController<SinricProLight>;
+ +
44 public:
+
45 SinricProLight(const String &deviceId) : SinricProDevice(deviceId, "LIGHT") {}
+
46};
+
+
47
+
48} // SINRICPRO_NAMESPACE
+
49
+
50using SinricProLight = SINRICPRO_NAMESPACE::SinricProLight;
+
BrightnessController.
Definition BrightnessController.h:50
+
ColorController.
Definition ColorController.h:40
+
ColorTemperatureController.
Definition ColorTemperatureController.h:66
+
PowerStateController.
Definition PowerStateController.h:36
+
PushNotification.
Definition PushNotification.h:17
+
Base class for all device types.
Definition SinricProDevice.h:24
+
Device to control a light.
Definition SinricProLight.h:37
diff --git a/docs/_sinric_pro_lock_8h_source.html b/docs/_sinric_pro_lock_8h_source.html index 61bbbd4..30180d3 100644 --- a/docs/_sinric_pro_lock_8h_source.html +++ b/docs/_sinric_pro_lock_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProLock.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProLock.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,58 +81,66 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProLock.h
+
SinricProLock.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #include "SinricProDevice.h"
-
11 #include "Capabilities/SettingController.h"
-
12 #include "Capabilities/PushNotification.h"
-
13 #include "Capabilities/LockController.h"
-
14 
-
15 #include "SinricProNamespace.h"
-
16 namespace SINRICPRO_NAMESPACE {
-
17 
- -
28  public SettingController<SinricProLock>,
-
29  public PushNotification<SinricProLock>,
-
30  public LockController<SinricProLock> {
-
31  friend class SettingController<SinricProLock>;
-
32  friend class PushNotification<SinricProLock>;
-
33  friend class LockController<SinricProLock>;
-
34  public:
-
35  SinricProLock(const String &deviceId) : SinricProDevice(deviceId, "SMARTLOCK") {}
-
36 };
-
37 
-
38 } // SINRICPRO_NAMESPACE#
-
39 
-
40 using SinricProLock = SINRICPRO_NAMESPACE::SinricProLock;
-
LockController.
Definition: LockController.h:44
-
PushNotification.
Definition: PushNotification.h:17
-
Base class for all device types.
Definition: SinricProDevice.h:24
-
Device to control a smart lock.
Definition: SinricProLock.h:30
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#include "SinricProDevice.h"
+
11#include "Capabilities/SettingController.h"
+
12#include "Capabilities/PushNotification.h"
+
13#include "Capabilities/LockController.h"
+
14
+
15#include "SinricProNamespace.h"
+
16namespace SINRICPRO_NAMESPACE {
+
17
+
+ +
28 public SettingController<SinricProLock>,
+
29 public PushNotification<SinricProLock>,
+
30 public LockController<SinricProLock> {
+
31 friend class SettingController<SinricProLock>;
+
32 friend class PushNotification<SinricProLock>;
+
33 friend class LockController<SinricProLock>;
+
34 public:
+
35 SinricProLock(const String &deviceId) : SinricProDevice(deviceId, "SMARTLOCK") {}
+
36};
+
+
37
+
38} // SINRICPRO_NAMESPACE#
+
39
+
40using SinricProLock = SINRICPRO_NAMESPACE::SinricProLock;
+
LockController.
Definition LockController.h:44
+
PushNotification.
Definition PushNotification.h:17
+
Base class for all device types.
Definition SinricProDevice.h:24
+
Device to control a smart lock.
Definition SinricProLock.h:30
diff --git a/docs/_sinric_pro_messageid_8h_source.html b/docs/_sinric_pro_messageid_8h_source.html index baf2060..5f9f536 100644 --- a/docs/_sinric_pro_messageid_8h_source.html +++ b/docs/_sinric_pro_messageid_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProMessageid.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProMessageid.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,59 +81,65 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProMessageid.h
+
SinricProMessageid.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #include "SinricProNamespace.h"
-
11 namespace SINRICPRO_NAMESPACE {
-
12 
-
13 class MessageID {
-
14 public:
-
15  MessageID();
-
16  const String& getID() { return _id; }
-
17 private:
-
18  String _id;
-
19 };
-
20 
-
21 MessageID::MessageID() {
-
22  _id = "";
-
23  for (byte i=0; i<16; i++) {
-
24  byte rnd = random(255);
-
25  if (i==4) _id += "-";
-
26  if (i==6) { _id += "-"; rnd = 0x40 | (0x0F & rnd); } // 0100xxxx to set version 4
-
27  if (i==8) { _id += "-"; rnd = 0x80 | (0x3F & rnd); } // 10xxxxxx to set reserved bits
-
28  if (i==10) _id += "-";
-
29  byte high_nibble = rnd >> 4;
-
30  byte low_nibble = rnd & 0x0f;
-
31  _id += "0123456789abcdef"[high_nibble];
-
32  _id += "0123456789abcdef"[low_nibble];
-
33  }
-
34 }
-
35 
-
36 } // SINRICPRO_NAMESPACE
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#include "SinricProNamespace.h"
+
11namespace SINRICPRO_NAMESPACE {
+
12
+
13class MessageID {
+
14public:
+
15 MessageID();
+
16 const String& getID() { return _id; }
+
17private:
+
18 String _id;
+
19};
+
20
+
21MessageID::MessageID() {
+
22 _id = "";
+
23 for (byte i=0; i<16; i++) {
+
24 byte rnd = random(255);
+
25 if (i==4) _id += "-";
+
26 if (i==6) { _id += "-"; rnd = 0x40 | (0x0F & rnd); } // 0100xxxx to set version 4
+
27 if (i==8) { _id += "-"; rnd = 0x80 | (0x3F & rnd); } // 10xxxxxx to set reserved bits
+
28 if (i==10) _id += "-";
+
29 byte high_nibble = rnd >> 4;
+
30 byte low_nibble = rnd & 0x0f;
+
31 _id += "0123456789abcdef"[high_nibble];
+
32 _id += "0123456789abcdef"[low_nibble];
+
33 }
+
34}
+
35
+
36} // SINRICPRO_NAMESPACE
diff --git a/docs/_sinric_pro_motionsensor_8h_source.html b/docs/_sinric_pro_motionsensor_8h_source.html index 568739d..3116f4f 100644 --- a/docs/_sinric_pro_motionsensor_8h_source.html +++ b/docs/_sinric_pro_motionsensor_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProMotionsensor.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProMotionsensor.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,62 +81,66 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProMotionsensor.h
+
SinricProMotionsensor.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #include "SinricProDevice.h"
-
11 #include "Capabilities/SettingController.h"
-
12 #include "Capabilities/PushNotification.h"
-
13 #include "Capabilities/PowerStateController.h"
-
14 #include "Capabilities/MotionSensor.h"
-
15 
-
16 #include "SinricProNamespace.h"
-
17 namespace SINRICPRO_NAMESPACE {
-
18 
- -
25  public SettingController<SinricProMotionsensor>,
-
26  public PushNotification<SinricProMotionsensor>,
-
27  public PowerStateController<SinricProMotionsensor>,
-
28  public MotionSensor<SinricProMotionsensor> {
-
29  friend class SettingController<SinricProMotionsensor>;
- - -
32  friend class MotionSensor<SinricProMotionsensor>;
-
33  public:
-
34  SinricProMotionsensor(const String &deviceId) : SinricProDevice(deviceId, "MOTION_SENSOR") {}
-
35 };
-
36 
-
37 } // SINRICPRO_NAMESPACE
-
38 
-
39 using SinricProMotionsensor = SINRICPRO_NAMESPACE::SinricProMotionsensor;
-
MotionSensor.
Definition: MotionSensor.h:19
-
PowerStateController.
Definition: PowerStateController.h:36
-
PushNotification.
Definition: PushNotification.h:17
-
Base class for all device types.
Definition: SinricProDevice.h:24
-
Device to report motion detection events.
Definition: SinricProMotionsensor.h:28
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#include "SinricProDevice.h"
+
11#include "Capabilities/SettingController.h"
+
12#include "Capabilities/PushNotification.h"
+
13#include "Capabilities/MotionSensor.h"
+
14
+
15#include "SinricProNamespace.h"
+
16namespace SINRICPRO_NAMESPACE {
+
17
+
+ +
24 public SettingController<SinricProMotionsensor>,
+
25 public PushNotification<SinricProMotionsensor>,
+
26 public MotionSensor<SinricProMotionsensor> {
+
27 friend class SettingController<SinricProMotionsensor>;
+ + +
30 public:
+
31 SinricProMotionsensor(const String &deviceId) : SinricProDevice(deviceId, "MOTION_SENSOR") {}
+
32};
+
+
33
+
34} // SINRICPRO_NAMESPACE
+
35
+
36using SinricProMotionsensor = SINRICPRO_NAMESPACE::SinricProMotionsensor;
+
MotionSensor.
Definition MotionSensor.h:19
+
PushNotification.
Definition PushNotification.h:17
+
Base class for all device types.
Definition SinricProDevice.h:24
+
Device to report motion detection events.
Definition SinricProMotionsensor.h:26
diff --git a/docs/_sinric_pro_namespace_8h_source.html b/docs/_sinric_pro_namespace_8h_source.html index d132f55..7677b46 100644 --- a/docs/_sinric_pro_namespace_8h_source.html +++ b/docs/_sinric_pro_namespace_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProNamespace.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProNamespace.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,35 +81,41 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProNamespace.h
+
SinricProNamespace.h
-
1 #pragma once
-
2 
-
3 #include "SinricProVersion.h"
-
4 
-
5 #define DO_CONCATE(A, B, C, D) A ## _ ## B ## _ ## C ## _ ## D
-
6 #define CONCATE(A, B, C, D) DO_CONCATE(A, B, C, D)
-
7 
-
8 #define SINRICPRO_NAMESPACE CONCATE(SINRICPRO, SINRICPRO_VERSION_MAJOR, SINRICPRO_VERSION_MINOR, SINRICPRO_VERSION_REVISION)
-
9 #define NAMESPACE_STR STR(SINRICPRO_NAMESPACE)
-
10 
-
11 
-
16 namespace SINRICPRO_NAMESPACE {}
+
1#pragma once
+
2
+
3#include "SinricProVersion.h"
+
4
+
5#define DO_CONCATE(A, B, C, D) A ## _ ## B ## _ ## C ## _ ## D
+
6#define CONCATE(A, B, C, D) DO_CONCATE(A, B, C, D)
+
7
+
8#define SINRICPRO_NAMESPACE CONCATE(SINRICPRO, SINRICPRO_VERSION_MAJOR, SINRICPRO_VERSION_MINOR, SINRICPRO_VERSION_REVISION)
+
9#define NAMESPACE_STR STR(SINRICPRO_NAMESPACE)
+
10
+
11
+
16namespace SINRICPRO_NAMESPACE {}
diff --git a/docs/_sinric_pro_power_sensor_8h_source.html b/docs/_sinric_pro_power_sensor_8h_source.html index c474c6e..016bec9 100644 --- a/docs/_sinric_pro_power_sensor_8h_source.html +++ b/docs/_sinric_pro_power_sensor_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProPowerSensor.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProPowerSensor.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,62 +81,66 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProPowerSensor.h
+
SinricProPowerSensor.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #include "SinricProDevice.h"
-
11 #include "Capabilities/SettingController.h"
-
12 #include "Capabilities/PushNotification.h"
-
13 #include "Capabilities/PowerSensor.h"
-
14 #include "Capabilities/PowerStateController.h"
-
15 
-
16 #include "SinricProNamespace.h"
-
17 namespace SINRICPRO_NAMESPACE {
-
18 
- -
25  public SettingController<SinricProPowerSensor>,
-
26  public PushNotification<SinricProPowerSensor>,
-
27  public PowerSensor<SinricProPowerSensor>,
-
28  public PowerStateController<SinricProPowerSensor> {
-
29  friend class SettingController<SinricProPowerSensor>;
- -
31  friend class PowerSensor<SinricProPowerSensor>;
- -
33  public:
-
34  SinricProPowerSensor(const String &deviceId) : SinricProDevice(deviceId, "POWER_SENSOR") {}
-
35 };
-
36 
-
37 } // SINRICPRO_NAMESPACE
-
38 
-
39 using SinricProPowerSensor = SINRICPRO_NAMESPACE::SinricProPowerSensor;
-
PowerSensor.
Definition: PowerSensor.h:24
-
PowerStateController.
Definition: PowerStateController.h:36
-
PushNotification.
Definition: PushNotification.h:17
-
Base class for all device types.
Definition: SinricProDevice.h:24
-
Device to report power usage.
Definition: SinricProPowerSensor.h:28
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#include "SinricProDevice.h"
+
11#include "Capabilities/SettingController.h"
+
12#include "Capabilities/PushNotification.h"
+
13#include "Capabilities/PowerSensor.h"
+
14
+
15#include "SinricProNamespace.h"
+
16namespace SINRICPRO_NAMESPACE {
+
17
+
+ +
24 public SettingController<SinricProPowerSensor>,
+
25 public PushNotification<SinricProPowerSensor>,
+
26 public PowerSensor<SinricProPowerSensor> {
+
27 friend class SettingController<SinricProPowerSensor>;
+ + +
30 public:
+
31 SinricProPowerSensor(const String &deviceId) : SinricProDevice(deviceId, "POWER_SENSOR") {}
+
32};
+
+
33
+
34} // SINRICPRO_NAMESPACE
+
35
+
36using SinricProPowerSensor = SINRICPRO_NAMESPACE::SinricProPowerSensor;
+
PowerSensor.
Definition PowerSensor.h:24
+
PushNotification.
Definition PushNotification.h:17
+
Base class for all device types.
Definition SinricProDevice.h:24
+
Device to report power usage.
Definition SinricProPowerSensor.h:26
diff --git a/docs/_sinric_pro_queue_8h_source.html b/docs/_sinric_pro_queue_8h_source.html index 7f8df3c..01dac6a 100644 --- a/docs/_sinric_pro_queue_8h_source.html +++ b/docs/_sinric_pro_queue_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProQueue.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProQueue.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,75 +81,81 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProQueue.h
+
SinricProQueue.h
-
1 /*
-
2  * Copyright (c) 2021 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #include <queue>
-
11 
-
12 #include "SinricProNamespace.h"
-
13 namespace SINRICPRO_NAMESPACE {
-
14 
-
15 typedef enum {
-
16  IF_UNKNOWN = 0,
-
17  IF_WEBSOCKET = 1,
-
18  IF_UDP = 2
-
19 } interface_t;
-
20 
-
21 class SinricProMessage {
-
22 public:
-
23  SinricProMessage(interface_t interface, const char* message);
-
24  ~SinricProMessage();
-
25  const char* getMessage() const;
-
26  interface_t getInterface() const;
-
27 private:
-
28  interface_t _interface;
-
29  char* _message;
-
30 };
-
31 
-
32 SinricProMessage::SinricProMessage(interface_t interface, const char* message) :
-
33  _interface(interface) {
-
34  _message = strdup(message);
-
35 };
-
36 
-
37 SinricProMessage::~SinricProMessage() {
-
38  if (_message) free(_message);
-
39 };
-
40 
-
41 const char* SinricProMessage::getMessage() const {
-
42  return _message;
-
43 };
-
44 
-
45 interface_t SinricProMessage::getInterface() const {
-
46  return _interface;
-
47 };
-
48 
-
49 
-
50 typedef std::queue<SinricProMessage*> SinricProQueue_t;
-
51 
-
52 } // SINRICPRO_NAMESPACE
+
1/*
+
2 * Copyright (c) 2021 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#include <queue>
+
11
+
12#include "SinricProNamespace.h"
+
13namespace SINRICPRO_NAMESPACE {
+
14
+
15typedef enum {
+
16 IF_UNKNOWN = 0,
+
17 IF_WEBSOCKET = 1,
+
18 IF_UDP = 2
+
19} interface_t;
+
20
+
21class SinricProMessage {
+
22public:
+
23 SinricProMessage(interface_t interface, const char* message);
+
24 ~SinricProMessage();
+
25 const char* getMessage() const;
+
26 interface_t getInterface() const;
+
27private:
+
28 interface_t _interface;
+
29 char* _message;
+
30};
+
31
+
32SinricProMessage::SinricProMessage(interface_t interface, const char* message) :
+
33 _interface(interface) {
+
34 _message = strdup(message);
+
35};
+
36
+
37SinricProMessage::~SinricProMessage() {
+
38 if (_message) free(_message);
+
39};
+
40
+
41const char* SinricProMessage::getMessage() const {
+
42 return _message;
+
43};
+
44
+
45interface_t SinricProMessage::getInterface() const {
+
46 return _interface;
+
47};
+
48
+
49
+
50typedef std::queue<SinricProMessage*> SinricProQueue_t;
+
51
+
52} // SINRICPRO_NAMESPACE
diff --git a/docs/_sinric_pro_request_8h_source.html b/docs/_sinric_pro_request_8h_source.html index 8e1291b..9d7e2ae 100644 --- a/docs/_sinric_pro_request_8h_source.html +++ b/docs/_sinric_pro_request_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProRequest.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProRequest.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,42 +81,48 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProRequest.h
+
SinricProRequest.h
-
1 #pragma once
-
2 
-
3 #include <WString.h>
-
4 #include <ArduinoJson.h>
-
5 #include <functional>
-
6 
-
7 #include "SinricProNamespace.h"
-
8 namespace SINRICPRO_NAMESPACE {
-
9 
-
10 struct SinricProRequest {
-
11  const String &action;
-
12  const String &instance;
-
13  JsonObject &request_value;
-
14  JsonObject &response_value;
-
15 };
-
16 
-
17 using SinricProRequestHandler = std::function<bool(SinricProRequest&)>;
-
18 
-
19 } // SINRICPRO_NAMESPACE
+
1#pragma once
+
2
+
3#include <WString.h>
+
4#include <ArduinoJson.h>
+
5#include <functional>
+
6
+
7#include "SinricProNamespace.h"
+
8namespace SINRICPRO_NAMESPACE {
+
9
+
10struct SinricProRequest {
+
11 const String &action;
+
12 const String &instance;
+
13 JsonObject &request_value;
+
14 JsonObject &response_value;
+
15};
+
16
+
17using SinricProRequestHandler = std::function<bool(SinricProRequest&)>;
+
18
+
19} // SINRICPRO_NAMESPACE
diff --git a/docs/_sinric_pro_signature_8h_source.html b/docs/_sinric_pro_signature_8h_source.html index 9849bda..a38e804 100644 --- a/docs/_sinric_pro_signature_8h_source.html +++ b/docs/_sinric_pro_signature_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProSignature.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProSignature.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,41 +81,47 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProSignature.h
+
SinricProSignature.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #include "SinricProNamespace.h"
-
11 namespace SINRICPRO_NAMESPACE {
-
12 
-
13 String HMACbase64(const String &message, const String &key);
-
14 String extractPayload(const char *message);
-
15 String calculateSignature(const char* key, String payload);
-
16 String signMessage(String key, JsonDocument &jsonMessage);
-
17 
-
18 } // SINRICPRO_NAMESPACE
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#include "SinricProNamespace.h"
+
11namespace SINRICPRO_NAMESPACE {
+
12
+
13String HMACbase64(const String &message, const String &key);
+
14String extractPayload(const char *message);
+
15String calculateSignature(const char* key, String payload);
+
16String signMessage(String key, JsonDocument &jsonMessage);
+
17
+
18} // SINRICPRO_NAMESPACE
diff --git a/docs/_sinric_pro_speaker_8h_source.html b/docs/_sinric_pro_speaker_8h_source.html index 3a0c3ec..0b77815 100644 --- a/docs/_sinric_pro_speaker_8h_source.html +++ b/docs/_sinric_pro_speaker_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProSpeaker.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProSpeaker.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,82 +81,90 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProSpeaker.h
+
SinricProSpeaker.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #include "SinricProDevice.h"
-
11 #include "Capabilities/SettingController.h"
-
12 #include "Capabilities/PushNotification.h"
-
13 #include "Capabilities/PowerStateController.h"
-
14 #include "Capabilities/MuteController.h"
-
15 #include "Capabilities/VolumeController.h"
-
16 #include "Capabilities/MediaController.h"
-
17 #include "Capabilities/InputController.h"
-
18 #include "Capabilities/EqualizerController.h"
-
19 #include "Capabilities/ModeController.h"
-
20 
-
21 #include "SinricProNamespace.h"
-
22 namespace SINRICPRO_NAMESPACE {
-
23 
- -
45  public SettingController<SinricProSpeaker>,
-
46  public PushNotification<SinricProSpeaker>,
-
47  public PowerStateController<SinricProSpeaker>,
-
48  public MuteController<SinricProSpeaker>,
-
49  public VolumeController<SinricProSpeaker>,
-
50  public MediaController<SinricProSpeaker>,
-
51  public InputController<SinricProSpeaker>,
-
52  public EqualizerController<SinricProSpeaker>,
-
53  public ModeController<SinricProSpeaker> {
-
54  friend class SettingController<SinricProSpeaker>;
-
55  friend class PushNotification<SinricProSpeaker>;
- -
57  friend class MuteController<SinricProSpeaker>;
-
58  friend class VolumeController<SinricProSpeaker>;
-
59  friend class MediaController<SinricProSpeaker>;
-
60  friend class InputController<SinricProSpeaker>;
- -
62  friend class ModeController<SinricProSpeaker>;
-
63 public:
-
64  SinricProSpeaker(const String &deviceId) : SinricProDevice(deviceId, "SPEAKER") {}
-
65 };
-
66 
-
67 } // SINRICPRO_NAMESPACE
-
68 
-
69 using SinricProSpeaker = SINRICPRO_NAMESPACE::SinricProSpeaker;
-
EqualizerController.
Definition: EqualizerController.h:79
-
InputController.
Definition: InputController.h:35
-
MediaController.
Definition: MediaController.h:35
-
ModeController.
Definition: ModeController.h:53
-
MuteController.
Definition: MuteController.h:35
-
PowerStateController.
Definition: PowerStateController.h:36
-
PushNotification.
Definition: PushNotification.h:17
-
Base class for all device types.
Definition: SinricProDevice.h:24
-
Device to control a smart speaker.
Definition: SinricProSpeaker.h:53
-
VolumeController.
Definition: VolumeController.h:54
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#include "SinricProDevice.h"
+
11#include "Capabilities/SettingController.h"
+
12#include "Capabilities/PushNotification.h"
+
13#include "Capabilities/PowerStateController.h"
+
14#include "Capabilities/MuteController.h"
+
15#include "Capabilities/VolumeController.h"
+
16#include "Capabilities/MediaController.h"
+
17#include "Capabilities/InputController.h"
+
18#include "Capabilities/EqualizerController.h"
+
19#include "Capabilities/ModeController.h"
+
20
+
21#include "SinricProNamespace.h"
+
22namespace SINRICPRO_NAMESPACE {
+
23
+
+ +
45 public SettingController<SinricProSpeaker>,
+
46 public PushNotification<SinricProSpeaker>,
+
47 public PowerStateController<SinricProSpeaker>,
+
48 public MuteController<SinricProSpeaker>,
+
49 public VolumeController<SinricProSpeaker>,
+
50 public MediaController<SinricProSpeaker>,
+
51 public InputController<SinricProSpeaker>,
+
52 public EqualizerController<SinricProSpeaker>,
+
53 public ModeController<SinricProSpeaker> {
+
54 friend class SettingController<SinricProSpeaker>;
+ + +
57 friend class MuteController<SinricProSpeaker>;
+ + + + +
62 friend class ModeController<SinricProSpeaker>;
+
63public:
+
64 SinricProSpeaker(const String &deviceId) : SinricProDevice(deviceId, "SPEAKER") {}
+
65};
+
+
66
+
67} // SINRICPRO_NAMESPACE
+
68
+
69using SinricProSpeaker = SINRICPRO_NAMESPACE::SinricProSpeaker;
+
EqualizerController.
Definition EqualizerController.h:79
+
InputController.
Definition InputController.h:35
+
MediaController.
Definition MediaController.h:35
+
ModeController.
Definition ModeController.h:53
+
MuteController.
Definition MuteController.h:35
+
PowerStateController.
Definition PowerStateController.h:36
+
PushNotification.
Definition PushNotification.h:17
+
Base class for all device types.
Definition SinricProDevice.h:24
+
Device to control a smart speaker.
Definition SinricProSpeaker.h:53
+
VolumeController.
Definition VolumeController.h:54
diff --git a/docs/_sinric_pro_strings_8h_source.html b/docs/_sinric_pro_strings_8h_source.html index 559c4f6..347c4ee 100644 --- a/docs/_sinric_pro_strings_8h_source.html +++ b/docs/_sinric_pro_strings_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProStrings.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProStrings.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,57 +81,63 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProStrings.h
+
SinricProStrings.h
-
1 #pragma once
-
2 
-
3 #include "SinricProNamespace.h"
-
4 namespace SINRICPRO_NAMESPACE {
-
5 
-
14 #define FSTR(x, y) const char* FSTR_ ##x ##_ ##y PROGMEM = #y
-
15 
-
16 FSTR(SINRICPRO, instanceId); // "instanceId"
-
17 FSTR(SINRICPRO, message); // "message"
-
18 FSTR(SINRICPRO, success); // "success"
-
19 FSTR(SINRICPRO, response); // "response"
-
20 FSTR(SINRICPRO, header); // "header"
-
21 FSTR(SINRICPRO, payloadVersion); // "payloadVersion"
-
22 FSTR(SINRICPRO, signatureVersion); // "signatureVersion"
-
23 FSTR(SINRICPRO, payload); // "payload"
-
24 FSTR(SINRICPRO, action); // "action"
-
25 FSTR(SINRICPRO, cause); // "cause"
-
26 FSTR(SINRICPRO, type); // "type"
-
27 FSTR(SINRICPRO, createdAt); // "createdAt"
-
28 FSTR(SINRICPRO, deviceId); // "deviceId"
-
29 FSTR(SINRICPRO, replyToken); // "replyToken"
-
30 FSTR(SINRICPRO, event); // "event"
-
31 FSTR(SINRICPRO, value); // "value"
-
32 FSTR(SINRICPRO, clientId); // "clientId"
-
33 FSTR(SINRICPRO, request); // "request"
-
34 FSTR(SINRICPRO, signature); // "signature"
-
35 FSTR(SINRICPRO, HMAC); // "HMAC"
-
36 FSTR(SINRICPRO, timestamp); // "timestamp"
-
37 FSTR(SINRICPRO, PERIODIC_POLL); // "PERIODIC_POLL"
-
38 FSTR(SINRICPRO, PHYSICAL_INTERACTION); // "PHYSICAL_INTERACTION"
-
39 FSTR(SINRICPRO, ALERT); // "ALERT"
-
40 FSTR(SINRICPRO, OK); // "OK"
-
41 
-
42 } // SINRICPRO_NAMESPACE
+
1#pragma once
+
2
+
3#include "SinricProNamespace.h"
+
4namespace SINRICPRO_NAMESPACE {
+
5
+
14#define FSTR(x, y) const char* FSTR_ ##x ##_ ##y PROGMEM = #y
+
15
+
16FSTR(SINRICPRO, instanceId); // "instanceId"
+
17FSTR(SINRICPRO, message); // "message"
+
18FSTR(SINRICPRO, success); // "success"
+
19FSTR(SINRICPRO, response); // "response"
+
20FSTR(SINRICPRO, header); // "header"
+
21FSTR(SINRICPRO, payloadVersion); // "payloadVersion"
+
22FSTR(SINRICPRO, signatureVersion); // "signatureVersion"
+
23FSTR(SINRICPRO, payload); // "payload"
+
24FSTR(SINRICPRO, action); // "action"
+
25FSTR(SINRICPRO, cause); // "cause"
+
26FSTR(SINRICPRO, type); // "type"
+
27FSTR(SINRICPRO, createdAt); // "createdAt"
+
28FSTR(SINRICPRO, deviceId); // "deviceId"
+
29FSTR(SINRICPRO, replyToken); // "replyToken"
+
30FSTR(SINRICPRO, event); // "event"
+
31FSTR(SINRICPRO, value); // "value"
+
32FSTR(SINRICPRO, clientId); // "clientId"
+
33FSTR(SINRICPRO, request); // "request"
+
34FSTR(SINRICPRO, signature); // "signature"
+
35FSTR(SINRICPRO, HMAC); // "HMAC"
+
36FSTR(SINRICPRO, timestamp); // "timestamp"
+
37FSTR(SINRICPRO, PERIODIC_POLL); // "PERIODIC_POLL"
+
38FSTR(SINRICPRO, PHYSICAL_INTERACTION); // "PHYSICAL_INTERACTION"
+
39FSTR(SINRICPRO, ALERT); // "ALERT"
+
40FSTR(SINRICPRO, OK); // "OK"
+
41
+
42} // SINRICPRO_NAMESPACE
diff --git a/docs/_sinric_pro_switch_8h_source.html b/docs/_sinric_pro_switch_8h_source.html index d3a1f49..ad8d359 100644 --- a/docs/_sinric_pro_switch_8h_source.html +++ b/docs/_sinric_pro_switch_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProSwitch.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProSwitch.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,58 +81,66 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProSwitch.h
+
SinricProSwitch.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #include "SinricProDevice.h"
-
11 #include "Capabilities/SettingController.h"
-
12 #include "Capabilities/PushNotification.h"
-
13 #include "Capabilities/PowerStateController.h"
-
14 
-
15 #include "SinricProNamespace.h"
-
16 namespace SINRICPRO_NAMESPACE {
-
17 
- -
24  public SettingController<SinricProSwitch>,
-
25  public PushNotification<SinricProSwitch>,
-
26  public PowerStateController<SinricProSwitch> {
-
27  friend class SettingController<SinricProSwitch>;
-
28  friend class PushNotification<SinricProSwitch>;
- -
30  public:
-
31  SinricProSwitch(const String &deviceId) : SinricProDevice(deviceId, "SWITCH") {};
-
32 };
-
33 
-
34 } // SINRICPRO_NAMESPACE
-
35 
-
36 using SinricProSwitch = SINRICPRO_NAMESPACE::SinricProSwitch;
-
PowerStateController.
Definition: PowerStateController.h:36
-
PushNotification.
Definition: PushNotification.h:17
-
Base class for all device types.
Definition: SinricProDevice.h:24
-
Device suporting basic on / off command.
Definition: SinricProSwitch.h:26
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#include "SinricProDevice.h"
+
11#include "Capabilities/SettingController.h"
+
12#include "Capabilities/PushNotification.h"
+
13#include "Capabilities/PowerStateController.h"
+
14
+
15#include "SinricProNamespace.h"
+
16namespace SINRICPRO_NAMESPACE {
+
17
+
+ +
24 public SettingController<SinricProSwitch>,
+
25 public PushNotification<SinricProSwitch>,
+
26 public PowerStateController<SinricProSwitch> {
+
27 friend class SettingController<SinricProSwitch>;
+ + +
30 public:
+
31 SinricProSwitch(const String &deviceId) : SinricProDevice(deviceId, "SWITCH") {};
+
32};
+
+
33
+
34} // SINRICPRO_NAMESPACE
+
35
+
36using SinricProSwitch = SINRICPRO_NAMESPACE::SinricProSwitch;
+
PowerStateController.
Definition PowerStateController.h:36
+
PushNotification.
Definition PushNotification.h:17
+
Base class for all device types.
Definition SinricProDevice.h:24
+
Device suporting basic on / off command.
Definition SinricProSwitch.h:26
diff --git a/docs/_sinric_pro_t_v_8h_source.html b/docs/_sinric_pro_t_v_8h_source.html index 2fdd361..d04415b 100644 --- a/docs/_sinric_pro_t_v_8h_source.html +++ b/docs/_sinric_pro_t_v_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProTV.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProTV.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,78 +81,86 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProTV.h
+
SinricProTV.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #include "SinricProDevice.h"
-
11 #include "Capabilities/SettingController.h"
-
12 #include "Capabilities/PushNotification.h"
-
13 #include "Capabilities/PowerStateController.h"
-
14 #include "Capabilities/VolumeController.h"
-
15 #include "Capabilities/MuteController.h"
-
16 #include "Capabilities/MediaController.h"
-
17 #include "Capabilities/InputController.h"
-
18 #include "Capabilities/ChannelController.h"
-
19 
-
20 #include "SinricProNamespace.h"
-
21 namespace SINRICPRO_NAMESPACE {
-
22 
- -
40  public SettingController<SinricProTV>,
-
41  public PushNotification<SinricProTV>,
-
42  public PowerStateController<SinricProTV>,
-
43  public VolumeController<SinricProTV>,
-
44  public MuteController<SinricProTV>,
-
45  public MediaController<SinricProTV>,
-
46  public InputController<SinricProTV>,
-
47  public ChannelController<SinricProTV> {
-
48  friend class SettingController<SinricProTV>;
-
49  friend class PushNotification<SinricProTV>;
-
50  friend class PowerStateController<SinricProTV>;
-
51  friend class VolumeController<SinricProTV>;
-
52  friend class MuteController<SinricProTV>;
-
53  friend class MediaController<SinricProTV>;
-
54  friend class InputController<SinricProTV>;
-
55  friend class ChannelController<SinricProTV>;
-
56  public:
-
57  SinricProTV(const String &deviceId) : SinricProDevice(deviceId, "TV") {}
-
58 };
-
59 
-
60 } // SINRICPRO_NAMESPACE
-
61 
-
62 using SinricProTV = SINRICPRO_NAMESPACE::SinricProTV;
-
ChannelController.
Definition: ChannelController.h:70
-
InputController.
Definition: InputController.h:35
-
MediaController.
Definition: MediaController.h:35
-
MuteController.
Definition: MuteController.h:35
-
PowerStateController.
Definition: PowerStateController.h:36
-
PushNotification.
Definition: PushNotification.h:17
-
Base class for all device types.
Definition: SinricProDevice.h:24
-
Device to control a TV.
Definition: SinricProTV.h:47
-
VolumeController.
Definition: VolumeController.h:54
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#include "SinricProDevice.h"
+
11#include "Capabilities/SettingController.h"
+
12#include "Capabilities/PushNotification.h"
+
13#include "Capabilities/PowerStateController.h"
+
14#include "Capabilities/VolumeController.h"
+
15#include "Capabilities/MuteController.h"
+
16#include "Capabilities/MediaController.h"
+
17#include "Capabilities/InputController.h"
+
18#include "Capabilities/ChannelController.h"
+
19
+
20#include "SinricProNamespace.h"
+
21namespace SINRICPRO_NAMESPACE {
+
22
+
+ +
40 public SettingController<SinricProTV>,
+
41 public PushNotification<SinricProTV>,
+
42 public PowerStateController<SinricProTV>,
+
43 public VolumeController<SinricProTV>,
+
44 public MuteController<SinricProTV>,
+
45 public MediaController<SinricProTV>,
+
46 public InputController<SinricProTV>,
+
47 public ChannelController<SinricProTV> {
+
48 friend class SettingController<SinricProTV>;
+
49 friend class PushNotification<SinricProTV>;
+ +
51 friend class VolumeController<SinricProTV>;
+
52 friend class MuteController<SinricProTV>;
+
53 friend class MediaController<SinricProTV>;
+
54 friend class InputController<SinricProTV>;
+
55 friend class ChannelController<SinricProTV>;
+
56 public:
+
57 SinricProTV(const String &deviceId) : SinricProDevice(deviceId, "TV") {}
+
58};
+
+
59
+
60} // SINRICPRO_NAMESPACE
+
61
+
62using SinricProTV = SINRICPRO_NAMESPACE::SinricProTV;
+
ChannelController.
Definition ChannelController.h:70
+
InputController.
Definition InputController.h:35
+
MediaController.
Definition MediaController.h:35
+
MuteController.
Definition MuteController.h:35
+
PowerStateController.
Definition PowerStateController.h:36
+
PushNotification.
Definition PushNotification.h:17
+
Base class for all device types.
Definition SinricProDevice.h:24
+
Device to control a TV.
Definition SinricProTV.h:47
+
VolumeController.
Definition VolumeController.h:54
diff --git a/docs/_sinric_pro_temperaturesensor_8h_source.html b/docs/_sinric_pro_temperaturesensor_8h_source.html index 927ea63..7ac573c 100644 --- a/docs/_sinric_pro_temperaturesensor_8h_source.html +++ b/docs/_sinric_pro_temperaturesensor_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProTemperaturesensor.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProTemperaturesensor.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,62 +81,66 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProTemperaturesensor.h
+
SinricProTemperaturesensor.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #include "SinricProDevice.h"
-
11 #include "Capabilities/SettingController.h"
-
12 #include "Capabilities/PushNotification.h"
-
13 #include "Capabilities/PowerStateController.h"
-
14 #include "Capabilities/TemperatureSensor.h"
-
15 
-
16 #include "SinricProNamespace.h"
-
17 namespace SINRICPRO_NAMESPACE {
-
18 
- -
25  public SettingController<SinricProTemperaturesensor>,
-
26  public PushNotification<SinricProTemperaturesensor>,
-
27  public PowerStateController<SinricProTemperaturesensor>,
-
28  public TemperatureSensor<SinricProTemperaturesensor> {
-
29  friend class SettingController<SinricProTemperaturesensor>;
- - - -
33  public:
-
34  SinricProTemperaturesensor(const String &deviceId) : SinricProDevice(deviceId, "TEMPERATURESENSOR") {}
-
35 };
-
36 
-
37 } // SINRICPRO_NAMESPACE
-
38 
-
39 using SinricProTemperaturesensor = SINRICPRO_NAMESPACE::SinricProTemperaturesensor;
-
PowerStateController.
Definition: PowerStateController.h:36
-
PushNotification.
Definition: PushNotification.h:17
-
Base class for all device types.
Definition: SinricProDevice.h:24
-
Device to report actual temperature and humidity.
Definition: SinricProTemperaturesensor.h:28
-
TemperatureSensor.
Definition: TemperatureSensor.h:18
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#include "SinricProDevice.h"
+
11#include "Capabilities/SettingController.h"
+
12#include "Capabilities/PushNotification.h"
+
13#include "Capabilities/TemperatureSensor.h"
+
14
+
15#include "SinricProNamespace.h"
+
16namespace SINRICPRO_NAMESPACE {
+
17
+
+ +
24 public SettingController<SinricProTemperaturesensor>,
+
25 public PushNotification<SinricProTemperaturesensor>,
+
26 public TemperatureSensor<SinricProTemperaturesensor> {
+
27 friend class SettingController<SinricProTemperaturesensor>;
+ + +
30 public:
+
31 SinricProTemperaturesensor(const String &deviceId) : SinricProDevice(deviceId, "TEMPERATURESENSOR") {}
+
32};
+
+
33
+
34} // SINRICPRO_NAMESPACE
+
35
+
36using SinricProTemperaturesensor = SINRICPRO_NAMESPACE::SinricProTemperaturesensor;
+
PushNotification.
Definition PushNotification.h:17
+
Base class for all device types.
Definition SinricProDevice.h:24
+
Device to report actual temperature and humidity.
Definition SinricProTemperaturesensor.h:26
+
TemperatureSensor.
Definition TemperatureSensor.h:18
diff --git a/docs/_sinric_pro_thermostat_8h_source.html b/docs/_sinric_pro_thermostat_8h_source.html index 1b0622b..d73de8f 100644 --- a/docs/_sinric_pro_thermostat_8h_source.html +++ b/docs/_sinric_pro_thermostat_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProThermostat.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProThermostat.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,66 +81,74 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProThermostat.h
+
SinricProThermostat.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #include "SinricProDevice.h"
-
11 #include "Capabilities/SettingController.h"
-
12 #include "Capabilities/PushNotification.h"
-
13 #include "Capabilities/PowerStateController.h"
-
14 #include "Capabilities/ThermostatController.h"
-
15 #include "Capabilities/TemperatureSensor.h"
-
16 
-
17 #include "SinricProNamespace.h"
-
18 namespace SINRICPRO_NAMESPACE {
-
19 
- -
32  public SettingController<SinricProThermostat>,
-
33  public PushNotification<SinricProThermostat>,
-
34  public PowerStateController<SinricProThermostat>,
-
35  public ThermostatController<SinricProThermostat>,
-
36  public TemperatureSensor<SinricProThermostat> {
-
37  friend class SettingController<SinricProThermostat>;
- - - - -
42  public:
-
43  SinricProThermostat(const String &deviceId) : SinricProDevice(deviceId, "THERMOSTAT") {}
-
44 };
-
45 
-
46 } // SINRICPRO_NAMESPACE
-
47 
-
48 using SinricProThermostat = SINRICPRO_NAMESPACE::SinricProThermostat;
-
PowerStateController.
Definition: PowerStateController.h:36
-
PushNotification.
Definition: PushNotification.h:17
-
Base class for all device types.
Definition: SinricProDevice.h:24
-
Device to control Thermostat.
Definition: SinricProThermostat.h:36
-
TemperatureSensor.
Definition: TemperatureSensor.h:18
-
ThermostatController.
Definition: ThermostatController.h:70
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#include "SinricProDevice.h"
+
11#include "Capabilities/SettingController.h"
+
12#include "Capabilities/PushNotification.h"
+
13#include "Capabilities/PowerStateController.h"
+
14#include "Capabilities/ThermostatController.h"
+
15#include "Capabilities/TemperatureSensor.h"
+
16
+
17#include "SinricProNamespace.h"
+
18namespace SINRICPRO_NAMESPACE {
+
19
+
+ +
32 public SettingController<SinricProThermostat>,
+
33 public PushNotification<SinricProThermostat>,
+
34 public PowerStateController<SinricProThermostat>,
+
35 public ThermostatController<SinricProThermostat>,
+
36 public TemperatureSensor<SinricProThermostat> {
+
37 friend class SettingController<SinricProThermostat>;
+ + + + +
42 public:
+
43 SinricProThermostat(const String &deviceId) : SinricProDevice(deviceId, "THERMOSTAT") {}
+
44};
+
+
45
+
46} // SINRICPRO_NAMESPACE
+
47
+
48using SinricProThermostat = SINRICPRO_NAMESPACE::SinricProThermostat;
+
PowerStateController.
Definition PowerStateController.h:36
+
PushNotification.
Definition PushNotification.h:17
+
Base class for all device types.
Definition SinricProDevice.h:24
+
Device to control Thermostat.
Definition SinricProThermostat.h:36
+
TemperatureSensor.
Definition TemperatureSensor.h:18
+
ThermostatController.
Definition ThermostatController.h:70
diff --git a/docs/_sinric_pro_u_d_p_8h_source.html b/docs/_sinric_pro_u_d_p_8h_source.html index d82a198..e8d6402 100644 --- a/docs/_sinric_pro_u_d_p_8h_source.html +++ b/docs/_sinric_pro_u_d_p_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProUDP.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProUDP.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,100 +81,108 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProUDP.h
+
SinricProUDP.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #if defined ESP8266
-
11  #include <ESP8266WiFi.h>
-
12 #endif
-
13 #if defined ESP32
-
14  #include <WiFi.h>
-
15 #endif
-
16 
-
17 #include <WiFiUdp.h>
-
18 #include "SinricProQueue.h"
-
19 
-
20 #include "SinricProNamespace.h"
-
21 namespace SINRICPRO_NAMESPACE {
-
22 
-
23 class UdpListener {
-
24  public:
-
25  void begin(SinricProQueue_t* receiveQueue);
-
26  void handle();
-
27  void sendMessage(String &message);
-
28  void stop();
-
29 
-
30  private:
-
31  WiFiUDP _udp;
-
32  SinricProQueue_t* receiveQueue;
-
33 };
-
34 
-
35 void UdpListener::begin(SinricProQueue_t* receiveQueue) {
-
36  this->receiveQueue = receiveQueue;
-
37  #if defined ESP8266
-
38  _udp.beginMulticast(WiFi.localIP(), UDP_MULTICAST_IP, UDP_MULTICAST_PORT);
-
39  #endif
-
40  #if defined ESP32
-
41  _udp.beginMulticast(UDP_MULTICAST_IP, UDP_MULTICAST_PORT);
-
42  #endif
-
43 }
-
44 
-
45 void UdpListener::handle() {
-
46  int len = _udp.parsePacket();
-
47  if (!len) return;
-
48 
-
49  if (len) {
-
50  char* buf = (char*) malloc(len+1);
-
51  memset(buf, 0, len+1);
-
52  _udp.read(buf, len);
-
53  SinricProMessage* request = new SinricProMessage(IF_UDP, buf);
-
54  DEBUG_SINRIC("[SinricPro:UDP]: receiving request\r\n%s\r\n", buf);
-
55  free(buf);
-
56  receiveQueue->push(request);
-
57  }
-
58 }
-
59 
-
60 void UdpListener::sendMessage(String &message) {
-
61  _udp.beginPacket(_udp.remoteIP(), _udp.remotePort());
-
62  _udp.print(message);
-
63  _udp.endPacket();
-
64  // restart UDP??
-
65  #if defined ESP8266
-
66  _udp.beginMulticast(WiFi.localIP(), UDP_MULTICAST_IP, UDP_MULTICAST_PORT);
-
67  #endif
-
68  #if defined ESP32
-
69  _udp.beginMulticast(UDP_MULTICAST_IP, UDP_MULTICAST_PORT);
-
70  #endif
-
71 }
-
72 
-
73 void UdpListener::stop() {
-
74  _udp.stop();
-
75 }
-
76 
-
77 } // SINRICPRO_NAMESPACE
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#if defined ESP8266
+
11 #include <ESP8266WiFi.h>
+
12#endif
+
13#if defined ESP32
+
14 #include <WiFi.h>
+
15#endif
+
16
+
17#include <WiFiUdp.h>
+
18#include "SinricProQueue.h"
+
19#include "SinricProConfig.h"
+
20#include "SinricProDebug.h"
+
21
+
22#include "SinricProNamespace.h"
+
23namespace SINRICPRO_NAMESPACE {
+
24
+
25class UdpListener {
+
26 public:
+
27 void begin(SinricProQueue_t* receiveQueue);
+
28 void handle();
+
29 void sendMessage(String &message);
+
30 void stop();
+
31
+
32 private:
+
33 WiFiUDP _udp;
+
34 SinricProQueue_t* receiveQueue;
+
35};
+
36
+
37void UdpListener::begin(SinricProQueue_t* receiveQueue) {
+
38 this->receiveQueue = receiveQueue;
+
39 #if defined ESP8266
+
40 _udp.beginMulticast(WiFi.localIP(), UDP_MULTICAST_IP, UDP_MULTICAST_PORT);
+
41 #endif
+
42 #if defined ESP32
+
43 _udp.beginMulticast(UDP_MULTICAST_IP, UDP_MULTICAST_PORT);
+
44 #endif
+
45}
+
46
+
47void UdpListener::handle() {
+
48 int len = _udp.parsePacket();
+
49 if (!len) return;
+
50
+
51 if (len) {
+
52 char* buf = (char*) malloc(len+1);
+
53 memset(buf, 0, len+1);
+
54 _udp.read(buf, len);
+
55 SinricProMessage* request = new SinricProMessage(IF_UDP, buf);
+
56 DEBUG_SINRIC("[SinricPro:UDP]: receiving request\r\n%s\r\n", buf);
+
57 free(buf);
+
58 receiveQueue->push(request);
+
59 }
+
60}
+
61
+
62void UdpListener::sendMessage(String &message) {
+
63 _udp.beginPacket(_udp.remoteIP(), _udp.remotePort());
+
64 _udp.print(message);
+
65 _udp.endPacket();
+
66 // restart UDP??
+
67 #if defined ESP8266
+
68 _udp.beginMulticast(WiFi.localIP(), UDP_MULTICAST_IP, UDP_MULTICAST_PORT);
+
69 #endif
+
70 #if defined ESP32
+
71 _udp.beginMulticast(UDP_MULTICAST_IP, UDP_MULTICAST_PORT);
+
72 #endif
+
73}
+
74
+
75void UdpListener::stop() {
+
76 _udp.stop();
+
77}
+
78
+
79} // SINRICPRO_NAMESPACE
diff --git a/docs/_sinric_pro_version_8h_source.html b/docs/_sinric_pro_version_8h_source.html index c617c70..5782244 100644 --- a/docs/_sinric_pro_version_8h_source.html +++ b/docs/_sinric_pro_version_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProVersion.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProVersion.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,35 +81,41 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProVersion.h
+
SinricProVersion.h
-
1 #pragma once
-
2 
-
3 #define STR_HELPER(x) #x
-
4 #define STR(x) STR_HELPER(x)
-
5 
-
6 // Version Configuration
-
7 #define SINRICPRO_VERSION_MAJOR 2
-
8 #define SINRICPRO_VERSION_MINOR 9
-
9 #define SINRICPRO_VERSION_REVISION 17
-
10 #define SINRICPRO_VERSION STR(SINRICPRO_VERSION_MAJOR) "." STR(SINRICPRO_VERSION_MINOR) "." STR(SINRICPRO_VERSION_REVISION)
-
11 #define SINRICPRO_VERSION_STR "SinricPro (v" SINRICPRO_VERSION ")"
-
12 #define SINRICPRO_VERISON_INT SINRICPRO_VERSION_MAJOR * 1000000 + SINRICPRO_VERSION_MINOR * 1000 + SINRICPRO_VERSION_REVISION
+
1#pragma once
+
2
+
3#define STR_HELPER(x) #x
+
4#define STR(x) STR_HELPER(x)
+
5
+
6// Version Configuration
+
7#define SINRICPRO_VERSION_MAJOR 3
+
8#define SINRICPRO_VERSION_MINOR 0
+
9#define SINRICPRO_VERSION_REVISION 0
+
10#define SINRICPRO_VERSION STR(SINRICPRO_VERSION_MAJOR) "." STR(SINRICPRO_VERSION_MINOR) "." STR(SINRICPRO_VERSION_REVISION)
+
11#define SINRICPRO_VERSION_STR "SinricPro (v" SINRICPRO_VERSION ")"
+
12#define SINRICPRO_VERISON_INT SINRICPRO_VERSION_MAJOR * 1000000 + SINRICPRO_VERSION_MINOR * 1000 + SINRICPRO_VERSION_REVISION
diff --git a/docs/_sinric_pro_websocket_8h_source.html b/docs/_sinric_pro_websocket_8h_source.html index 4009177..21828b0 100644 --- a/docs/_sinric_pro_websocket_8h_source.html +++ b/docs/_sinric_pro_websocket_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProWebsocket.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProWebsocket.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,217 +81,223 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProWebsocket.h
+
SinricProWebsocket.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 
-
8 #pragma once
-
9 
-
10 #if defined ESP8266
-
11 #include <ESP8266WiFi.h>
-
12 #endif
-
13 #if defined ESP32
-
14 #include <WiFi.h>
-
15 #endif
-
16 
-
17 #include <ArduinoJson.h>
-
18 #include <WebSocketsClient.h>
-
19 
-
20 #include "SinricProConfig.h"
-
21 #include "SinricProDebug.h"
-
22 #include "SinricProInterface.h"
-
23 #include "SinricProNamespace.h"
-
24 #include "SinricProQueue.h"
-
25 namespace SINRICPRO_NAMESPACE {
-
26 
-
27 #if !defined(WEBSOCKETS_VERSION_INT) || (WEBSOCKETS_VERSION_INT < 2003005)
-
28 #error "Wrong WebSockets Version! Minimum Version is 2.3.5!!!"
-
29 #endif
-
30 
-
31 using wsConnectedCallback = std::function<void(void)>;
-
32 using wsDisconnectedCallback = std::function<void(void)>;
-
33 using wsPongCallback = std::function<void(uint32_t)>;
-
34 
-
35 class WebsocketListener : protected WebSocketsClient {
-
36  public:
-
37  WebsocketListener();
-
38  ~WebsocketListener();
-
39 
-
40  void begin(String server, String appKey, String deviceIds, SinricProQueue_t* receiveQueue);
-
41  void handle();
-
42  void stop();
-
43  void setRestoreDeviceStates(bool flag);
-
44 
-
45  void sendMessage(String& message);
-
46 
-
47  void onConnected(wsConnectedCallback callback);
-
48  void onDisconnected(wsDisconnectedCallback callback);
-
49  void onPong(wsPongCallback callback);
-
50 
-
51  using WebSocketsClient::disconnect;
-
52  using WebSocketsClient::isConnected;
-
53 
-
54  protected:
-
55  bool _begin;
-
56  bool restoreDeviceStates;
-
57 
-
58  wsConnectedCallback _wsConnectedCb;
-
59  wsDisconnectedCallback _wsDisconnectedCb;
-
60  wsPongCallback _wsPongCb;
-
61 
-
62  virtual void runCbEvent(WStype_t type, uint8_t* payload, size_t length) override;
-
63 
-
64  void setExtraHeaders();
-
65  SinricProQueue_t* receiveQueue;
-
66  String deviceIds;
-
67  String appKey;
-
68 };
-
69 
-
70 WebsocketListener::WebsocketListener()
-
71  : _begin(false)
-
72  , restoreDeviceStates(false)
-
73  , _wsConnectedCb(nullptr)
-
74  , _wsDisconnectedCb(nullptr)
-
75  , _wsPongCb(nullptr) {}
-
76 
-
77 WebsocketListener::~WebsocketListener() {
-
78  stop();
-
79 }
-
80 
-
81 void WebsocketListener::setExtraHeaders() {
-
82 #ifdef ESP8266
-
83  const char* platform = "ESP8266";
-
84 #endif
-
85 #ifdef ESP32
-
86  const char* platform = "ESP32";
-
87 #endif
-
88 
-
89  String headers = "appkey:" + appKey;
-
90  headers += "\r\ndeviceids:" + deviceIds;
-
91  headers += "\r\nrestoredevicestates:" + String(restoreDeviceStates ? "true" : "false");
-
92  headers += "\r\nip:" + WiFi.localIP().toString();
-
93  headers += "\r\nmac:" + WiFi.macAddress();
-
94  headers += "\r\nplatform:" + String(platform);
-
95  headers += "\r\nSDKVersion:" + String(SINRICPRO_VERSION);
-
96 
-
97 #ifdef FIRMWARE_VERSION
-
98  headers += "\r\nfirmwareVersion:" + String(FIRMWARE_VERSION);
-
99 #endif
-
100 
-
101  DEBUG_SINRIC("[SinricPro:Websocket]: headers: \r\n%s\r\n", headers.c_str());
-
102  WebSocketsClient::setExtraHeaders(headers.c_str());
-
103 }
-
104 
-
105 void WebsocketListener::begin(String server, String appKey, String deviceIds, SinricProQueue_t* receiveQueue) {
-
106  if (_begin) return;
-
107  _begin = true;
-
108 
-
109  this->receiveQueue = receiveQueue;
-
110  this->appKey = appKey;
-
111  this->deviceIds = deviceIds;
-
112 
-
113 #ifdef WEBSOCKET_SSL
-
114  DEBUG_SINRIC("[SinricPro:Websocket]: Connecting to WebSocket Server using SSL (%s)\r\n", server.c_str());
-
115 #else
-
116  DEBUG_SINRIC("[SinricPro:Websocket]: Connecting to WebSocket Server (%s)\r\n", server.c_str());
-
117 #endif
-
118 
-
119  if (isConnected()) stop();
-
120  setExtraHeaders();
-
121  enableHeartbeat(WEBSOCKET_PING_INTERVAL, WEBSOCKET_PING_TIMEOUT, WEBSOCKET_RETRY_COUNT);
-
122 #ifdef WEBSOCKET_SSL
-
123  WebSocketsClient::beginSSL(server.c_str(), SINRICPRO_SERVER_SSL_PORT, "/");
-
124 #else
-
125  WebSocketsClient::begin(server.c_str(), SINRICPRO_SERVER_PORT, "/"); // server address, port and URL
-
126 #endif
-
127 }
-
128 
-
129 void WebsocketListener::handle() {
-
130  loop();
-
131 }
-
132 
-
133 void WebsocketListener::stop() {
-
134  disconnect();
-
135  _begin = false;
-
136 }
-
137 
-
138 void WebsocketListener::setRestoreDeviceStates(bool flag) {
-
139  this->restoreDeviceStates = flag;
-
140 };
-
141 
-
142 void WebsocketListener::sendMessage(String& message) {
-
143  sendTXT(message);
-
144 }
-
145 
-
146 void WebsocketListener::onConnected(wsConnectedCallback callback) {
-
147  _wsConnectedCb = callback;
-
148 }
-
149 
-
150 void WebsocketListener::onDisconnected(wsDisconnectedCallback callback) {
-
151  _wsDisconnectedCb = callback;
-
152 }
-
153 
-
154 void WebsocketListener::onPong(wsPongCallback callback) {
-
155  _wsPongCb = callback;
-
156 }
-
157 
-
158 void WebsocketListener::runCbEvent(WStype_t type, uint8_t* payload, size_t length) {
-
159  (void)length;
-
160 
-
161  switch (type) {
-
162  case WStype_DISCONNECTED: {
-
163  DEBUG_SINRIC("[SinricPro:Websocket]: disconnected\r\n");
-
164  if (_wsDisconnectedCb) _wsDisconnectedCb();
-
165  }
-
166  break;
-
167 
-
168  case WStype_CONNECTED:
-
169  DEBUG_SINRIC("[SinricPro:Websocket]: connected\r\n");
-
170  if (_wsConnectedCb) _wsConnectedCb();
-
171  if (restoreDeviceStates) {
-
172  restoreDeviceStates = false;
-
173  setExtraHeaders();
-
174  }
-
175  break;
-
176 
-
177  case WStype_TEXT: {
-
178  SinricProMessage* request = new SinricProMessage(IF_WEBSOCKET, (char*)payload);
-
179  DEBUG_SINRIC("[SinricPro:Websocket]: receiving data\r\n");
-
180  receiveQueue->push(request);
-
181  break;
-
182  }
-
183 
-
184  case WStype_PONG: {
-
185  if (_wsPongCb) _wsPongCb(millis() - _client.lastPing);
-
186  break;
-
187  }
-
188 
-
189  default:
-
190  break;
-
191  }
-
192 }
-
193 
-
194 } // namespace SINRICPRO_NAMESPACE
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7
+
8#pragma once
+
9
+
10#if defined(ESP8266)
+
11 #include <ESP8266WiFi.h>
+
12#elif defined(ESP32) || defined(ARDUINO_ARCH_RP2040)
+
13 #include <WiFi.h>
+
14#endif
+
15
+
16#include <ArduinoJson.h>
+
17#include <WebSocketsClient.h>
+
18
+
19#include "SinricProConfig.h"
+
20#include "SinricProDebug.h"
+
21#include "SinricProInterface.h"
+
22#include "SinricProNamespace.h"
+
23#include "SinricProQueue.h"
+
24namespace SINRICPRO_NAMESPACE {
+
25
+
26#if !defined(WEBSOCKETS_VERSION_INT) || (WEBSOCKETS_VERSION_INT < 2003005)
+
27#error "Wrong WebSockets Version! Minimum Version is 2.3.5!!!"
+
28#endif
+
29
+
30using wsConnectedCallback = std::function<void(void)>;
+
31using wsDisconnectedCallback = std::function<void(void)>;
+
32using wsPongCallback = std::function<void(uint32_t)>;
+
33
+
34class WebsocketListener : protected WebSocketsClient {
+
35 public:
+
36 WebsocketListener();
+
37 ~WebsocketListener();
+
38
+
39 void begin(String server, String appKey, String deviceIds, SinricProQueue_t* receiveQueue);
+
40 void handle();
+
41 void stop();
+
42 void setRestoreDeviceStates(bool flag);
+
43
+
44 void sendMessage(String& message);
+
45
+
46 void onConnected(wsConnectedCallback callback);
+
47 void onDisconnected(wsDisconnectedCallback callback);
+
48 void onPong(wsPongCallback callback);
+
49
+
50 using WebSocketsClient::disconnect;
+
51 using WebSocketsClient::isConnected;
+
52
+
53 protected:
+
54 bool _begin;
+
55 bool restoreDeviceStates;
+
56
+
57 wsConnectedCallback _wsConnectedCb;
+
58 wsDisconnectedCallback _wsDisconnectedCb;
+
59 wsPongCallback _wsPongCb;
+
60
+
61 virtual void runCbEvent(WStype_t type, uint8_t* payload, size_t length) override;
+
62
+
63 void setExtraHeaders();
+
64 SinricProQueue_t* receiveQueue;
+
65 String deviceIds;
+
66 String appKey;
+
67};
+
68
+
69WebsocketListener::WebsocketListener()
+
70 : _begin(false)
+
71 , restoreDeviceStates(false)
+
72 , _wsConnectedCb(nullptr)
+
73 , _wsDisconnectedCb(nullptr)
+
74 , _wsPongCb(nullptr) {}
+
75
+
76WebsocketListener::~WebsocketListener() {
+
77 stop();
+
78}
+
79
+
80void WebsocketListener::setExtraHeaders() {
+
81#if defined(ESP8266)
+
82 const char* platform = "ESP8266";
+
83#elif defined(ESP32)
+
84 const char* platform = "ESP32";
+
85#elif defined(ARDUINO_ARCH_RP2040)
+
86 const char* platform = "RP2040";
+
87#endif
+
88
+
89 String headers = "appkey:" + appKey;
+
90 headers += "\r\ndeviceids:" + deviceIds;
+
91 headers += "\r\nrestoredevicestates:" + String(restoreDeviceStates ? "true" : "false");
+
92 headers += "\r\nip:" + WiFi.localIP().toString();
+
93 headers += "\r\nmac:" + WiFi.macAddress();
+
94 headers += "\r\nplatform:" + String(platform);
+
95 headers += "\r\nSDKVersion:" + String(SINRICPRO_VERSION);
+
96
+
97#ifdef FIRMWARE_VERSION
+
98 headers += "\r\nfirmwareVersion:" + String(FIRMWARE_VERSION);
+
99#endif
+
100
+
101 DEBUG_SINRIC("[SinricPro:Websocket]: headers: \r\n%s\r\n", headers.c_str());
+
102 WebSocketsClient::setExtraHeaders(headers.c_str());
+
103}
+
104
+
105void WebsocketListener::begin(String server, String appKey, String deviceIds, SinricProQueue_t* receiveQueue) {
+
106 if (_begin) return;
+
107 _begin = true;
+
108
+
109 this->receiveQueue = receiveQueue;
+
110 this->appKey = appKey;
+
111 this->deviceIds = deviceIds;
+
112
+
113#ifdef WEBSOCKET_SSL
+
114 DEBUG_SINRIC("[SinricPro:Websocket]: Connecting to WebSocket Server using SSL (%s)\r\n", server.c_str());
+
115#else
+
116 DEBUG_SINRIC("[SinricPro:Websocket]: Connecting to WebSocket Server (%s)\r\n", server.c_str());
+
117#endif
+
118
+
119 if (isConnected()) stop();
+
120 setExtraHeaders();
+
121 enableHeartbeat(WEBSOCKET_PING_INTERVAL, WEBSOCKET_PING_TIMEOUT, WEBSOCKET_RETRY_COUNT);
+
122#ifdef WEBSOCKET_SSL
+
123 WebSocketsClient::beginSSL(server.c_str(), SINRICPRO_SERVER_SSL_PORT, "/");
+
124#else
+
125 WebSocketsClient::begin(server.c_str(), SINRICPRO_SERVER_PORT, "/"); // server address, port and URL
+
126#endif
+
127}
+
128
+
129void WebsocketListener::handle() {
+
130 loop();
+
131}
+
132
+
133void WebsocketListener::stop() {
+
134 disconnect();
+
135 _begin = false;
+
136}
+
137
+
138void WebsocketListener::setRestoreDeviceStates(bool flag) {
+
139 this->restoreDeviceStates = flag;
+
140};
+
141
+
142void WebsocketListener::sendMessage(String& message) {
+
143 sendTXT(message);
+
144}
+
145
+
146void WebsocketListener::onConnected(wsConnectedCallback callback) {
+
147 _wsConnectedCb = callback;
+
148}
+
149
+
150void WebsocketListener::onDisconnected(wsDisconnectedCallback callback) {
+
151 _wsDisconnectedCb = callback;
+
152}
+
153
+
154void WebsocketListener::onPong(wsPongCallback callback) {
+
155 _wsPongCb = callback;
+
156}
+
157
+
158void WebsocketListener::runCbEvent(WStype_t type, uint8_t* payload, size_t length) {
+
159 (void)length;
+
160
+
161 switch (type) {
+
162 case WStype_DISCONNECTED: {
+
163 DEBUG_SINRIC("[SinricPro:Websocket]: disconnected\r\n");
+
164 if (_wsDisconnectedCb) _wsDisconnectedCb();
+
165 }
+
166 break;
+
167
+
168 case WStype_CONNECTED:
+
169 DEBUG_SINRIC("[SinricPro:Websocket]: connected\r\n");
+
170 if (_wsConnectedCb) _wsConnectedCb();
+
171 if (restoreDeviceStates) {
+
172 restoreDeviceStates = false;
+
173 setExtraHeaders();
+
174 }
+
175 break;
+
176
+
177 case WStype_TEXT: {
+
178 SinricProMessage* request = new SinricProMessage(IF_WEBSOCKET, (char*)payload);
+
179 DEBUG_SINRIC("[SinricPro:Websocket]: receiving data\r\n");
+
180 receiveQueue->push(request);
+
181 break;
+
182 }
+
183
+
184 case WStype_PONG: {
+
185 if (_wsPongCb) _wsPongCb(millis() - _client.lastPing);
+
186 break;
+
187 }
+
188
+
189 default:
+
190 break;
+
191 }
+
192}
+
193
+
194} // namespace SINRICPRO_NAMESPACE
diff --git a/docs/_sinric_pro_window_a_c_8h_source.html b/docs/_sinric_pro_window_a_c_8h_source.html index 839acfe..8c46eba 100644 --- a/docs/_sinric_pro_window_a_c_8h_source.html +++ b/docs/_sinric_pro_window_a_c_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/SinricProWindowAC.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/SinricProWindowAC.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,65 +81,73 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricProWindowAC.h
+
SinricProWindowAC.h
-
1 /*
-
2  * Copyright (c) 2019 Sinric. All rights reserved.
-
3  * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
-
4  *
-
5  * This file is part of the Sinric Pro (https://github.com/sinricpro/)
-
6  */
-
7 #pragma once
-
8 
-
9 #include "SinricProDevice.h"
-
10 #include "Capabilities/SettingController.h"
-
11 #include "Capabilities/PushNotification.h"
-
12 #include "Capabilities/PowerStateController.h"
-
13 #include "Capabilities/RangeController.h"
-
14 #include "Capabilities/ThermostatController.h"
-
15 
-
16 #include "SinricProNamespace.h"
-
17 namespace SINRICPRO_NAMESPACE {
-
18 
- -
33  public SettingController<SinricProWindowAC>,
-
34  public PushNotification<SinricProWindowAC>,
-
35  public PowerStateController<SinricProWindowAC>,
-
36  public RangeController<SinricProWindowAC>,
-
37  public ThermostatController<SinricProWindowAC> {
-
38  friend class SettingController<SinricProWindowAC>;
-
39  friend class PushNotification<SinricProWindowAC>;
- -
41  friend class RangeController<SinricProWindowAC>;
- -
43  public:
-
44  SinricProWindowAC(const String &deviceId) : SinricProDevice(deviceId, "AC_UNIT") {}
-
45 };
-
46 
-
47 } // SINRICPRO_NAMESPACE
-
48 
-
49 using SinricProWindowAC = SINRICPRO_NAMESPACE::SinricProWindowAC;
-
PowerStateController.
Definition: PowerStateController.h:36
-
PushNotification.
Definition: PushNotification.h:17
-
RangeControllerFloatInt.
Definition: RangeController.h:109
-
Base class for all device types.
Definition: SinricProDevice.h:24
-
Device to control Window Air Conditioner.
Definition: SinricProWindowAC.h:37
-
ThermostatController.
Definition: ThermostatController.h:70
+
1/*
+
2 * Copyright (c) 2019 Sinric. All rights reserved.
+
3 * Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
+
4 *
+
5 * This file is part of the Sinric Pro (https://github.com/sinricpro/)
+
6 */
+
7#pragma once
+
8
+
9#include "SinricProDevice.h"
+
10#include "Capabilities/SettingController.h"
+
11#include "Capabilities/PushNotification.h"
+
12#include "Capabilities/PowerStateController.h"
+
13#include "Capabilities/RangeController.h"
+
14#include "Capabilities/ThermostatController.h"
+
15
+
16#include "SinricProNamespace.h"
+
17namespace SINRICPRO_NAMESPACE {
+
18
+
+ +
33 public SettingController<SinricProWindowAC>,
+
34 public PushNotification<SinricProWindowAC>,
+
35 public PowerStateController<SinricProWindowAC>,
+
36 public RangeController<SinricProWindowAC>,
+
37 public ThermostatController<SinricProWindowAC> {
+
38 friend class SettingController<SinricProWindowAC>;
+ + + + +
43 public:
+
44 SinricProWindowAC(const String &deviceId) : SinricProDevice(deviceId, "AC_UNIT") {}
+
45};
+
+
46
+
47} // SINRICPRO_NAMESPACE
+
48
+
49using SinricProWindowAC = SINRICPRO_NAMESPACE::SinricProWindowAC;
+
PowerStateController.
Definition PowerStateController.h:36
+
PushNotification.
Definition PushNotification.h:17
+
RangeControllerFloatInt.
Definition RangeController.h:109
+
Base class for all device types.
Definition SinricProDevice.h:24
+
Device to control Window Air Conditioner.
Definition SinricProWindowAC.h:37
+
ThermostatController.
Definition ThermostatController.h:70
diff --git a/docs/_temperature_sensor_8h_source.html b/docs/_temperature_sensor_8h_source.html index edd0031..d009592 100644 --- a/docs/_temperature_sensor_8h_source.html +++ b/docs/_temperature_sensor_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/TemperatureSensor.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/TemperatureSensor.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,66 +81,79 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
TemperatureSensor.h
+
TemperatureSensor.h
-
1 #pragma once
-
2 
-
3 #include "../EventLimiter.h"
-
4 #include "../SinricProStrings.h"
-
5 
-
6 #include "../SinricProNamespace.h"
-
7 namespace SINRICPRO_NAMESPACE {
-
8 
-
9 FSTR(TEMPERATURE, currentTemperature); // "currentTemperature"
-
10 FSTR(TEMPERATURE, humidity); // "humidity"
-
11 FSTR(TEMPERATURE, temperature); // "temperature"
-
12 
-
17 template <typename T>
- -
19  public:
- -
21  bool sendTemperatureEvent(float temperature, float humidity = -1, String cause = FSTR_SINRICPRO_PERIODIC_POLL);
-
22  private:
-
23  EventLimiter event_limiter;
-
24 };
-
25 
-
26 template <typename T>
- -
28 : event_limiter(EVENT_LIMIT_SENSOR_VALUE) {}
-
29 
-
40 template <typename T>
-
41 bool TemperatureSensor<T>::sendTemperatureEvent(float temperature, float humidity, String cause) {
-
42  if (event_limiter) return false;
-
43  T* device = static_cast<T*>(this);
-
44 
-
45  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_TEMPERATURE_currentTemperature, cause.c_str());
-
46  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
47  event_value[FSTR_TEMPERATURE_humidity] = roundf(humidity * 100) / 100.0;
-
48  event_value[FSTR_TEMPERATURE_temperature] = roundf(temperature * 10) / 10.0;
-
49  return device->sendEvent(eventMessage);
-
50 }
-
51 
-
52 } // SINRICPRO_NAMESPACE
-
53 
-
54 template <typename T>
-
55 using TemperatureSensor = SINRICPRO_NAMESPACE::TemperatureSensor<T>;
-
TemperatureSensor.
Definition: TemperatureSensor.h:18
-
bool sendTemperatureEvent(float temperature, float humidity=-1, String cause=FSTR_SINRICPRO_PERIODIC_POLL)
Send currentTemperature event to report actual temperature (measured by a sensor)
Definition: TemperatureSensor.h:41
+
1#pragma once
+
2
+
3#include "../EventLimiter.h"
+
4#include "../SinricProStrings.h"
+
5
+
6#include "../SinricProNamespace.h"
+
7namespace SINRICPRO_NAMESPACE {
+
8
+
9FSTR(TEMPERATURE, currentTemperature); // "currentTemperature"
+
10FSTR(TEMPERATURE, humidity); // "humidity"
+
11FSTR(TEMPERATURE, temperature); // "temperature"
+
12
+
17template <typename T>
+
+ +
19 public:
+ +
+ +
22 private:
+
23 EventLimiter event_limiter;
+
24};
+
25
+
26template <typename T>
+ +
28: event_limiter(EVENT_LIMIT_SENSOR_VALUE) {}
+
29
+
40template <typename T>
+
+ +
42 if (event_limiter) return false;
+
43 T* device = static_cast<T*>(this);
+
44
+ + + + +
49 return device->sendEvent(eventMessage);
+
50}
+
+
+
51
+
52} // SINRICPRO_NAMESPACE
+
53
+
54template <typename T>
+
55using TemperatureSensor = SINRICPRO_NAMESPACE::TemperatureSensor<T>;
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
TemperatureSensor.
Definition TemperatureSensor.h:18
+
bool sendTemperatureEvent(float temperature, float humidity=-1, String cause=FSTR_SINRICPRO_PERIODIC_POLL)
Send currentTemperature event to report actual temperature (measured by a sensor)
Definition TemperatureSensor.h:41
diff --git a/docs/_thermostat_controller_8h_source.html b/docs/_thermostat_controller_8h_source.html index e6f5c22..bf60792 100644 --- a/docs/_thermostat_controller_8h_source.html +++ b/docs/_thermostat_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/ThermostatController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/ThermostatController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,161 +81,190 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
ThermostatController.h
+
ThermostatController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../EventLimiter.h"
-
5 #include "../SinricProStrings.h"
-
6 
-
7 #include "../SinricProNamespace.h"
-
8 namespace SINRICPRO_NAMESPACE {
-
9 
-
10 FSTR(THERMOSTAT, setThermostatMode); // "setThermostatMode"
-
11 FSTR(THERMOSTAT, thermostatMode); // "thermostatMode"
-
12 FSTR(THERMOSTAT, targetTemperature); // "targetTemperature"
-
13 FSTR(THERMOSTAT, temperature); // "temperature"
-
14 FSTR(THERMOSTAT, adjustTargetTemperature); // "adjustTargetTemperature"
-
15 
-
30 using ThermostatModeCallback = std::function<bool(const String &, String &)>;
-
31 
-
46 using SetTargetTemperatureCallback = std::function<bool(const String &, float &)>;
-
47 
-
62 using AdjustTargetTemperatureCallback = std::function<bool(const String &, float &)>;
-
63 
-
64 
-
69 template <typename T>
- -
71  public:
- -
73 
- - - -
77 
-
78  bool sendThermostatModeEvent(String thermostatMode, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
79  bool sendTargetTemperatureEvent(float temperature, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
80 
-
81  protected:
-
82  bool handleThermostatController(SinricProRequest &request);
-
83 
-
84  private:
-
85  EventLimiter event_limiter_thermostatMode;
-
86  EventLimiter event_limiter_targetTemperature;
-
87  ThermostatModeCallback thermostatModeCallback;
-
88  SetTargetTemperatureCallback targetTemperatureCallback;
-
89  AdjustTargetTemperatureCallback adjustTargetTemperatureCallback;
-
90 };
-
91 
-
92 template <typename T>
- -
94 : event_limiter_thermostatMode(EVENT_LIMIT_STATE)
-
95 , event_limiter_targetTemperature(EVENT_LIMIT_STATE) {
-
96  T* device = static_cast<T*>(this);
-
97  device->registerRequestHandler(std::bind(&ThermostatController<T>::handleThermostatController, this, std::placeholders::_1));
-
98 }
-
99 
-
107 template <typename T>
- -
109  thermostatModeCallback = cb;
-
110 }
-
111 
-
119 template <typename T>
- -
121  targetTemperatureCallback = cb;
-
122 }
-
123 
-
131 template <typename T>
- -
133  adjustTargetTemperatureCallback = cb;
-
134 }
-
135 
-
145 template <typename T>
-
146 bool ThermostatController<T>::sendThermostatModeEvent(String thermostatMode, String cause) {
-
147  if (event_limiter_thermostatMode) return false;
-
148  T* device = static_cast<T*>(this);
-
149 
-
150  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_THERMOSTAT_setThermostatMode, cause.c_str());
-
151  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
152  event_value[FSTR_THERMOSTAT_thermostatMode] = thermostatMode;
-
153  return device->sendEvent(eventMessage);
-
154 }
-
155 
-
165 template <typename T>
-
166 bool ThermostatController<T>::sendTargetTemperatureEvent(float temperature, String cause) {
-
167  if (event_limiter_targetTemperature) return false;
-
168  T* device = static_cast<T*>(this);
-
169 
-
170  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_THERMOSTAT_targetTemperature, cause.c_str());
-
171  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
172  event_value[FSTR_THERMOSTAT_temperature] = roundf(temperature * 10) / 10.0;
-
173  return device->sendEvent(eventMessage);
-
174 }
-
175 
-
176 template <typename T>
-
177 bool ThermostatController<T>::handleThermostatController(SinricProRequest &request) {
-
178  T* device = static_cast<T*>(this);
-
179 
-
180  bool success = false;
-
181 
-
182  if (request.action == FSTR_THERMOSTAT_targetTemperature && targetTemperatureCallback) {
-
183  float temperature;
-
184  if (request.request_value.containsKey(FSTR_THERMOSTAT_temperature)) {
-
185  temperature = request.request_value[FSTR_THERMOSTAT_temperature];
-
186  } else {
-
187  temperature = 1;
-
188  }
-
189  success = targetTemperatureCallback(device->deviceId, temperature);
-
190  request.response_value[FSTR_THERMOSTAT_temperature] = temperature;
-
191  return success;
-
192  }
-
193 
-
194  if (request.action == FSTR_THERMOSTAT_adjustTargetTemperature && adjustTargetTemperatureCallback) {
-
195  float temperatureDelta = request.request_value[FSTR_THERMOSTAT_temperature];
-
196  success = adjustTargetTemperatureCallback(device->deviceId, temperatureDelta);
-
197  request.response_value[FSTR_THERMOSTAT_temperature] = temperatureDelta;
-
198  return success;
-
199  }
-
200 
-
201  if (request.action == FSTR_THERMOSTAT_setThermostatMode && thermostatModeCallback) {
-
202  String thermostatMode = request.request_value[FSTR_THERMOSTAT_thermostatMode] | "";
-
203  success = thermostatModeCallback(device->deviceId, thermostatMode);
-
204  request.response_value[FSTR_THERMOSTAT_thermostatMode] = thermostatMode;
-
205  return success;
-
206  }
-
207 
-
208  return success;
-
209 }
-
210 
-
211 } // SINRICPRO_NAMESPACE
-
212 
-
213 template <typename T>
-
214 using ThermostatController = SINRICPRO_NAMESPACE::ThermostatController<T>;
-
ThermostatController.
Definition: ThermostatController.h:70
-
void onTargetTemperature(SetTargetTemperatureCallback cb)
Set callback function for targetTemperature request.
Definition: ThermostatController.h:120
-
void onThermostatMode(ThermostatModeCallback cb)
Set callback function for setThermostatMode request.
Definition: ThermostatController.h:108
-
bool sendTargetTemperatureEvent(float temperature, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send targetTemperature event to report target temperature change.
Definition: ThermostatController.h:166
-
void onAdjustTargetTemperature(AdjustTargetTemperatureCallback cb)
Set callback function for adjustTargetTemperature request.
Definition: ThermostatController.h:132
-
bool sendThermostatModeEvent(String thermostatMode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send thermostatMode event to report a the new mode the device has been set to.
Definition: ThermostatController.h:146
-
std::function< bool(const String &, float &)> SetTargetTemperatureCallback
Callback definition for onTargetTemperature function.
Definition: ThermostatController.h:46
-
std::function< bool(const String &, String &)> ThermostatModeCallback
Callback definition for onThermostatMode function.
Definition: ThermostatController.h:30
-
std::function< bool(const String &, float &)> AdjustTargetTemperatureCallback
Callback definition for onAdjustTargetTemperature function.
Definition: ThermostatController.h:62
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../EventLimiter.h"
+
5#include "../SinricProStrings.h"
+
6
+
7#include "../SinricProNamespace.h"
+
8namespace SINRICPRO_NAMESPACE {
+
9
+
10FSTR(THERMOSTAT, setThermostatMode); // "setThermostatMode"
+
11FSTR(THERMOSTAT, thermostatMode); // "thermostatMode"
+
12FSTR(THERMOSTAT, targetTemperature); // "targetTemperature"
+
13FSTR(THERMOSTAT, temperature); // "temperature"
+
14FSTR(THERMOSTAT, adjustTargetTemperature); // "adjustTargetTemperature"
+
15
+
30using ThermostatModeCallback = std::function<bool(const String &, String &)>;
+
31
+
46using SetTargetTemperatureCallback = std::function<bool(const String &, float &)>;
+
47
+
62using AdjustTargetTemperatureCallback = std::function<bool(const String &, float &)>;
+
63
+
64
+
69template <typename T>
+
+ +
71 public:
+ +
73
+
+ +
+ +
+ +
77
+
+ +
+ +
80
+
81 protected:
+
82 bool handleThermostatController(SinricProRequest &request);
+
83
+
84 private:
+
85 EventLimiter event_limiter_thermostatMode;
+
86 EventLimiter event_limiter_targetTemperature;
+
87 ThermostatModeCallback thermostatModeCallback;
+
88 SetTargetTemperatureCallback targetTemperatureCallback;
+
89 AdjustTargetTemperatureCallback adjustTargetTemperatureCallback;
+
90};
+
91
+
92template <typename T>
+ +
94: event_limiter_thermostatMode(EVENT_LIMIT_STATE)
+
95, event_limiter_targetTemperature(EVENT_LIMIT_STATE) {
+
96 T* device = static_cast<T*>(this);
+
97 device->registerRequestHandler(std::bind(&ThermostatController<T>::handleThermostatController, this, std::placeholders::_1));
+
98}
+
99
+
107template <typename T>
+
+ +
109 thermostatModeCallback = cb;
+
110}
+
+
111
+
119template <typename T>
+
+ +
121 targetTemperatureCallback = cb;
+
122}
+
+
123
+
131template <typename T>
+
+ +
133 adjustTargetTemperatureCallback = cb;
+
134}
+
+
135
+
145template <typename T>
+
+ +
147 if (event_limiter_thermostatMode) return false;
+
148 T* device = static_cast<T*>(this);
+
149
+ + + +
153 return device->sendEvent(eventMessage);
+
154}
+
+
155
+
165template <typename T>
+
+ +
167 if (event_limiter_targetTemperature) return false;
+
168 T* device = static_cast<T*>(this);
+
169
+ + + +
173 return device->sendEvent(eventMessage);
+
174}
+
+
+
175
+
176template <typename T>
+ +
178 T* device = static_cast<T*>(this);
+
179
+
180 bool success = false;
+
181
+
182 if (request.action == FSTR_THERMOSTAT_targetTemperature && targetTemperatureCallback) {
+
183 float temperature;
+
184 if (request.request_value.containsKey(FSTR_THERMOSTAT_temperature)) {
+ +
186 } else {
+
187 temperature = 1;
+
188 }
+
189 success = targetTemperatureCallback(device->deviceId, temperature);
+
190 request.response_value[FSTR_THERMOSTAT_temperature] = temperature;
+
191 return success;
+
192 }
+
193
+
194 if (request.action == FSTR_THERMOSTAT_adjustTargetTemperature && adjustTargetTemperatureCallback) {
+
195 float temperatureDelta = request.request_value[FSTR_THERMOSTAT_temperature];
+
196 success = adjustTargetTemperatureCallback(device->deviceId, temperatureDelta);
+
197 request.response_value[FSTR_THERMOSTAT_temperature] = temperatureDelta;
+
198 return success;
+
199 }
+
200
+
201 if (request.action == FSTR_THERMOSTAT_setThermostatMode && thermostatModeCallback) {
+
202 String thermostatMode = request.request_value[FSTR_THERMOSTAT_thermostatMode] | "";
+
203 success = thermostatModeCallback(device->deviceId, thermostatMode);
+
204 request.response_value[FSTR_THERMOSTAT_thermostatMode] = thermostatMode;
+
205 return success;
+
206 }
+
207
+
208 return success;
+
209}
+
210
+
211} // SINRICPRO_NAMESPACE
+
212
+
213template <typename T>
+
214using ThermostatController = SINRICPRO_NAMESPACE::ThermostatController<T>;
+
+
+
+
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
ThermostatController.
Definition ThermostatController.h:70
+
void onTargetTemperature(SetTargetTemperatureCallback cb)
Set callback function for targetTemperature request.
Definition ThermostatController.h:120
+
void onThermostatMode(ThermostatModeCallback cb)
Set callback function for setThermostatMode request.
Definition ThermostatController.h:108
+
bool sendTargetTemperatureEvent(float temperature, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send targetTemperature event to report target temperature change.
Definition ThermostatController.h:166
+
void onAdjustTargetTemperature(AdjustTargetTemperatureCallback cb)
Set callback function for adjustTargetTemperature request.
Definition ThermostatController.h:132
+
bool sendThermostatModeEvent(String thermostatMode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send thermostatMode event to report a the new mode the device has been set to.
Definition ThermostatController.h:146
+
std::function< bool(const String &, float &)> SetTargetTemperatureCallback
Callback definition for onTargetTemperature function.
Definition ThermostatController.h:46
+
std::function< bool(const String &, String &)> ThermostatModeCallback
Callback definition for onThermostatMode function.
Definition ThermostatController.h:30
+
std::function< bool(const String &, float &)> AdjustTargetTemperatureCallback
Callback definition for onAdjustTargetTemperature function.
Definition ThermostatController.h:62
diff --git a/docs/_timestamp_8h_source.html b/docs/_timestamp_8h_source.html new file mode 100644 index 0000000..3a1f97c --- /dev/null +++ b/docs/_timestamp_8h_source.html @@ -0,0 +1,126 @@ + + + + + + + +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Timestamp.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Timestamp.h
+
+
+
1#pragma once
+
2
+
3#include <Arduino.h>
+
4
+
5class Timestamp {
+
6 public:
+
7 uint32_t getTimestamp();
+
8 void setTimestamp(uint32_t);
+
9
+
10 protected:
+
11 void update();
+
12
+
13 protected:
+
14 uint64_t timestamp_ms = 0;
+
15 uint32_t last_update = 0;
+
16};
+
+
+ + + + diff --git a/docs/_toggle_controller_8h_source.html b/docs/_toggle_controller_8h_source.html index ded0443..35264e5 100644 --- a/docs/_toggle_controller_8h_source.html +++ b/docs/_toggle_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/ToggleController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/ToggleController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,103 +81,116 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
ToggleController.h
+
ToggleController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../EventLimiter.h"
-
5 #include "../SinricProStrings.h"
-
6 
-
7 #include "../SinricProNamespace.h"
-
8 namespace SINRICPRO_NAMESPACE {
-
9 
-
10 FSTR(TOGGLE, setToggleState); // "setToggleState"
-
11 FSTR(TOGGLE, state); // "state"
-
12 FSTR(TOGGLE, On); // "On"
-
13 FSTR(TOGGLE, Off); // "Off"
-
14 
-
29 using GenericToggleStateCallback = std::function<bool(const String &, const String&, bool &)>;
-
30 
-
31 
-
36 template <typename T>
- -
38  public:
- -
40 
-
41  void onToggleState(const String& instance, GenericToggleStateCallback cb);
-
42  bool sendToggleStateEvent(const String &instance, bool state, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
43 
-
44  protected:
-
45  bool handleToggleController(SinricProRequest &request);
-
46 
-
47  private:
-
48  std::map<String, EventLimiter> event_limiter;
-
49  std::map<String, GenericToggleStateCallback> genericToggleStateCallback;
-
50 };
-
51 
-
52 template <typename T>
- -
54  T* device = static_cast<T*>(this);
-
55  device->registerRequestHandler(std::bind(&ToggleController<T>::handleToggleController, this, std::placeholders::_1));
-
56 }
-
57 
-
66 template <typename T>
- -
68  genericToggleStateCallback[instance] = cb;
-
69 }
-
70 
-
81 template <typename T>
-
82 bool ToggleController<T>::sendToggleStateEvent(const String &instance, bool state, String cause) {
-
83  if (event_limiter.find(instance) == event_limiter.end()) event_limiter[instance] = EventLimiter(EVENT_LIMIT_STATE);
-
84  if (event_limiter[instance]) return false;
-
85 
-
86  T* device = static_cast<T*>(this);
-
87 
-
88  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_TOGGLE_setToggleState, cause.c_str());
-
89  eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_instanceId] = instance;
-
90  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
91  event_value[FSTR_TOGGLE_state] = state ? FSTR_TOGGLE_On : FSTR_TOGGLE_Off;
-
92  return device->sendEvent(eventMessage);
-
93 }
-
94 
-
95 template <typename T>
-
96 bool ToggleController<T>::handleToggleController(SinricProRequest &request) {
-
97  T* device = static_cast<T*>(this);
-
98 
-
99  bool success = false;
-
100 
-
101  if (request.action == FSTR_TOGGLE_setToggleState) {
-
102  bool powerState = request.request_value[FSTR_TOGGLE_state] == FSTR_TOGGLE_On ? true : false;
-
103  if (genericToggleStateCallback.find(request.instance) != genericToggleStateCallback.end())
-
104  success = genericToggleStateCallback[request.instance](device->deviceId, request.instance, powerState);
-
105  request.response_value[FSTR_TOGGLE_state] = powerState ? FSTR_TOGGLE_On : FSTR_TOGGLE_Off;
-
106  return success;
-
107  }
-
108  return success;
-
109 }
-
110 
-
111 } // SINRICPRO_NAMESPACE
-
112 
-
113 template <typename T>
-
114 using ToggleController = SINRICPRO_NAMESPACE::ToggleController<T>;
-
ToggleController.
Definition: ToggleController.h:37
-
std::function< bool(const String &, const String &, bool &)> GenericToggleStateCallback
Callback definition for onToggleState function.
Definition: ToggleController.h:29
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../EventLimiter.h"
+
5#include "../SinricProStrings.h"
+
6
+
7#include "../SinricProNamespace.h"
+
8namespace SINRICPRO_NAMESPACE {
+
9
+
10FSTR(TOGGLE, setToggleState); // "setToggleState"
+
11FSTR(TOGGLE, state); // "state"
+
12FSTR(TOGGLE, On); // "On"
+
13FSTR(TOGGLE, Off); // "Off"
+
14
+
29using GenericToggleStateCallback = std::function<bool(const String &, const String&, bool &)>;
+
30
+
31
+
36template <typename T>
+
+ +
38 public:
+ +
40
+
41 void onToggleState(const String& instance, GenericToggleStateCallback cb);
+
42 bool sendToggleStateEvent(const String &instance, bool state, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
+
43
+
44 protected:
+
45 bool handleToggleController(SinricProRequest &request);
+
46
+
47 private:
+
48 std::map<String, EventLimiter> event_limiter;
+
49 std::map<String, GenericToggleStateCallback> genericToggleStateCallback;
+
50};
+
+
51
+
52template <typename T>
+ +
54 T* device = static_cast<T*>(this);
+
55 device->registerRequestHandler(std::bind(&ToggleController<T>::handleToggleController, this, std::placeholders::_1));
+
56}
+
57
+
66template <typename T>
+
+ +
68 genericToggleStateCallback[instance] = cb;
+
69}
+
+
70
+
81template <typename T>
+
+
82bool ToggleController<T>::sendToggleStateEvent(const String &instance, bool state, String cause) {
+
83 if (event_limiter.find(instance) == event_limiter.end()) event_limiter[instance] = EventLimiter(EVENT_LIMIT_STATE);
+
84 if (event_limiter[instance]) return false;
+
85
+
86 T* device = static_cast<T*>(this);
+
87
+ + + + +
92 return device->sendEvent(eventMessage);
+
93}
+
+
94
+
95template <typename T>
+ +
97 T* device = static_cast<T*>(this);
+
98
+
99 bool success = false;
+
100
+
101 if (request.action == FSTR_TOGGLE_setToggleState) {
+
102 bool powerState = request.request_value[FSTR_TOGGLE_state] == FSTR_TOGGLE_On ? true : false;
+
103 if (genericToggleStateCallback.find(request.instance) != genericToggleStateCallback.end())
+
104 success = genericToggleStateCallback[request.instance](device->deviceId, request.instance, powerState);
+ +
106 return success;
+
107 }
+
108 return success;
+
109}
+
110
+
111} // SINRICPRO_NAMESPACE
+
112
+
113template <typename T>
+
114using ToggleController = SINRICPRO_NAMESPACE::ToggleController<T>;
+
AirQuality.
Definition AirQualitySensor.h:19
+
ToggleController.
Definition ToggleController.h:37
+
std::function< bool(const String &, const String &, bool &)> GenericToggleStateCallback
Callback definition for onToggleState function.
Definition ToggleController.h:29
diff --git a/docs/_volume_controller_8h_source.html b/docs/_volume_controller_8h_source.html index 42608d6..1f88447 100644 --- a/docs/_volume_controller_8h_source.html +++ b/docs/_volume_controller_8h_source.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities/VolumeController.h Source File +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities/VolumeController.h Source File @@ -23,8 +23,8 @@
- - + @@ -33,22 +33,28 @@
+
SinricPro Library
- + +/* @license-end */ + +
@@ -75,118 +81,135 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
VolumeController.h
+
VolumeController.h
-
1 #pragma once
-
2 
-
3 #include "../SinricProRequest.h"
-
4 #include "../EventLimiter.h"
-
5 #include "../SinricProStrings.h"
-
6 
-
7 #include "../SinricProNamespace.h"
-
8 namespace SINRICPRO_NAMESPACE {
-
9 
-
10 FSTR(VOLUME, setVolume); // "setVolume"
-
11 FSTR(VOLUME, volume); // "volume"
-
12 FSTR(VOLUME, adjustVolume); // "adjustVolume"
-
13 FSTR(VOLUME, volumeDefault); // "volumeDefault"
-
14 
-
29 using SetVolumeCallback = std::function<bool(const String &, int &)>;
-
30 
-
46 using AdjustVolumeCallback = std::function<bool(const String &, int &, bool)>;
-
47 
-
48 
-
53 template <typename T>
- -
55  public:
- -
57 
- - -
60 
-
61  bool sendVolumeEvent(int volume, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
-
62 
-
63  protected:
-
64  bool handleVolumeController(SinricProRequest &request);
-
65 
-
66  private:
-
67  EventLimiter event_limiter;
-
68  SetVolumeCallback volumeCallback;
-
69  AdjustVolumeCallback adjustVolumeCallback;
-
70 };
-
71 
-
72 template <typename T>
- -
74 : event_limiter(EVENT_LIMIT_STATE) {
-
75  T* device = static_cast<T*>(this);
-
76  device->registerRequestHandler(std::bind(&VolumeController<T>::handleVolumeController, this, std::placeholders::_1));
-
77 }
-
78 
-
86 template <typename T>
-
87 void VolumeController<T>::onSetVolume(SetVolumeCallback cb) { volumeCallback = cb; }
-
88 
-
96 template <typename T>
-
97 void VolumeController<T>::onAdjustVolume(AdjustVolumeCallback cb) { adjustVolumeCallback = cb; }
-
98 
-
108 template <typename T>
-
109 bool VolumeController<T>::sendVolumeEvent(int volume, String cause) {
-
110  if (event_limiter) return false;
-
111  T* device = static_cast<T*>(this);
-
112 
-
113  DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_VOLUME_setVolume, cause.c_str());
-
114  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
-
115  event_value[FSTR_VOLUME_volume] = volume;
-
116  return device->sendEvent(eventMessage);
-
117 }
-
118 
-
119 template <typename T>
-
120 bool VolumeController<T>::handleVolumeController(SinricProRequest &request) {
-
121  T* device = static_cast<T*>(this);
-
122 
-
123  bool success = false;
-
124 
-
125  if (volumeCallback && request.action == FSTR_VOLUME_setVolume) {
-
126  int volume = request.request_value[FSTR_VOLUME_volume];
-
127  success = volumeCallback(device->deviceId, volume);
-
128  request.response_value[FSTR_VOLUME_volume] = volume;
-
129  return success;
-
130  }
-
131 
-
132  if (adjustVolumeCallback && request.action == FSTR_VOLUME_adjustVolume) {
-
133  int volume = request.request_value[FSTR_VOLUME_volume];
-
134  bool volumeDefault = request.request_value[FSTR_VOLUME_volumeDefault] | false;
-
135  success = adjustVolumeCallback(device->deviceId, volume, volumeDefault);
-
136  request.response_value[FSTR_VOLUME_volume] = volume;
-
137  return success;
-
138  }
-
139  return success;
-
140 }
-
141 
-
142 } // SINRICPRO_NAMESPACE
-
143 
-
144 template <typename T>
-
145 using VolumeController = SINRICPRO_NAMESPACE::VolumeController<T>;
-
VolumeController.
Definition: VolumeController.h:54
-
void onAdjustVolume(AdjustVolumeCallback cb)
Set callback function for adjustVolume request.
Definition: VolumeController.h:97
-
void onSetVolume(SetVolumeCallback cb)
Set callback function for setVolume request.
Definition: VolumeController.h:87
-
bool sendVolumeEvent(int volume, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setVolume event to SinricPro Server indicating actual volume has changed.
Definition: VolumeController.h:109
-
std::function< bool(const String &, int &)> SetVolumeCallback
Callback definition for onSetVolume function.
Definition: VolumeController.h:29
-
std::function< bool(const String &, int &, bool)> AdjustVolumeCallback
Callback definition for onAdjustVolume function.
Definition: VolumeController.h:46
+
1#pragma once
+
2
+
3#include "../SinricProRequest.h"
+
4#include "../EventLimiter.h"
+
5#include "../SinricProStrings.h"
+
6
+
7#include "../SinricProNamespace.h"
+
8namespace SINRICPRO_NAMESPACE {
+
9
+
10FSTR(VOLUME, setVolume); // "setVolume"
+
11FSTR(VOLUME, volume); // "volume"
+
12FSTR(VOLUME, adjustVolume); // "adjustVolume"
+
13FSTR(VOLUME, volumeDefault); // "volumeDefault"
+
14
+
29using SetVolumeCallback = std::function<bool(const String &, int &)>;
+
30
+
46using AdjustVolumeCallback = std::function<bool(const String &, int &, bool)>;
+
47
+
48
+
53template <typename T>
+
+ +
55 public:
+ +
57
+
+ +
+ +
60
+
+ +
62
+
63 protected:
+
64 bool handleVolumeController(SinricProRequest &request);
+
65
+
66 private:
+
67 EventLimiter event_limiter;
+
68 SetVolumeCallback volumeCallback;
+
69 AdjustVolumeCallback adjustVolumeCallback;
+
70};
+
71
+
72template <typename T>
+ +
74: event_limiter(EVENT_LIMIT_STATE) {
+
75 T* device = static_cast<T*>(this);
+
76 device->registerRequestHandler(std::bind(&VolumeController<T>::handleVolumeController, this, std::placeholders::_1));
+
77}
+
78
+
86template <typename T>
+ +
88
+
96template <typename T>
+ +
98
+
108template <typename T>
+
+ +
110 if (event_limiter) return false;
+
111 T* device = static_cast<T*>(this);
+
112
+ + + +
116 return device->sendEvent(eventMessage);
+
117}
+
+
+
118
+
119template <typename T>
+ +
121 T* device = static_cast<T*>(this);
+
122
+
123 bool success = false;
+
124
+
125 if (volumeCallback && request.action == FSTR_VOLUME_setVolume) {
+
126 int volume = request.request_value[FSTR_VOLUME_volume];
+
127 success = volumeCallback(device->deviceId, volume);
+
128 request.response_value[FSTR_VOLUME_volume] = volume;
+
129 return success;
+
130 }
+
131
+
132 if (adjustVolumeCallback && request.action == FSTR_VOLUME_adjustVolume) {
+
133 int volume = request.request_value[FSTR_VOLUME_volume];
+
134 bool volumeDefault = request.request_value[FSTR_VOLUME_volumeDefault] | false;
+
135 success = adjustVolumeCallback(device->deviceId, volume, volumeDefault);
+
136 request.response_value[FSTR_VOLUME_volume] = volume;
+
137 return success;
+
138 }
+
139 return success;
+
140}
+
141
+
142} // SINRICPRO_NAMESPACE
+
143
+
144template <typename T>
+
145using VolumeController = SINRICPRO_NAMESPACE::VolumeController<T>;
+
+
+
+
AirQuality.
Definition AirQualitySensor.h:19
+
VolumeController.
Definition VolumeController.h:54
+
void onAdjustVolume(AdjustVolumeCallback cb)
Set callback function for adjustVolume request.
Definition VolumeController.h:97
+
void onSetVolume(SetVolumeCallback cb)
Set callback function for setVolume request.
Definition VolumeController.h:87
+
bool sendVolumeEvent(int volume, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setVolume event to SinricPro Server indicating actual volume has changed.
Definition VolumeController.h:109
+
std::function< bool(const String &, int &)> SetVolumeCallback
Callback definition for onSetVolume function.
Definition VolumeController.h:29
+
std::function< bool(const String &, int &, bool)> AdjustVolumeCallback
Callback definition for onAdjustVolume function.
Definition VolumeController.h:46
diff --git a/docs/annotated.html b/docs/annotated.html index bef676b..a73d706 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -1,9 +1,9 @@ - + - - + + SinricPro Library: Class List @@ -23,8 +23,8 @@
- - + @@ -33,21 +33,22 @@
+
SinricPro Library
- + +/* @license-end */ +
@@ -61,7 +62,7 @@
@@ -75,66 +76,72 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Class List
+
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
[detail level 12]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 NSINRICPRO_2_9_17SinricPro namespace
 CSinricProClassThe main class of this library, handling communication between SinricPro Server and your devices
 CSinricProAirQualitySensorDevice to report air quality events
 CSinricProBlindsDevice to control interior blinds
 CSinricProCameraCamera suporting basic on / off command
 CSinricProContactsensorDevice to report contact sensor events
 CSinricProDeviceBase class for all device types
 CSinricProDimSwitchDevice which supports on / off and dimming commands
 CSinricProDoorbellDevice to report doorbell events
 CSinricProFanDevice to turn on / off a fan and change it's speed by using powerlevel
 CSinricProFanUSDevice to control a fan with on / off commands and its speed by a range value
 CSinricProGarageDoorDevice to control a garage door
 CSinricProLightDevice to control a light
 CSinricProLockDevice to control a smart lock
 CSinricProMotionsensorDevice to report motion detection events
 CSinricProPowerSensorDevice to report power usage
 CSinricProSpeakerDevice to control a smart speaker
 CSinricProSwitchDevice suporting basic on / off command
 CSinricProTemperaturesensorDevice to report actual temperature and humidity
 CSinricProThermostatDevice to control Thermostat
 CSinricProTVDevice to control a TV
 CSinricProWindowACDevice to control Window Air Conditioner
 CAirQualitySensorAirQuality
 CBrightnessControllerBrightnessController
 CChannelControllerChannelController
 CColorControllerColorController
 CColorTemperatureControllerColorTemperatureController
 CContactSensorContactSensor
 CDoorbellDorbell
 CDoorControllerDoorController - only used for GarageDoor device and cannot used as capability for a custom device!
 CEqualizerControllerEqualizerController
 CInputControllerInputController
 CKeypadControllerKeypadController
 CLockControllerLockController
 CMediaControllerMediaController
 CModeControllerModeController
 CMotionSensorMotionSensor
 CMuteControllerMuteController
 CPercentageControllerPercentageController
 CPowerLevelControllerPowerLevelController
 CPowerSensorPowerSensor
 CPowerStateControllerPowerStateController
 CPushNotificationPushNotification
 CRangeControllerRangeControllerFloatInt
 CTemperatureSensorTemperatureSensor
 CThermostatControllerThermostatController
 CToggleControllerToggleController
 CVolumeControllerVolumeController
 NSINRICPRO_3_0_0SinricPro namespace
 CAirQualitySensorAirQuality
 CBrightnessControllerBrightnessController
 CChannelControllerChannelController
 CColorControllerColorController
 CColorTemperatureControllerColorTemperatureController
 CContactSensorContactSensor
 CDoorbellDorbell
 CDoorControllerDoorController - only used for GarageDoor device and cannot used as capability for a custom device!
 CEqualizerControllerEqualizerController
 CInputControllerInputController
 CKeypadControllerKeypadController
 CLockControllerLockController
 CMediaControllerMediaController
 CModeControllerModeController
 CMotionSensorMotionSensor
 CMuteControllerMuteController
 CPercentageControllerPercentageController
 CPowerLevelControllerPowerLevelController
 CPowerSensorPowerSensor
 CPowerStateControllerPowerStateController
 CPushNotificationPushNotification
 CRangeControllerRangeControllerFloatInt
 CSinricProAirQualitySensorDevice to report air quality events
 CSinricProBlindsDevice to control interior blinds
 CSinricProCameraCamera suporting basic on / off command
 CSinricProClassThe main class of this library, handling communication between SinricPro Server and your devices
 CSinricProContactsensorDevice to report contact sensor events
 CSinricProDeviceBase class for all device types
 CSinricProDimSwitchDevice which supports on / off and dimming commands
 CSinricProDoorbellDevice to report doorbell events
 CSinricProFanDevice to turn on / off a fan and change it's speed by using powerlevel
 CSinricProFanUSDevice to control a fan with on / off commands and its speed by a range value
 CSinricProGarageDoorDevice to control a garage door
 CSinricProLightDevice to control a light
 CSinricProLockDevice to control a smart lock
 CSinricProMotionsensorDevice to report motion detection events
 CSinricProPowerSensorDevice to report power usage
 CSinricProSpeakerDevice to control a smart speaker
 CSinricProSwitchDevice suporting basic on / off command
 CSinricProTemperaturesensorDevice to report actual temperature and humidity
 CSinricProThermostatDevice to control Thermostat
 CSinricProTVDevice to control a TV
 CSinricProWindowACDevice to control Window Air Conditioner
 CTemperatureSensorTemperatureSensor
 CThermostatControllerThermostatController
 CToggleControllerToggleController
 CVolumeControllerVolumeController
@@ -142,7 +149,7 @@ diff --git a/docs/annotated_dup.js b/docs/annotated_dup.js index 8c3af3c..e9acaed 100644 --- a/docs/annotated_dup.js +++ b/docs/annotated_dup.js @@ -1,52 +1,52 @@ var annotated_dup = [ - [ "SINRICPRO_2_9_17", "namespace_s_i_n_r_i_c_p_r_o__2__9__17.html", [ - [ "SinricProClass", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class" ], - [ "SinricProAirQualitySensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_air_quality_sensor.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_air_quality_sensor" ], - [ "SinricProBlinds", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds" ], - [ "SinricProCamera", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_camera.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_camera" ], - [ "SinricProContactsensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_contactsensor.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_contactsensor" ], - [ "SinricProDevice", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_device.html", null ], - [ "SinricProDimSwitch", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch" ], - [ "SinricProDoorbell", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_doorbell.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_doorbell" ], - [ "SinricProFan", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan" ], - [ "SinricProFanUS", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s" ], - [ "SinricProGarageDoor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_garage_door.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_garage_door" ], - [ "SinricProLight", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light" ], - [ "SinricProLock", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_lock.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_lock" ], - [ "SinricProMotionsensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_motionsensor.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_motionsensor" ], - [ "SinricProPowerSensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_power_sensor.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_power_sensor" ], - [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker" ], - [ "SinricProSwitch", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_switch.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_switch" ], - [ "SinricProTemperaturesensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_temperaturesensor.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_temperaturesensor" ], - [ "SinricProThermostat", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat" ], - [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v" ], - [ "SinricProWindowAC", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c" ], - [ "AirQualitySensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_air_quality_sensor.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_air_quality_sensor" ], - [ "BrightnessController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_brightness_controller.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_brightness_controller" ], - [ "ChannelController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller" ], - [ "ColorController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_controller.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_controller" ], - [ "ColorTemperatureController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller" ], - [ "ContactSensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_contact_sensor.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_contact_sensor" ], - [ "Doorbell", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_doorbell.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_doorbell" ], - [ "DoorController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_door_controller.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_door_controller" ], - [ "EqualizerController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller" ], - [ "InputController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_input_controller.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_input_controller" ], - [ "KeypadController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_keypad_controller.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_keypad_controller" ], - [ "LockController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_lock_controller.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_lock_controller" ], - [ "MediaController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_media_controller.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_media_controller" ], - [ "ModeController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller" ], - [ "MotionSensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_motion_sensor.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_motion_sensor" ], - [ "MuteController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mute_controller.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mute_controller" ], - [ "PercentageController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_percentage_controller.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_percentage_controller" ], - [ "PowerLevelController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller" ], - [ "PowerSensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_sensor.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_sensor" ], - [ "PowerStateController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller" ], - [ "PushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification" ], - [ "RangeController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller" ], - [ "TemperatureSensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_temperature_sensor.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_temperature_sensor" ], - [ "ThermostatController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller" ], - [ "ToggleController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_toggle_controller.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_toggle_controller" ], - [ "VolumeController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller" ] + [ "SINRICPRO_3_0_0", "namespace_s_i_n_r_i_c_p_r_o__3__0__0.html", [ + [ "AirQualitySensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor" ], + [ "BrightnessController", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller" ], + [ "ChannelController", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller" ], + [ "ColorController", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller" ], + [ "ColorTemperatureController", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller" ], + [ "ContactSensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor" ], + [ "Doorbell", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell" ], + [ "DoorController", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller" ], + [ "EqualizerController", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller" ], + [ "InputController", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller" ], + [ "KeypadController", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller" ], + [ "LockController", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller" ], + [ "MediaController", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller" ], + [ "ModeController", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller" ], + [ "MotionSensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor" ], + [ "MuteController", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller" ], + [ "PercentageController", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller" ], + [ "PowerLevelController", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller" ], + [ "PowerSensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor" ], + [ "PowerStateController", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller" ], + [ "PushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification" ], + [ "RangeController", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller" ], + [ "SinricProAirQualitySensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor" ], + [ "SinricProBlinds", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds" ], + [ "SinricProCamera", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera" ], + [ "SinricProClass", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class" ], + [ "SinricProContactsensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor" ], + [ "SinricProDevice", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device.html", null ], + [ "SinricProDimSwitch", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch" ], + [ "SinricProDoorbell", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell" ], + [ "SinricProFan", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan" ], + [ "SinricProFanUS", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s" ], + [ "SinricProGarageDoor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door" ], + [ "SinricProLight", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light" ], + [ "SinricProLock", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock" ], + [ "SinricProMotionsensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor" ], + [ "SinricProPowerSensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor" ], + [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker" ], + [ "SinricProSwitch", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch" ], + [ "SinricProTemperaturesensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor" ], + [ "SinricProThermostat", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat" ], + [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v" ], + [ "SinricProWindowAC", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c" ], + [ "TemperatureSensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor" ], + [ "ThermostatController", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller" ], + [ "ToggleController", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller" ], + [ "VolumeController", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller" ] ] ] ]; \ No newline at end of file diff --git a/docs/bc_sd.png b/docs/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor-members.html new file mode 100644 index 0000000..53ad466 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor-members.html @@ -0,0 +1,108 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AirQualitySensor< T > Member List
+
+
+ +

This is the complete list of members for AirQualitySensor< T >, including all inherited members.

+ + +
sendAirQualityEvent(int pm1=0, int pm2_5=0, int pm10=0, String cause=FSTR_SINRICPRO_PERIODIC_POLL)AirQualitySensor< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.html new file mode 100644 index 0000000..cac7014 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.html @@ -0,0 +1,197 @@ + + + + + + + +SinricPro Library: AirQualitySensor< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

AirQuality. + More...

+ +

#include <AirQualitySensor.h>

+
+Inheritance diagram for AirQualitySensor< T >:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+ + + + + +

+Public Member Functions

bool sendAirQualityEvent (int pm1=0, int pm2_5=0, int pm10=0, String cause=FSTR_SINRICPRO_PERIODIC_POLL)
 Sending air quality to SinricPro server.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::AirQualitySensor< T >

AirQuality.

+

Member Function Documentation

+ +

◆ sendAirQualityEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool sendAirQualityEvent (int pm1 = 0,
int pm2_5 = 0,
int pm10 = 0,
String cause = FSTR_SINRICPRO_PERIODIC_POLL 
)
+
+ +

Sending air quality to SinricPro server.

+
Parameters
+ + + + + +
pm1int 1.0 μm particle pollutant in μg/m3
pm2_5int 2.5 μm particle pollutant in μg/m3
pm10int 10 μm particle pollutant in μg/m3
cause(optional) String reason why event is sent (default = "PERIODIC_POLL")
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.js new file mode 100644 index 0000000..1709ece --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.js @@ -0,0 +1,4 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor = +[ + [ "sendAirQualityEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.html#a733195bdc5b15c858e4e890847b3a0d5", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor__inherit__graph.map new file mode 100644 index 0000000..2f1101f --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor__inherit__graph.md5 new file mode 100644 index 0000000..75803bc --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor__inherit__graph.md5 @@ -0,0 +1 @@ +f165304063b214c0327790bba05f0d9a \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ef590a4293f2464e1731271b89cf59848030d463 GIT binary patch literal 3656 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 literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller-members.html new file mode 100644 index 0000000..794a193 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller-members.html @@ -0,0 +1,110 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BrightnessController< T > Member List
+
+
+ +

This is the complete list of members for BrightnessController< T >, including all inherited members.

+ + + + +
onAdjustBrightness(AdjustBrightnessCallback cb)BrightnessController< T >
onBrightness(BrightnessCallback cb)BrightnessController< T >
sendBrightnessEvent(int brightness, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)BrightnessController< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html new file mode 100644 index 0000000..c204099 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html @@ -0,0 +1,249 @@ + + + + + + + +SinricPro Library: BrightnessController< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BrightnessController< T >
+
+
+ +

BrightnessController. + More...

+ +

#include <BrightnessController.h>

+
+Inheritance diagram for BrightnessController< T >:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + +

+Public Member Functions

void onBrightness (BrightnessCallback cb)
 Set callback function for setBrightness request.
 
void onAdjustBrightness (AdjustBrightnessCallback cb)
 Set callback function for adjustBrightness request.
 
bool sendBrightnessEvent (int brightness, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setBrightness event to SinricPro Server indicating actual brightness.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::BrightnessController< T >

BrightnessController.

+

Member Function Documentation

+ +

◆ onAdjustBrightness()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onAdjustBrightness (AdjustBrightnessCallback cb)
+
+ +

Set callback function for adjustBrightness request.

+
Parameters
+ + +
cbFunction pointer to a AdjustBrightnessCallback function
+
+
+
Returns
void
+
See also
AdjustBrightnessCallback
+ +
+
+ +

◆ onBrightness()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onBrightness (BrightnessCallback cb)
+
+ +

Set callback function for setBrightness request.

+
Parameters
+ + +
cbFunction pointer to a BrightnessCallback function
+
+
+
Returns
void
+
See also
BrightnessCallback
+ +
+
+ +

◆ sendBrightnessEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
bool sendBrightnessEvent (int brightness,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send setBrightness event to SinricPro Server indicating actual brightness.

+
Parameters
+ + + +
brightnessInteger value with actual brightness the device is set to
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.js new file mode 100644 index 0000000..60c5aad --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.js @@ -0,0 +1,6 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller = +[ + [ "onAdjustBrightness", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html#a0633e5fa2981189f4a093bab00a8c7f1", null ], + [ "onBrightness", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html#abbaab3067b1fcdcc5928451b818a4420", null ], + [ "sendBrightnessEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html#a2a96c414210f61de3ce53a4ca8c963b3", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller__inherit__graph.map new file mode 100644 index 0000000..c637bdc --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller__inherit__graph.md5 new file mode 100644 index 0000000..55199b5 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller__inherit__graph.md5 @@ -0,0 +1 @@ +3d031a1c22aef07155eb37ae297c086b \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..67bb9454fc35319453a10c97aa75449f4e4b541a GIT binary patch literal 3110 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 literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller-members.html new file mode 100644 index 0000000..26135ef --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller-members.html @@ -0,0 +1,111 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ChannelController< T > Member List
+
+
+ +

This is the complete list of members for ChannelController< T >, including all inherited members.

+ + + + + +
onChangeChannel(ChangeChannelCallback cb)ChannelController< T >
onChangeChannelNumber(ChangeChannelNumberCallback cb)ChannelController< T >
onSkipChannels(SkipChannelsCallback cb)ChannelController< T >
sendChangeChannelEvent(String channelName, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)ChannelController< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html new file mode 100644 index 0000000..9885c6b --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html @@ -0,0 +1,282 @@ + + + + + + + +SinricPro Library: ChannelController< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

ChannelController. + More...

+ +

#include <ChannelController.h>

+
+Inheritance diagram for ChannelController< T >:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + +

+Public Member Functions

void onChangeChannel (ChangeChannelCallback cb)
 Set callback function for changeChannel request.
 
void onChangeChannelNumber (ChangeChannelNumberCallback cb)
 Set callback function for changeChannel request.
 
void onSkipChannels (SkipChannelsCallback cb)
 Set callback function for skipChannels request.
 
bool sendChangeChannelEvent (String channelName, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send changeChannel event to SinricPro Server to report selected channel.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::ChannelController< T >

ChannelController.

+

Member Function Documentation

+ +

◆ onChangeChannel()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onChangeChannel (ChangeChannelCallback cb)
+
+ +

Set callback function for changeChannel request.

+
Parameters
+ + +
cbFunction pointer to a ChangeChannelCallback function
+
+
+
Returns
void
+
See also
ChangeChannelCallback
+ +
+
+ +

◆ onChangeChannelNumber()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onChangeChannelNumber (ChangeChannelNumberCallback cb)
+
+ +

Set callback function for changeChannel request.

+
Parameters
+ + +
cbFunction pointer to a ChangeChannelNumberCallback function
+
+
+
Returns
void
+
See also
ChangeChannelNumberCallback
+ +
+
+ +

◆ onSkipChannels()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onSkipChannels (SkipChannelsCallback cb)
+
+ +

Set callback function for skipChannels request.

+
Parameters
+ + +
cbFunction pointer to a SkipChannelsCallback function
+
+
+
Returns
void
+
See also
SkipChannelsCallback
+ +
+
+ +

◆ sendChangeChannelEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
bool sendChangeChannelEvent (String channelName,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send changeChannel event to SinricPro Server to report selected channel.

+
Parameters
+ + + +
channelNameString with actual channel
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.js new file mode 100644 index 0000000..0007804 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.js @@ -0,0 +1,7 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller = +[ + [ "onChangeChannel", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html#a92f3b83744b5bb82d32628eef39c1eb9", null ], + [ "onChangeChannelNumber", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html#afd8aee20590bfadec181c6ee515125ec", null ], + [ "onSkipChannels", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html#ab1123d03d471fad4896eb2960ed41855", null ], + [ "sendChangeChannelEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html#aff5839c3020c3006af1a2a8c37cc858e", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller__inherit__graph.map new file mode 100644 index 0000000..2a1ae88 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller__inherit__graph.md5 new file mode 100644 index 0000000..da2016a --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller__inherit__graph.md5 @@ -0,0 +1 @@ +05627dfa72a941093aedb3cc5313f975 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ae635e9d78290825d9f5ae8d9798a3ce491f2128 GIT binary patch literal 2982 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 literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller-members.html new file mode 100644 index 0000000..7c8595c --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller-members.html @@ -0,0 +1,109 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ColorController< T > Member List
+
+
+ +

This is the complete list of members for ColorController< T >, including all inherited members.

+ + + +
onColor(ColorCallback cb)ColorController< T >
sendColorEvent(byte r, byte g, byte b, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)ColorController< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html new file mode 100644 index 0000000..6d2fdfd --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html @@ -0,0 +1,230 @@ + + + + + + + +SinricPro Library: ColorController< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

ColorController. + More...

+ +

#include <ColorController.h>

+
+Inheritance diagram for ColorController< T >:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+ + + + + + + + +

+Public Member Functions

void onColor (ColorCallback cb)
 Set callback function for setColor request.
 
bool sendColorEvent (byte r, byte g, byte b, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setColor event to SinricPro Server indicating actual color.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::ColorController< T >

ColorController.

+

Member Function Documentation

+ +

◆ onColor()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onColor (ColorCallback cb)
+
+ +

Set callback function for setColor request.

+
Parameters
+ + +
cbFunction pointer to a ColorCallback function
+
+
+
Returns
void
+
See also
ColorCallback
+ +
+
+ +

◆ sendColorEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool sendColorEvent (byte r,
byte g,
byte b,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send setColor event to SinricPro Server indicating actual color.

+
Parameters
+ + + + + +
rByte value for red
gByte value for green
bByte value for blue
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.js new file mode 100644 index 0000000..1c26c42 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.js @@ -0,0 +1,5 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller = +[ + [ "onColor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html#a059ff103149869b7c49cdb8911875b7b", null ], + [ "sendColorEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html#a3599a6d00eb0f9127a7c1188885c5bc0", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller__inherit__graph.map new file mode 100644 index 0000000..9f615d9 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller__inherit__graph.md5 new file mode 100644 index 0000000..bd3360e --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller__inherit__graph.md5 @@ -0,0 +1 @@ +33ddd9c72ef077b2ecf84ebd7000c3db \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..df29367dd964819d6e07be7969dfc14178ee1590 GIT binary patch literal 2946 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 literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller-members.html new file mode 100644 index 0000000..32615c2 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller-members.html @@ -0,0 +1,111 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ColorTemperatureController< T > Member List
+
+
+ +

This is the complete list of members for ColorTemperatureController< T >, including all inherited members.

+ + + + + +
onColorTemperature(ColorTemperatureCallback cb)ColorTemperatureController< T >
onDecreaseColorTemperature(DecreaseColorTemperatureCallback cb)ColorTemperatureController< T >
onIncreaseColorTemperature(IncreaseColorTemperatureCallback cb)ColorTemperatureController< T >
sendColorTemperatureEvent(int colorTemperature, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)ColorTemperatureController< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html new file mode 100644 index 0000000..66383df --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html @@ -0,0 +1,287 @@ + + + + + + + +SinricPro Library: ColorTemperatureController< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ColorTemperatureController< T >
+
+
+ +

ColorTemperatureController. + More...

+ +

#include <ColorTemperatureController.h>

+
+Inheritance diagram for ColorTemperatureController< T >:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + +

+Public Member Functions

void onColorTemperature (ColorTemperatureCallback cb)
 Set callback function for setColorTemperature request.
 
void onIncreaseColorTemperature (IncreaseColorTemperatureCallback cb)
 Set callback function for increaseColorTemperature request.
 
void onDecreaseColorTemperature (DecreaseColorTemperatureCallback cb)
 Set callback function for decreaseColorTemperature request.
 
bool sendColorTemperatureEvent (int colorTemperature, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setColorTemperature event to SinricPro Server indicating actual color temperature.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::ColorTemperatureController< T >

ColorTemperatureController.

+

Member Function Documentation

+ +

◆ onColorTemperature()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onColorTemperature (ColorTemperatureCallback cb)
+
+ +

Set callback function for setColorTemperature request.

+
Parameters
+ + +
cbFunction pointer to a ColorTemperatureCallback function
+
+
+
Returns
void
+
See also
ColorTemperatureCallback
+ +
+
+ +

◆ onDecreaseColorTemperature()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onDecreaseColorTemperature (DecreaseColorTemperatureCallback cb)
+
+ +

Set callback function for decreaseColorTemperature request.

+
Parameters
+ + +
cbFunction pointer to a DecreaseColorTemperatureCallback function
+
+
+
Returns
void
+
See also
DecreaseColorTemperatureCallback
+ +
+
+ +

◆ onIncreaseColorTemperature()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onIncreaseColorTemperature (IncreaseColorTemperatureCallback cb)
+
+ +

Set callback function for increaseColorTemperature request.

+
Parameters
+ + +
cbFunction pointer to a IncreaseColorTemperatureCallback function
+
+
+
Returns
void
+
See also
IncreaseColorTemperatureCallback
+ +
+
+ +

◆ sendColorTemperatureEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
bool sendColorTemperatureEvent (int colorTemperature,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send setColorTemperature event to SinricPro Server indicating actual color temperature.

+
Parameters
+ + + +
colorTemperatureInteger with new color temperature the device is set to
+ 2200 = warm white
+ 2700 = soft white
+ 4000 = white
+ 5500 = daylight white
+ 7000 = cool white
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.js new file mode 100644 index 0000000..a6d2eaa --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.js @@ -0,0 +1,7 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller = +[ + [ "onColorTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html#a8535c44fd2517ed09ebe6a203cc25b67", null ], + [ "onDecreaseColorTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html#a7468976e7fffeee14cc869b7236cbb50", null ], + [ "onIncreaseColorTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html#a7ea9fd9861a5668a41d06267bfbec82a", null ], + [ "sendColorTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html#a0f90d7f5a5b365116f97beca7630ccc9", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller__inherit__graph.map new file mode 100644 index 0000000..b5b9d52 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller__inherit__graph.md5 new file mode 100644 index 0000000..b069ebd --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller__inherit__graph.md5 @@ -0,0 +1 @@ +bbb1768333abb3b91bb6978cf70937af \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d762f4936e0823712af48ec1ccdff8fbc69a9a65 GIT binary patch literal 3228 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 R(kb6H4sP#cM>>p3{5O%lB$5CC literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor-members.html new file mode 100644 index 0000000..dabc0f0 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor-members.html @@ -0,0 +1,108 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ContactSensor< T > Member List
+
+
+ +

This is the complete list of members for ContactSensor< T >, including all inherited members.

+ + +
sendContactEvent(bool detected, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)ContactSensor< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.html new file mode 100644 index 0000000..ac3fd6c --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.html @@ -0,0 +1,179 @@ + + + + + + + +SinricPro Library: ContactSensor< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

ContactSensor. + More...

+ +

#include <ContactSensor.h>

+
+Inheritance diagram for ContactSensor< T >:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+ + + + + +

+Public Member Functions

bool sendContactEvent (bool detected, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setContactState event to SinricPro Server indicating actual power state.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::ContactSensor< T >

ContactSensor.

+

Member Function Documentation

+ +

◆ sendContactEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
bool sendContactEvent (bool detected,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send setContactState event to SinricPro Server indicating actual power state.

+
Parameters
+ + + +
detected[in] booltrue = contact is closed
+ [in] false = contact is open
cause[in] String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
true event has been sent successfully
+
+false event has not been sent, maybe you sent to much events in a short distance of time
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.js new file mode 100644 index 0000000..c0882fe --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.js @@ -0,0 +1,4 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor = +[ + [ "sendContactEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.html#a452a4cfa3177d8d8d31c5919e9ccbb19", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor__inherit__graph.map new file mode 100644 index 0000000..0082d22 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor__inherit__graph.md5 new file mode 100644 index 0000000..244da1d --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor__inherit__graph.md5 @@ -0,0 +1 @@ +205c07a196b989a46edda59713e71aa5 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3ae332ff7d2f898b32eba2aaff15861d91bafe5e GIT binary patch literal 3363 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 + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DoorController< T > Member List
+
+
+ +

This is the complete list of members for DoorController< T >, including all inherited members.

+ + + +
onDoorState(DoorCallback cb)DoorController< T >
sendDoorStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)DoorController< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.html new file mode 100644 index 0000000..383711f --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.html @@ -0,0 +1,217 @@ + + + + + + + +SinricPro Library: DoorController< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DoorController< T >
+
+
+ +

DoorController - only used for GarageDoor device and cannot used as capability for a custom device! + More...

+ +

#include <DoorController.h>

+
+Inheritance diagram for DoorController< T >:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+ + + + + + + + +

+Public Member Functions

void onDoorState (DoorCallback cb)
 Set callback function for onDoorState request.
 
bool sendDoorStateEvent (bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send DoorState event to update actual door state on SinricPro Server.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::DoorController< T >

DoorController - only used for GarageDoor device and cannot used as capability for a custom device!

+

Member Function Documentation

+ +

◆ onDoorState()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onDoorState (DoorCallback cb)
+
+ +

Set callback function for onDoorState request.

+
Parameters
+ + +
cbFunction pointer to a onDoorState function
+
+
+
Returns
void
+
See also
DoorStateCallback
+ +
+
+ +

◆ sendDoorStateEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
bool sendDoorStateEvent (bool state,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send DoorState event to update actual door state on SinricPro Server.

+
Parameters
+ + + +
statebool true = close
+ false = open
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.js new file mode 100644 index 0000000..9851955 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.js @@ -0,0 +1,5 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller = +[ + [ "onDoorState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.html#a6b536531ab89b39f1a48cb107e22185e", null ], + [ "sendDoorStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.html#a375cda2b0bc05e1a66e3bc29d059d9a7", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller__inherit__graph.map new file mode 100644 index 0000000..1932ec0 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller__inherit__graph.md5 new file mode 100644 index 0000000..be5fef1 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller__inherit__graph.md5 @@ -0,0 +1 @@ +b093cf85e30c8f967e2840b6e22b5803 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..305aced8676cc7b0624e4207470d593d403417ed GIT binary patch literal 3377 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 VLErr^zW#yaT$~_|WCx%4zXO>Yz-s^i literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell-members.html new file mode 100644 index 0000000..f0cfdb5 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell-members.html @@ -0,0 +1,108 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Doorbell< T > Member List
+
+
+ +

This is the complete list of members for Doorbell< T >, including all inherited members.

+ + +
sendDoorbellEvent(String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)Doorbell< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.html new file mode 100644 index 0000000..3399863 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.html @@ -0,0 +1,172 @@ + + + + + + + +SinricPro Library: Doorbell< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Dorbell. + More...

+ +

#include <Doorbell.h>

+
+Inheritance diagram for Doorbell< T >:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+ + + + + +

+Public Member Functions

bool sendDoorbellEvent (String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send Doorbell event to SinricPro Server indicating someone pressed the doorbell button.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::Doorbell< T >

Dorbell.

+

Member Function Documentation

+ +

◆ sendDoorbellEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + +
bool sendDoorbellEvent (String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION)
+
+ +

Send Doorbell event to SinricPro Server indicating someone pressed the doorbell button.

+
Parameters
+ + +
causeString (optional) Reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.js new file mode 100644 index 0000000..1c735dd --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.js @@ -0,0 +1,4 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell = +[ + [ "sendDoorbellEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.html#a168f5a4ddcbf381fd548bf10ee05b272", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell__inherit__graph.map new file mode 100644 index 0000000..cd3d8af --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell__inherit__graph.md5 new file mode 100644 index 0000000..e7a3fa8 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell__inherit__graph.md5 @@ -0,0 +1 @@ +bc708943c67aa4f977ed51e3d1a4fc2f \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1d254dd1394d4e0ad7fa6f49f69716a8258e4133 GIT binary patch literal 2892 zcmbtWeLNFdAE#Utd8wyb6Dmr$q`F9q>m{}@Az~V(*ws+65i<&tm*h6rTS79Hc^Snp zqf13e*x1%46yJi1nXLFOH6d^=1B*0ZMPg&2n}TpC-p?X@&V z=cb{hipBgE|wO!);Eg#|v};t(93d$t!S z*A7fMZJoPll=X85j`L}M@m&l$np1|Txl5L|PL~5!nB3LE-U+ll7ctbh?!{hsuYXDA@^|+R{N)~!d$33S zqoTa^_4SM21jd zX0I*#_A+XEED8Q8uDr9p*p$ge41J5%M}d;%b~)8@`si)FT6grVugW81e1U6gp?!KP z>g_;Pu>uytXl;9m-FVarc&70RSJRoiT5>Q>(U+e2Ox z*t+w18iw^|`NBdX%{Qk%Q}}dP9{FQTE}2eQPojWZd@d(8)a= z8Wi*vk@LQ{w|RbbeoRl0%`v<#<^V~;hH^?5AIV^sg{tKqKVz*63oTBf3ChqG&I2E= zhIGrSu>)uQjjgO^zHe3XKpv^IH!v_*q1smRjZTSXE)R0nzpi()+;x743V||)8wF{s zbaRTH=;)Q@BUk3qW$|lfg82zldr^N6ZNbAu*r=d)>;RgTek~lo&I%z5sbv{W{3g9{ z-xW(q%!_Z3uF$xFp%H{fLE#VNz3NQ+A#_P$PNZsJ(XMyePEV;_PGD6}TgFmgreYjV zsfd?)IN2E)whSAm?ex6DxZ`Nm(;smZ;k=6+l4a_5B=_FKqN2#!o_Gq}UGe%^v<@q2 zqPF|nly|yXWQO;6Y;6jVAB8AKfynpO%&urv!K4mWkQUcx_BU_(<$@InicdtIQG? zN!Eqn74V}XCQ2|GA{!L(8CbNE4rCEq0E7?7~v?r^JeTTi3r8aIxyH1Co#`MGHS4YATDv_Z(LJBeC& z%5rO=GF)NQ#!IW8H+2RQ#&9e~T3-anI(&H*AkN!CZb-_=v~yYG-^QH0>YOYGLfVPp_q63;86^G^s(Z6z35|B_91LZjsS*e^~O$I~==z8_v%A6e;@)0L+m ztb71Qu~nA$5RG#t!MUj_YVE)~?!=hh1(Z`{(ytA--b142`l3dZ-2hJ{(aZ{S7V4Iw zYc4HpHK*_@s`exvRb|PaBA0Y2-MLO4fQ_Q+hEi3uVtaufQeLb!rSqrOidWHX2j+&Ko-XKE!$Kjxo!oNyT7SU) zzH+N&gBdJg#F3i^qj@k&@Wa{juGdz68?K5TA7Fos&Nn`!k!XCPGmcjTCa^J#Ohi%m z^~7qqxk~`Wf5hdVANxOn_Wv2Q6N?d`o1?Gvhea*Lyr14v!mWtKrQWoEA*vq#O77>fWh-jOK&DG0^lhvx0ha ztiv2H&y%O$^}sLAjF1!Ll#>j%x`)k;o`JWefhV zvyYllz}!IfJK>DY6?--Y%`P-rG&`@ZplveQFSVTZOglyPlNp5Esfw07o~7O8Kn^n8_vSKUZm1n3Z?ni_H;N|2hp zYjpg$qU_&f&8EEDys#%?5E8GgmSYHKlse|v + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EqualizerController< T > Member List
+
+
+ +

This is the complete list of members for EqualizerController< T >, including all inherited members.

+ + + + + +
onAdjustBands(AdjustBandsCallback cb)EqualizerController< T >
onResetBands(ResetBandsCallback cb)EqualizerController< T >
onSetBands(SetBandsCallback cb)EqualizerController< T >
sendBandsEvent(String bands, int level, String cause="PHYSICAL_INTERACTION")EqualizerController< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html new file mode 100644 index 0000000..38f5bd2 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html @@ -0,0 +1,290 @@ + + + + + + + +SinricPro Library: EqualizerController< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
EqualizerController< T >
+
+
+ +

EqualizerController. + More...

+ +

#include <EqualizerController.h>

+
+Inheritance diagram for EqualizerController< T >:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + +

+Public Member Functions

void onSetBands (SetBandsCallback cb)
 Set callback function for setBands request.
 
void onAdjustBands (AdjustBandsCallback cb)
 Set callback function for adjustBands request.
 
void onResetBands (ResetBandsCallback cb)
 Set callback function for resetBands request.
 
bool sendBandsEvent (String bands, int level, String cause="PHYSICAL_INTERACTION")
 Send setBands event to SinricPro Server indicating bands level has changed.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::EqualizerController< T >

EqualizerController.

+

Member Function Documentation

+ +

◆ onAdjustBands()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onAdjustBands (AdjustBandsCallback cb)
+
+ +

Set callback function for adjustBands request.

+
Parameters
+ + +
cbFunction pointer to a AdjustBandsCallback function
+
+
+
Returns
void
+
See also
AdjustBandsCallback
+ +
+
+ +

◆ onResetBands()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onResetBands (ResetBandsCallback cb)
+
+ +

Set callback function for resetBands request.

+
Parameters
+ + +
cbFunction pointer to a ResetBandsCallback function
+
+
+
Returns
void
+
See also
ResetBandsCallback
+ +
+
+ +

◆ onSetBands()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onSetBands (SetBandsCallback cb)
+
+ +

Set callback function for setBands request.

+
Parameters
+ + +
cbFunction pointer to a SetBandsCallback function
+
+
+
Returns
void
+
See also
SetBandsCallback
+ +
+
+ +

◆ sendBandsEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sendBandsEvent (String bands,
int level,
String cause = "PHYSICAL_INTERACTION" 
)
+
+ +

Send setBands event to SinricPro Server indicating bands level has changed.

+
Parameters
+ + + + +
bandsString which bands has changed
+ BASS, MIDRANGE, TREBBLE
levelInteger with changed bands level
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.js new file mode 100644 index 0000000..abf5b61 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.js @@ -0,0 +1,7 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller = +[ + [ "onAdjustBands", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html#a41a5c1506545c44c2408054a8675c7a8", null ], + [ "onResetBands", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html#aa6c3aabc2b442d82ac5456ccaac3f60d", null ], + [ "onSetBands", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html#a4aaa7a29394560be7537a86b0304d199", null ], + [ "sendBandsEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html#a4ad5674e36d96a73147388251b794c82", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller__inherit__graph.map new file mode 100644 index 0000000..d9c62cb --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller__inherit__graph.md5 new file mode 100644 index 0000000..605dd1c --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller__inherit__graph.md5 @@ -0,0 +1 @@ +f27e5f978f0ca5fbb5341cba1255f6df \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..47463238568bb7760b4eb8c0c15d808bf20fca6e GIT binary patch literal 3271 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 literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller-members.html new file mode 100644 index 0000000..d3017fb --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller-members.html @@ -0,0 +1,109 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
InputController< T > Member List
+
+
+ +

This is the complete list of members for InputController< T >, including all inherited members.

+ + + +
onSelectInput(SelectInputCallback cb)InputController< T >
sendSelectInputEvent(String intput, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)InputController< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html new file mode 100644 index 0000000..00a702e --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html @@ -0,0 +1,221 @@ + + + + + + + +SinricPro Library: InputController< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

InputController. + More...

+ +

#include <InputController.h>

+
+Inheritance diagram for InputController< T >:
+
+
Inheritance graph
+ + + + + + + + + + + +
[legend]
+ + + + + + + + +

+Public Member Functions

void onSelectInput (SelectInputCallback cb)
 Set callback function for selectInput request.
 
bool sendSelectInputEvent (String intput, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send selectInput event to SinricPro Server to report selected input.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::InputController< T >

InputController.

+

Member Function Documentation

+ +

◆ onSelectInput()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onSelectInput (SelectInputCallback cb)
+
+ +

Set callback function for selectInput request.

+
Parameters
+ + +
cbFunction pointer to a SelectInputCallback function
+
+
+
Returns
void
+
See also
SelectInputCallback
+ +
+
+ +

◆ sendSelectInputEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
bool sendSelectInputEvent (String input,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send selectInput event to SinricPro Server to report selected input.

+
Parameters
+ + + +
inputString with actual media control
+ AUX 1..AUX 7, BLURAY, CABLE, CD, COAX 1,COAX 2, COMPOSITE 1, DVD, GAME, HD RADIO, HDMI 1.. HDMI 10, HDMI ARC, INPUT 1..INPUT 10, IPOD, LINE 1..LINE 7, MEDIA PLAYER, OPTICAL 1, OPTICAL 2, PHONO, PLAYSTATION, PLAYSTATION 3, PLAYSTATION 4, SATELLITE, SMARTCAST, TUNER, TV, USB DAC, VIDEO 1..VIDEO 3, XBOX
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.js new file mode 100644 index 0000000..8d22898 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.js @@ -0,0 +1,5 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller = +[ + [ "onSelectInput", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html#a18f8f71ecf0d7292a63d9486f94e5180", null ], + [ "sendSelectInputEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html#a973241ac912a18b142d236dda7f80e97", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller__inherit__graph.map new file mode 100644 index 0000000..c97940b --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller__inherit__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller__inherit__graph.md5 new file mode 100644 index 0000000..b740009 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller__inherit__graph.md5 @@ -0,0 +1 @@ +be39b7a752f62dc657a3e38970668ade \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..91ece3ed11218c30967ea38b6eab47fc6d7eebc7 GIT binary patch literal 5626 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 + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
KeypadController< T > Member List
+
+
+ +

This is the complete list of members for KeypadController< T >, including all inherited members.

+ + +
onKeystroke(KeystrokeCallback cb)KeypadController< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller.html new file mode 100644 index 0000000..277908a --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller.html @@ -0,0 +1,154 @@ + + + + + + + +SinricPro Library: KeypadController< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

KeypadController. + More...

+ +

#include <KeypadController.h>

+ + + + + +

+Public Member Functions

void onKeystroke (KeystrokeCallback cb)
 Set callback function for sendKeystroke request.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::KeypadController< T >

KeypadController.

+

Member Function Documentation

+ +

◆ onKeystroke()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onKeystroke (KeystrokeCallback cb)
+
+ +

Set callback function for sendKeystroke request.

+
Parameters
+ + +
cbFunction pointer to a KeystrokeCallback function
+
+
+
Returns
void
+
See also
KeystrokeCallback
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller.js new file mode 100644 index 0000000..d5171d9 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller.js @@ -0,0 +1,4 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller = +[ + [ "onKeystroke", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller.html#ab24b4858dcc69145a367e964c2ae7961", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller-members.html new file mode 100644 index 0000000..45eda52 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller-members.html @@ -0,0 +1,109 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LockController< T > Member List
+
+
+ +

This is the complete list of members for LockController< T >, including all inherited members.

+ + + +
onLockState(LockStateCallback cb)LockController< T >
sendLockStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)LockController< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html new file mode 100644 index 0000000..d782872 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html @@ -0,0 +1,217 @@ + + + + + + + +SinricPro Library: LockController< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

LockController. + More...

+ +

#include <LockController.h>

+
+Inheritance diagram for LockController< T >:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+ + + + + + + + +

+Public Member Functions

void onLockState (LockStateCallback cb)
 Set callback function for setLockState request.
 
bool sendLockStateEvent (bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send lockState event to SinricPro Server indicating actual lock state.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::LockController< T >

LockController.

+

Member Function Documentation

+ +

◆ onLockState()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onLockState (LockStateCallback cb)
+
+ +

Set callback function for setLockState request.

+
Parameters
+ + +
cbFunction pointer to a LockStateCallback function
+
+
+
Returns
void
+
See also
LockStateCallback
+ +
+
+ +

◆ sendLockStateEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
bool sendLockStateEvent (bool state,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send lockState event to SinricPro Server indicating actual lock state.

+
Parameters
+ + + +
statetrue = device is locked
+ false = device is unlocked
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.js new file mode 100644 index 0000000..63b5bb9 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.js @@ -0,0 +1,5 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller = +[ + [ "onLockState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html#aee42cc397234a454fd353ca6bc12a859", null ], + [ "sendLockStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html#a8fb3fec204da21e69d05f89a9ecb4739", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller__inherit__graph.map new file mode 100644 index 0000000..17971eb --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller__inherit__graph.md5 new file mode 100644 index 0000000..44cbb93 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller__inherit__graph.md5 @@ -0,0 +1 @@ +efef0c254bba53ec6647d81c67fcb53e \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b930083313c20e4dd24aa65f6cb040b3c563f440 GIT binary patch literal 2882 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 literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller-members.html new file mode 100644 index 0000000..1ab06c5 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller-members.html @@ -0,0 +1,109 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MediaController< T > Member List
+
+
+ +

This is the complete list of members for MediaController< T >, including all inherited members.

+ + + +
onMediaControl(MediaControlCallback cb)MediaController< T >
sendMediaControlEvent(String mediaControl, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)MediaController< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html new file mode 100644 index 0000000..8a8e1b7 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html @@ -0,0 +1,221 @@ + + + + + + + +SinricPro Library: MediaController< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

MediaController. + More...

+ +

#include <MediaController.h>

+
+Inheritance diagram for MediaController< T >:
+
+
Inheritance graph
+ + + + + + + + + + + +
[legend]
+ + + + + + + + +

+Public Member Functions

void onMediaControl (MediaControlCallback cb)
 Set callback function for mediaControl request.
 
bool sendMediaControlEvent (String mediaControl, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send mediaControl event to SinricPro Server indicating devices media control state.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::MediaController< T >

MediaController.

+

Member Function Documentation

+ +

◆ onMediaControl()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onMediaControl (MediaControlCallback cb)
+
+ +

Set callback function for mediaControl request.

+
Parameters
+ + +
cbFunction pointer to a MediaControlCallback function
+
+
+
Returns
void
+
See also
MediaControlCallback
+ +
+
+ +

◆ sendMediaControlEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
bool sendMediaControlEvent (String mediaControl,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send mediaControl event to SinricPro Server indicating devices media control state.

+
Parameters
+ + + +
mediaControlString with actual media control
+ FastForward, Next, Pause, Play, Previous, Rewind, StartOver, Stop
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.js new file mode 100644 index 0000000..e5098d8 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.js @@ -0,0 +1,5 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller = +[ + [ "onMediaControl", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html#afc2620621377fff928737b5a8a537020", null ], + [ "sendMediaControlEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html#a7af593cbf79d38f6b90efb5afee45077", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller__inherit__graph.map new file mode 100644 index 0000000..ffebc50 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller__inherit__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller__inherit__graph.md5 new file mode 100644 index 0000000..31454c5 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller__inherit__graph.md5 @@ -0,0 +1 @@ +9c60850c1ad6183752d5d0aff0926323 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a097fcadc80ef909247995f1cc53b2ce14ced83e GIT binary patch literal 5830 zcmd5=XH-*NmrejFN|V<@5kUw|n$naKiBcqVln#Lx31Fzw5=lTplcFFU>Afl-O=_Y7 zN|P2KbWn;AN+K9QiNM6~`)19|n(}+@UF+F*?Q_=M``mT+bDn)-O^xqzoaR3b0020k zdfN8@0AKMsz~HVn;N;I;fGbY{04`vl+PBRg=WNeoo(sAK_3SKS zklXgGvD=XqOsY=M`+leT3V{)}_G!g9kvJmRzN7LSiTXY+qkr819F>`#a`6+HG7SHW6wqDl{n_$Ilr@(?IZBtIcsEpa{xrqjZkS5RB;0LUnrEvn6H;+;23cH`U&);tk<1~Of?MTE+8_8_vmj-Ah zLjyw(*k=pfsn|ptH+f0Qe9+ummmAL!{k00|LvU+kZiI$s?6D3PYpHaRlR(L*>x0)G zoX7ozhJ24=iX^OhO%**YC3udR)Kgpf^>{#+e}3Y=mnZDTZC~X$^YNSN~*s6%h1YqBVN1%qSZv z2Wt!92u*8|?4;o<(jz(G5T^U}=%iM+?1DBg;s)>hTUD}MtL zu}|%bN2fy8N3IB}1@xjM3)6FdZn4RSd>u9cA9cH#1b<<vHTP=w-j=*pTv+Umr6SC*QQ56By;Mc8?r}2A9FSY zAfp|MbY^77{Gj3_2?cP`)5}RDGw6#AJ}@~;?Tf0p@C_dBtIp!(h+Nt7Gw0StRCDFW zq*nvNO717rl!zvOTMbz1bPY4~m}8z_l_pnBr^=;{d8^_~_kSy+wFxmLPjd{*^7YV< zuc(5rmfsCDebMd_FygoZQ3DB^ca}9e5G+-5WuSg)GL=`J2{Nmw!YD+K^(X#iMx;Q$ z!}=1PIJ~hD;cHYNzrrc^b(1;tQJ{q{L(sJ|oDkN7{4k0iE!roM zBQV*a8(5lyzf$>Qb^L7RCoz~fqO#;}b?LkMVX$Vr;JO_ZYs#NZ)JgVEBQ+)8s*Y$I zg_R#A!(|71shq0H@R?dO+zhOe@-x2WWLi)SR(x1xxF%zd<7#1p$wBuEboZP?tO>4A zP1~29$1b6x3_E%d$*B3ti?0eL;Am~pwuS1k8!v3|T5IkOi^S2wW()5-T)$!)pLn)A zR6)3)YOpecIc6~O^RAbgo#>$*)aSld1~T*jaP9k+admxWFB?le;wavTBx~_WNpi~= zN3h+I&zVVeu(Hqqm`b}+-vj@!qs5!S&*4#yIoRHAGLel)7*wg&{2_RT&>)3#Tq6Nz zYZ`)k!oTV;+;Jxog3z|@Vz|3yJs~|2?1o%W+ZqVhY@;QOlcg(`Dbn0ipOQ*V1l=#N zYGvD|3jRg#w?bI5G~Fpol3nWgLq~rluAYEWW4j3l-oS^oT##>@ef)XM)Vui!>o_y zufr?bdv}wGHb}ujPLhl=)f;D;F_l{LNPrq@VFA`#Gd8z@_EV8tVG1?|LXGJR*+dSP zRH4Apy*6H&DzhWad=*6;M6T2QT-Bvum1@PR3V-h5+=^{X+S-q)jHmrw@P;P8`?Qc-O}+AvO*HjDdf=c zg9$!V^5I-0{?*eb1_VB}B8+FY19$V2+9_4kt^s-ri+38cMaY7k$J)RHj^aj`&Vx4I zF1b0Gfu;V>_kG5Par>1q)(xqn9*avLo5{DN2Ogx0M8d_fJk1>SzJYiL>J%9DA>#S&64R_5H0n9d`o}9IT4O)QJd2} zYWA93Jssei^&{H9+#Z?$)4T%Ykh)PQn2dx^zx98uX2NKv4{Xs=U>n<{UK?l&90sn&evSz!!f z)kWx)lP0R)w7Gli6NqW0-hJZg#T%HO@+UD;gZ>#BvupEj=SQqU%7mbiKe-ogs3=lA<5^e6Jl8)eZh-5 zG&q-^|FZ?&aDhief{RM2M@UcDSEn)bt0zT1yKA`7Gi(pBvcKC>bCZd#L6a=KaC65D zk`nX;u4ucZeu*m2GlH!jbnm@z9E{YmDh-)r`Ngq0)gdrxB8D>}lxB@pwrcP(Tlz$RSi`oh zx9m}8SztTG8lb4^L6Y+zv8WVZ{FT6R6y*kq5Fe3%A7<`vGUBy>7xKUk(&e?Atf5Bd zc^|42r+8+63hwy_q5ONz(f6i+DzCAR_+_l7VOI@3tMWf2gt`RL%_qd*;rU}ci(&7% zcub9K46OP{qCD?>d6g$ddc@-0>%4ymp2kMfr%&0U`{~Sql7U=Ssh*Vojc<7s(i6Th z%2-wW)H|Kpm^XSiB${F6D{*sC%quD2Srb)Zai_o*RFGANs7`OR8W9vRBb^ucd!F6+Fs<t37HJp+R5 zTO;}Jf?RPr3=AWS3CGh(_mzqSLZZVTBw+zmy`*ItxbQh&{@H8kyuPkk*a3HuR;(_*1I3st>wC4gnS^Y&{_Uwc0WCy=~ zJS~*^Iazb2u@9xB=dnqw_Gs6X1_4#q;I5e&64P>Cd_zZ78F{7TqSfh)jy>e&>-HGu zl()xZ-VJfq@U($+Svy4)m2c{)g;WnbBjhS=e|u~JhtbM7Ph^a9Pb}guXe5Z|i||i7 ztnRnBI1`RFHjhiDYpmDhQFdaa)qR2h z8-=@2R^Kk?`IDi0x(mET58NfD-e_Og^OS(vBOV}5WW)p*Ht|w=ho8l_kI!9S$vnU? znQBIf7YymD`4peM;c1C?ArKZS$Ye2CT`3HP}(ti+L zZm9F#L^iZY$ayy&wTfPbwXX9L#`($@y{)Awz>i>F6E#>HM)K-awy23Dcu-DDL~7}r zMjh2wbAu*x2pVYTa>1x6B_|aZs>y%fwdKJQ(`+1=>+&Bc$fdFaf`u2BLrRUBfAooVxpB*MmNc#!~-~ zodf^&kGId!KV3>7`LX}GR~Z*XE}%LH-GpPCC0Oe$;W>JBqrjwf368F8Zz2K)x-^ z$j-+i&;`d<#KOcL)^YK1I-lv$?>Dy$UPwcor-x~CCUM3ZUWRw9M}9$S<5(~e0jRhD z!a~qDuvJ^Li6UQ-P$`MyBgg&274cABou2kbK8|8m`aVN9z&V;yH2 zi75MZS-%UHC^rEWjBd8_QX{qA6?bzQ%?N|XMR$05#Do=TaV02BjLXBRU#}d=_z=p; z&jja0*_<9;2ICptOGawLp>RUnD@yYZ@6Z%l&AZ-_GoekdA9%QV?o^g<)TJ=O0tQye ziS&I(t)1*Z3xqmBzs2~sk>1{DfA?BV9Mq#&5SNRrS`Z=4t?}D#t6wM}=O7|VM6W!% zU{l~xmB2zu#8x4x;Yq4SKRHiTsQb@IBFxtBl>0AYUf_ymViK9zD((n99x=XN-mIT& z=tFxSfs9*A#Ll$sKf$Dx)V;JwU?Q|tE!{?g3Qh~&szCK7EL5u^Mn80++bJ)xZGK_I z%z&G&X*xqBu)?wpDqjR>A^B)VxDO{xAl6sMgnr@pc$c)65o_5Mm*yUl>NXtgS_VQ?~L7(2HX-KdY`bM+9G( ze^eGP0t8mdbZDVIV*)6+9?pKmF;RMMEU)v9KKloYFIhCtR#lvCPv|0tD(+jG{Iu$= zB?dsg9_0MPmqgXE;3)-(K^v`QiykHbJ_%b@R|o!8U?&{k_Eg1EkQ?w*m*MI(jok1< z3Iq6)TUPm%W9jm~i-*5a!9B@D zVzu4mVZw)Kv-~s``nj8Gv+KvW^S8Px7QWW%%R3$`AX+JUR~6OOU(xA8Uj#S-;bxM~ zkhOd3>go9zB`Nh8ioVxIC0PAT09A(2_7Ri?9KP%OCl3a950z}Z7Nqayr#-ry_~a`+ zod?D|RRiv@vjV=HV*6h}$I-CMc%XH8F<-gCIURMJQ#J>hjha{#)JkuACL@o?b(swN zs-QRN`lpFonb9vpvPo{dM?T5hdtd%XgCIcD5(SGKGfjLMH!)%opf38!R0-TQ2^u5N zv%)M6)S1t1JlW1sCr6U(i8$DriVYdr`QQ7kQ;~e#9)EqTnCG@X$h}MO{ko5Kf{{S5 zeHoN8bknHK#BB9r8f^Ud!cNHFZ#b5k_{wqb>@QAF$N`~WQRcoZ;D2m-hWx#1-hxdg zHpW|x@sOm|2S3@Dnqqgy6@YpKf@^o7M1Io8A3cWA50t5m&g#Rn7KRdu?4VF>3 z0Rfr0xvMkUl^x>$q-EN3;DpW1g^Dn`!WLr<&&4nQhYB~9KjCTsUb)D0?Kj^aFI2}^ KyXMZ{;r|AP#wV=+ literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller-members.html new file mode 100644 index 0000000..2220765 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller-members.html @@ -0,0 +1,111 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ModeController< T > Member List
+
+
+ +

This is the complete list of members for ModeController< T >, including all inherited members.

+ + + + + +
onSetMode(ModeCallback cb)ModeController< T >
onSetMode(const String &instance, GenericModeCallback cb)ModeController< T >
sendModeEvent(String mode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)ModeController< T >
sendModeEvent(String instance, String mode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)ModeController< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html new file mode 100644 index 0000000..f3b578f --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html @@ -0,0 +1,319 @@ + + + + + + + +SinricPro Library: ModeController< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

ModeController. + More...

+ +

#include <ModeController.h>

+
+Inheritance diagram for ModeController< T >:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + +

+Public Member Functions

void onSetMode (ModeCallback cb)
 Set callback function for setMode request.
 
void onSetMode (const String &instance, GenericModeCallback cb)
 Set callback function for setMode request on a specific instance.
 
bool sendModeEvent (String mode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setMode event to SinricPro Server indicating the mode has changed.
 
bool sendModeEvent (String instance, String mode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setMode event to SinricPro Server indicating the mode on a specific instance has changed.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::ModeController< T >

ModeController.

+

Member Function Documentation

+ +

◆ onSetMode() [1/2]

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
void onSetMode (const String & instance,
GenericModeCallback cb 
)
+
+ +

Set callback function for setMode request on a specific instance.

+
Parameters
+ + + +
instanceString with instance name
cbFunction pointer to a ModeCallback function
+
+
+
Returns
void
+
See also
ModeCallback
+ +
+
+ +

◆ onSetMode() [2/2]

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onSetMode (ModeCallback cb)
+
+ +

Set callback function for setMode request.

+
Parameters
+ + +
cbFunction pointer to a ModeCallback function
+
+
+
Returns
void
+
See also
ModeCallback
+ +
+
+ +

◆ sendModeEvent() [1/2]

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sendModeEvent (String instance,
String mode,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send setMode event to SinricPro Server indicating the mode on a specific instance has changed.

+
Parameters
+ + + + +
instanceString instance name
modeString with actual mode device is set to
+ MOVIE, MUSIC, NIGHT, SPORT, TV
cause(optional) String reason why event is sent (default = FSTR_SINRICPRO_PHYSICAL_INTERACTION)
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendModeEvent() [2/2]

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
bool sendModeEvent (String mode,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send setMode event to SinricPro Server indicating the mode has changed.

+
Parameters
+ + + +
modeString with actual mode device is set to
+ MOVIE, MUSIC, NIGHT, SPORT, TV
cause(optional) String reason why event is sent (default = FSTR_SINRICPRO_PHYSICAL_INTERACTION)
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.js new file mode 100644 index 0000000..f4fef4c --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.js @@ -0,0 +1,7 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller = +[ + [ "onSetMode", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html#a6b15ba168b3a673b98da43ac5e4ef76c", null ], + [ "onSetMode", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html#ada087c948c3ab923bdb7818daa6b2b79", null ], + [ "sendModeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html#a7c84d5c26f2ded88e4941313015f7f4c", null ], + [ "sendModeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html#a41f8465e89d147c08ab8cbc6839d34da", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller__inherit__graph.map new file mode 100644 index 0000000..a3e9199 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller__inherit__graph.md5 new file mode 100644 index 0000000..aacae11 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller__inherit__graph.md5 @@ -0,0 +1 @@ +ea6261405b70814a35cc991be2e1d1cd \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..fdcb591272bd33a721dd9383e526d6240ffde798 GIT binary patch literal 3175 zcmcImeK-?b8`qa4su7ltWGPXR^dS;4But~Vq?x8sKI@qo<)iYHkBNkQ%qYp&v}K{@ zyC+hVuMN$xUL|3(n9;`U<#~GE=Xu`u@AsVRoO9j3bDirt=RWuEci)MpAdbq4nu>CA za>`C8!0t=y@X{DikYAdEeWI5)WK@$G5N z>R_9FFH0z4Y#7J2qFJT1uyAVNy0->{M6|^DwOhsx;qs3Nr8aMmmp7!6pE~?;~$5V7cr-L0f2=J2Ygiy=tXKaCMIp;%4DOHE$Z-Hr}MB>Fk+9 zb*OF*bg-@R4G7RA2Po#mYM-M9*PyTNu?T?LW)bIaH^B@ZG-C|gBfS?R%!p4rSP8rM zI%=GH3~6!`wjZzK1$8gJgvlfcO_hHE2l-}NI1$INNnJ^Raz@t<)F1>UZoQBWFn6He zyTQ*PIF)Mn11GK{>qxn|_Vc z)O~UOqbM1XQPBD_Y^?ivJEM&{p~-5l!7#vc9K~#^phS^wuv()}*3o723{xN9KiH;4&>eCd{6pgM*i5|t=V><;!jw}F-#e;SD!dxvhD0^)`9)8uvDjO zaQl{P)RsZdI>OOi*{>6TT+IEd^$$8Kiako>Zo2BDqDH?|dOwRoc#oz#u1Y`Al(0aX zIp~xM&y$N{Hx$!~@d{_s5=>pg&UKfe@Ht;Ch(_8U?LiL1b$Lb4-Tze)b^!tD5QN|X z+X21|vhV%+U6&o_9GY_`5f$wAqujKxi#V@jAP(6yEV`FR{qi8je@?~~aMW!y7s*u% zu)DK;WzdvT!+-dG`73mhMItD7#WHVf*3<_bJ#{#AXhw`~N!7)%MeI@RxUwOf6?5#) z&S0D;@)Dt()0kxBe2YF}m+*)deKPVr`TNvu=ot%z+|qeTTEd%w+DPVMqVWi+SloiI z7V_1k1*xQWT6Rz(c4Buwi9QX(##d=o%g`;mwQ$VOcit`pTJVs}e-&b}$O^O$r9^nx z6Atqygtz6Ja7f0eVD}b!G)0BJSN9v~i)ecCvHx>CA^C>=c6*qPYac8a&SFe+SZvz8 z=m1NPUCh~o3T!G_S*7bn^8vr9mrjv}QnkkH;Dc-u8EWvR`jj4RZ{j6z)n{~ph7<9M zVOY5vdPImFO{W-*)%-BuS+v2p7l>K-aWzXvZ*Tb~52BEMXoT|sp^v=;G6QK=^74$o zER^AabbgpADzitU+6~S8(OFFy`l3Fej^^-Wi@xi^k=v)}TMn$ldYbcHD9!F+)F$3N<7O z@|S$~=hRj(7-CZW=SwK=T8U7+0397Lb4=aJ-@f%>+6!)s*Ak@cL`h3n&m22|*0$Mg zC!j_3ZT`EK$^DeJZ(rW{jONvv$SAFCy*OAq!>ys9v#5@W{v3KuDYuG{6>K>>0bPm# zd0r1&M}jtSXXCpoqvjFVg^YEq+vL6r<+WprEW;Ojf|z`n}YhyCl`~h%-2j zJNWg?KBXE=m~E#2KJO*SCSWDk|+nzrDkJermGvH22UKM`@%#0b9Gj*xw# z@xn05^+qRv98_~?`*|Xr&Fz2nEcqH(sSZcujT+eso+>dqet}kfh>q0%bmguE;K^6( zl+Et-yrKH+Iq`+;?A)J%Kdj=iHf`nKG=J&YHe;g+zei?c3Evqkkb2#Rh&Hvg3gZhR zPTU_ra>ZWU^0LCg`t_%4z8A~bsWGFm{W$Gs@tCHJy!PtEc9D)ePY9=TXwLpZQ+IYV^4S}U@$?vknz24tZm!OryxerXASNSYa>-`Gn~ zL`-DnWSG9%SzMg9@MGiRVhs-K*nM*cVaV!=O?-?vV;-LL(nobWN?#@|$nTxj&nQ|| z!$CDU$X2~Bj~Gi;&6=N0?laMMf>?JL=R4~@!7Bk7>klvV-qwntETztk9v+QJn0)y}2P_QaUvn@?ryj}Zd}bJ|Ys?FLk7f#_O2O^OwiDw`6H2`bN%O9y4KxVeA1l5G| zb3+DRcHw|uucrJ}V*HI|GmzfP4hc_aAu`?#XNA{Gck;vkNN+Y)aVMMT z8!`|>6>+y8c=g8U=*`Dn^$Ab}K2u4|F3A0=YdJdWy5jl7^avf@TKpKDG*0n?cP(aQ z(#Vz-gBIwv6pj8ZEEel}18LQ-E?hdZb|J$gEZ{7T4D9#&wwTcahvAsf%7$$$#`U<9 z;L?bSlJU*1eR~6+lk+Wz2QJ3uhDoYJ-4T6vugPa6c%lW1hW*K&IHI&P7jy`rLEk#4 zc^X9R&nUr5*X6Vu=WAr{#$U)x5pF7LYR>&A*{Wm9G2u{y7or6+pi%(%J#yf!aVi@^ zkWj`I2Mc)Nu#vXj%*u3x#yOK=;AzmwHcR_@yMvzaUdV~~GB4@}jdkNJgg=*1760`= z3@*ItvZm$cUuE!epgerh0T>mE+eH(7SgAx*Z)*bz3=Fi4Zt+2cCcdnzld3wcoe$6* k3knUDJr)3ePiDX**{Zo|%#}Fa_St2?$sPix+WOr3H}vKVivR!s literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor-members.html new file mode 100644 index 0000000..8f94dec --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor-members.html @@ -0,0 +1,108 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MotionSensor< T > Member List
+
+
+ +

This is the complete list of members for MotionSensor< T >, including all inherited members.

+ + +
sendMotionEvent(bool detected, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)MotionSensor< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.html new file mode 100644 index 0000000..8bfdae4 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.html @@ -0,0 +1,184 @@ + + + + + + + +SinricPro Library: MotionSensor< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

MotionSensor. + More...

+ +

#include <MotionSensor.h>

+
+Inheritance diagram for MotionSensor< T >:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+ + + + + +

+Public Member Functions

bool sendMotionEvent (bool detected, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Sending motion detection state to SinricPro server.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::MotionSensor< T >

MotionSensor.

+

Member Function Documentation

+ +

◆ sendMotionEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
bool sendMotionEvent (bool detected,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Sending motion detection state to SinricPro server.

+
Parameters
+ + + +
detectedbool true if motion has been detected
+ 'false' if no motion has been detected
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.js new file mode 100644 index 0000000..4855f60 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.js @@ -0,0 +1,4 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor = +[ + [ "sendMotionEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.html#a9be024aa2bb70f0146a02dd1b79d3faa", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor__inherit__graph.map new file mode 100644 index 0000000..2ef259d --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor__inherit__graph.md5 new file mode 100644 index 0000000..296efb5 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor__inherit__graph.md5 @@ -0,0 +1 @@ +995e9815945e7626907376c32a143894 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6766277470dc346ef8a52931a2ab38937fefe9ec GIT binary patch literal 3122 zcmbtWc{Cg77LQWnqD5O2qqWBpQhOB>RkcSc8YNUx zL}M8>(OQxU64EeAk=Tkvi0x_n-Z}5gocZg0-#PdD&Ufy2&%O8D`}^HACkGn|(PN?j z06+q0Yke62;M3f{_X!K`%ePKT0{e%cm%WWOVDIZj5vp@$U1EZGvIL=g6(jNln6 z-@0XQ0z+))Uc9J9^iSA9yFj(Mpb@E*j0jT?`WkI&Wvw`$YoBg#{&oBAm^b{7tcY{J z?fbI7;+wB82)=BNT=`@*&{E~i<-7KVi}7ra+u5PTYPX(fkgxy!0v8*ygrmiF6g478 zybT)`gwY6%(wKAMVrRTULe7Va$pO6#0f3xCU_jrAYQR$)C%!XTr~@|?Ee>{EG%Goi z)OiCn8BBx0sJ*$vr&!N|#Bb4&`P4v5BZR*lr0jBp7YO|UVhiEuXK94D%|| zrJl%!8LLBZU#DyG3mNDfp`Ww!&OC3=bvt_ae)laa$38F5z`M}XvTlw3`E_-VUs01f z+{DFqV3#k7G!jQeAYllX)6jLJJ+4=LvN*rh-IM`YUNgGg?{jp)urXN*f#%<=XKw8R z8Td+xL~;~;WZ|wSByD53&R_C}5RH!#kO8a-YXW9g z5=e-MiCDvMF@UHr`ZrbJxIKjprPJvR*V2~eSbHw!qlCML;YvqUfvX-1ih##oFs#{z zXu#@*hMwFM`~?wP)r5Pd+bYX;Scn6p6*5nbQ8qu2LVh#hTbBl(ghjE}gq&Le_k}eV z*4oL2s-_oV8};pF7~+CZ&mpi;Hmj(j_(QqEg=BbrLLoC-b+g8feQ@WR2Y0q)*QthA zWKvG>eZ==ET{Pc@6QEq7%4`nD9xYe+F$-lm^F}f`Hs4*XeB!_X>9gzy+xR7NrrBeP zX^OgW>@yOp+2pz739O*){%2&UebwVRU#1?0?8`6zuR8HISvLc9sebqE=|@=VM$ zLLlSjT+{TnV_4SGh|ns&@xFSM!gKrtp*jl|AVDL_48Ll%pU9*7FJAPpc{~?w8YXbu z(rFSAEjxeaC&!Jj78cC)8~a1l-h}9plWq zO?H*0CPahfraXtIR$*5h9Gll*TH)sLZ^=>}$AA25ts_LIie9Vj_^^+BYb}&i%sGYg zxQ2$whosut+Lmqh_LO><)f262@P-r}s>%E!AGraYT@8y<9Lr>{TR3`Mdr*skerp}|_IO5G!~t4oL}iysa@<$sIg`0ue&Ac?zl)C5 z$sDHKd7dJgf(*io#XJ!;_>$n55dw1>3}zoWlki`N`rj6l{)S~#Xw!}PY)h8nkVEr10d#(ri)$Wx%IKT4-`Hm7G zqdszJ&C&NCT3ge+gq#@SFupZHY4xak>EJ9I=3RgVHIC2Tn%7+?e};K0S*6zGppa;( zR5ZVF#m`V>$T0PdVuvz)D4brPP36SlVB*SV$#FmHU$~Ia_e{~S_+Tz~m+XL!PU+j7 zF74gZ-X-|Ae0o);3vR%?#??F#t98ZwQmB>iiLC1*pH4_zS~~>6_(4p2iDWD$M2VOg zS}!Ggy53lxm!zo}IXV>}1T98EdUH*6BokJ3-Fkx6u;FttWmz>mEz!|Rd|=U#y)Q|5 z>}3Z)gK z=ibq~e|=XelCGXN|L}|Cg0Q@VHub_~JKC%)J`>>XgQLQPj#PHO)*a*{B@A(iec4#|*!`y18Y~$jb(6^YmBpLzm147grX{`%H=6GZ>#IkSBrNrjJ zXWOx}9EWuy5NCtr(9-0+E?|4zS@{lWzNmunp{rP?>ipR)zHEc&g$O`-R70(>%iKHr}-4Dw<&~iP2=|kXb)#u0L*BLX|`OC!*Dbm65C`6qHC(S<8 zLa3{a{>DX(5DH^pto_90l&ewj*ej$+jF6`K1bo7j=Yo;oJ18JC{br!XXn|f@%@|_F zv@7sUZ5$s)wr;jr>N6i$w}uFxpee}ruyJjWsj`M6@KaAQCGhwbRjv3DL+B`d&WQgz7uBP7rTP=RFPZ0E4F388yyReAXL$qh EZ( + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html new file mode 100644 index 0000000..8178e18 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html @@ -0,0 +1,221 @@ + + + + + + + +SinricPro Library: MuteController< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

MuteController. + More...

+ +

#include <MuteController.h>

+
+Inheritance diagram for MuteController< T >:
+
+
Inheritance graph
+ + + + + + + + + + + +
[legend]
+ + + + + + + + +

+Public Member Functions

void onMute (MuteCallback cb)
 Set callback function for setMute request.
 
bool sendMuteEvent (bool mute, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setMute event to SinricPro Server indicating actual mute state.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::MuteController< T >

MuteController.

+

Member Function Documentation

+ +

◆ onMute()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onMute (MuteCallback cb)
+
+ +

Set callback function for setMute request.

+
Parameters
+ + +
cbFunction pointer to a MuteCallback function
+
+
+
Returns
void
+
See also
MuteCallback
+ +
+
+ +

◆ sendMuteEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
bool sendMuteEvent (bool mute,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send setMute event to SinricPro Server indicating actual mute state.

+
Parameters
+ + + +
mutetrue = device is muted on
+ false = device is unmuted
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.js new file mode 100644 index 0000000..f4aa044 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.js @@ -0,0 +1,5 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller = +[ + [ "onMute", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html#ab5fc79cc8903c3ccc1c106abf61d7cfd", null ], + [ "sendMuteEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html#a4717d892b64a14052712152924bd5b29", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller__inherit__graph.map new file mode 100644 index 0000000..d6abff7 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller__inherit__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller__inherit__graph.md5 new file mode 100644 index 0000000..a97e53b --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller__inherit__graph.md5 @@ -0,0 +1 @@ +22165188f728e1711d13180264f49304 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f93e12b62343f0845e265afe95ecaaa983c53c7f GIT binary patch literal 5618 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 literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller-members.html new file mode 100644 index 0000000..dfa8734 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller-members.html @@ -0,0 +1,110 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html new file mode 100644 index 0000000..d4f9b2f --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html @@ -0,0 +1,237 @@ + + + + + + + +SinricPro Library: PercentageController< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PercentageController< T >
+
+
+ +

PercentageController. + More...

+ +

#include <PercentageController.h>

+ + + + + + + + + + + +

+Public Member Functions

void onSetPercentage (SetPercentageCallback cb)
 Set callback function for setPercentage request.
 
void onAdjustPercentage (AdjustPercentageCallback cb)
 Set callback function for adjustPercentage request.
 
bool sendSetPercentageEvent (int percentage, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setPercentage event to SinricPro Server indicating actual percentage has changed.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::PercentageController< T >

PercentageController.

+

Member Function Documentation

+ +

◆ onAdjustPercentage()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onAdjustPercentage (AdjustPercentageCallback cb)
+
+ +

Set callback function for adjustPercentage request.

+
Parameters
+ + +
cbFunction pointer to a AdjustPercentageCallback function
+
+
+
Returns
void
+
See also
AdjustPercentageCallback
+ +
+
+ +

◆ onSetPercentage()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onSetPercentage (SetPercentageCallback cb)
+
+ +

Set callback function for setPercentage request.

+
Parameters
+ + +
cbFunction pointer to a SetPercentageCallback function
+
+
+
Returns
void
+
See also
SetPercentageCallback
+ +
+
+ +

◆ sendSetPercentageEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
bool sendSetPercentageEvent (int percentage,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send setPercentage event to SinricPro Server indicating actual percentage has changed.

+
Parameters
+ + + +
percentageInteger reporting the percentage that the device have been set to
cause(optional) Reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.js new file mode 100644 index 0000000..d211a48 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.js @@ -0,0 +1,6 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller = +[ + [ "onAdjustPercentage", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html#a77ac70c4880e38dae4f640dceaeb2816", null ], + [ "onSetPercentage", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html#aeef432df118679c689ccd8a48d47dc3d", null ], + [ "sendSetPercentageEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html#adf688c12e451e52b05670f150bdabcc8", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller-members.html new file mode 100644 index 0000000..caa131e --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller-members.html @@ -0,0 +1,110 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PowerLevelController< T > Member List
+
+
+ +

This is the complete list of members for PowerLevelController< T >, including all inherited members.

+ + + + +
onAdjustPowerLevel(AdjustPowerLevelCallback cb)PowerLevelController< T >
onPowerLevel(SetPowerLevelCallback cb)PowerLevelController< T >
sendPowerLevelEvent(int powerLevel, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)PowerLevelController< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html new file mode 100644 index 0000000..b1b4c94 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html @@ -0,0 +1,251 @@ + + + + + + + +SinricPro Library: PowerLevelController< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PowerLevelController< T >
+
+
+ +

PowerLevelController. + More...

+ +

#include <PowerLevelController.h>

+
+Inheritance diagram for PowerLevelController< T >:
+
+
Inheritance graph
+ + + + + + + + + + + +
[legend]
+ + + + + + + + + + + +

+Public Member Functions

void onPowerLevel (SetPowerLevelCallback cb)
 Set callback function for setPowerLevel request.
 
void onAdjustPowerLevel (AdjustPowerLevelCallback cb)
 Set callback function for adjustPowerLevel request.
 
bool sendPowerLevelEvent (int powerLevel, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setPowerLevel event to SinricPro Server indicating actual power level.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::PowerLevelController< T >

PowerLevelController.

+

Member Function Documentation

+ +

◆ onAdjustPowerLevel()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onAdjustPowerLevel (AdjustPowerLevelCallback cb)
+
+ +

Set callback function for adjustPowerLevel request.

+
Parameters
+ + +
cbFunction pointer to a AdjustPowerLevelCallback function
+
+
+
See also
AdjustPowerLevelCallback
+ +
+
+ +

◆ onPowerLevel()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onPowerLevel (SetPowerLevelCallback cb)
+
+ +

Set callback function for setPowerLevel request.

+
Parameters
+ + +
cbFunction pointer to a SetPowerLevelCallback function
+
+
+
See also
SetPowerLevelCallback
+ +
+
+ +

◆ sendPowerLevelEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
bool sendPowerLevelEvent (int powerLevel,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send setPowerLevel event to SinricPro Server indicating actual power level.

+
Parameters
+ + + +
powerLevelinteger 0..100 report the powerlevel that the device have been set to
cause(optional) Reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.js new file mode 100644 index 0000000..68fab9c --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.js @@ -0,0 +1,6 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller = +[ + [ "onAdjustPowerLevel", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html#a13b10bdb1844babe4de320fff9172d96", null ], + [ "onPowerLevel", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html#a0685d34694badb4442fed6b69b69b366", null ], + [ "sendPowerLevelEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html#a2f1f88c7b4d9503bfcfe5557c5e55ed4", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller__inherit__graph.map new file mode 100644 index 0000000..2cecdce --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller__inherit__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller__inherit__graph.md5 new file mode 100644 index 0000000..3ccdb2a --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller__inherit__graph.md5 @@ -0,0 +1 @@ +1547ae8011e9cb21c40d77496a9a6f85 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..62ea0bded9c46915560ccb7e220f9bc092980561 GIT binary patch literal 5496 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 UdbKt7Y%3LDsBfxQspI_mUn)Y|ApigX literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor-members.html new file mode 100644 index 0000000..586e126 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor-members.html @@ -0,0 +1,108 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PowerSensor< T > Member List
+
+
+ +

This is the complete list of members for PowerSensor< T >, including all inherited members.

+ + +
sendPowerSensorEvent(float voltage, float current, float power=-1.0f, float apparentPower=-1.0f, float reactivePower=-1.0f, float factor=-1.0f, String cause=FSTR_SINRICPRO_PERIODIC_POLL)PowerSensor< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.html new file mode 100644 index 0000000..024511f --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.html @@ -0,0 +1,219 @@ + + + + + + + +SinricPro Library: PowerSensor< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

PowerSensor. + More...

+ +

#include <PowerSensor.h>

+
+Inheritance diagram for PowerSensor< T >:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+ + + + + +

+Public Member Functions

bool sendPowerSensorEvent (float voltage, float current, float power=-1.0f, float apparentPower=-1.0f, float reactivePower=-1.0f, float factor=-1.0f, String cause=FSTR_SINRICPRO_PERIODIC_POLL)
 Send PowerSensor event to SinricPro Server.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::PowerSensor< T >

PowerSensor.

+

Member Function Documentation

+ +

◆ sendPowerSensorEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool sendPowerSensorEvent (float voltage,
float current,
float power = -1.0f,
float apparentPower = -1.0f,
float reactivePower = -1.0f,
float factor = -1.0f,
String cause = FSTR_SINRICPRO_PERIODIC_POLL 
)
+
+ +

Send PowerSensor event to SinricPro Server.

+
Parameters
+ + + + + + + + +
voltagefloat voltage
currentfloat current
powerfloat (optional) if not provided, it is calculated automaticly (power = voltage * current)
apparentPowerfloat (optional) if not provided it is set to -1
reactivePowerfloat (optional) if not provided it is set to -1
factorfloat (optional) if not provided it is set to -1
+ if apparentPower is provided, factor is calculated automaticly (factor = power / apparentPower)
causeString (optional) Reason why event is sent (default = "PERIODIC_POLL")
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.js new file mode 100644 index 0000000..a399886 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.js @@ -0,0 +1,4 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor = +[ + [ "sendPowerSensorEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.html#aec04692842ae1953973503f6be6d9afc", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor__inherit__graph.map new file mode 100644 index 0000000..1c4e483 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor__inherit__graph.md5 new file mode 100644 index 0000000..648b066 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor__inherit__graph.md5 @@ -0,0 +1 @@ +32e295fef183fc48f30b0e34bc54fe26 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..446c4bb5876d708414e692aee2389366418440f2 GIT binary patch literal 3174 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 Hf&BSjA;c1B literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller-members.html new file mode 100644 index 0000000..b575539 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller-members.html @@ -0,0 +1,109 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PowerStateController< T > Member List
+
+
+ +

This is the complete list of members for PowerStateController< T >, including all inherited members.

+ + + +
onPowerState(PowerStateCallback cb)PowerStateController< T >
sendPowerStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)PowerStateController< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html new file mode 100644 index 0000000..264acdf --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html @@ -0,0 +1,261 @@ + + + + + + + +SinricPro Library: PowerStateController< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PowerStateController< T >
+
+
+ +

PowerStateController. + More...

+ +

#include <PowerStateController.h>

+
+Inheritance diagram for PowerStateController< T >:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + +

+Public Member Functions

void onPowerState (PowerStateCallback cb)
 Set callback function for powerState request.
 
bool sendPowerStateEvent (bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setPowerState event to SinricPro Server indicating actual power state.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::PowerStateController< T >

PowerStateController.

+

Member Function Documentation

+ +

◆ onPowerState()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onPowerState (PowerStateCallback cb)
+
+ +

Set callback function for powerState request.

+
Parameters
+ + +
cbFunction pointer to a PowerStateCallback function
+
+
+
Returns
void
+
See also
PowerStateCallback
+ +
+
+ +

◆ sendPowerStateEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
bool sendPowerStateEvent (bool state,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send setPowerState event to SinricPro Server indicating actual power state.

+
Parameters
+ + + +
statetrue = device turned on
+ false = device turned off
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.js new file mode 100644 index 0000000..0e90172 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.js @@ -0,0 +1,5 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller = +[ + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html#acfd5f3a30933ace93751bd823630cded", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller__inherit__graph.map new file mode 100644 index 0000000..1e6fd9a --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller__inherit__graph.map @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller__inherit__graph.md5 new file mode 100644 index 0000000..75dc72a --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller__inherit__graph.md5 @@ -0,0 +1 @@ +e4d93c87852fe1ed481df95bfea89291 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2e37566540169a7870085523e6f5f27924f79f65 GIT binary patch literal 51228 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 JEN=Aie*w(kF0=pu literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification-members.html new file mode 100644 index 0000000..5f25445 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification-members.html @@ -0,0 +1,108 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +

+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PushNotification< T > Member List
+
+
+ +

This is the complete list of members for PushNotification< T >, including all inherited members.

+ + +
sendPushNotification(String notification)PushNotification< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html new file mode 100644 index 0000000..d9ccecf --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html @@ -0,0 +1,244 @@ + + + + + + + +SinricPro Library: PushNotification< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

PushNotification. + More...

+ +

#include <PushNotification.h>

+
+Inheritance diagram for PushNotification< T >:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::PushNotification< T >

PushNotification.

+

Member Function Documentation

+ +

◆ sendPushNotification()

+ +
+
+
+template<typename T >
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.js new file mode 100644 index 0000000..8b9f2d6 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.js @@ -0,0 +1,4 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification = +[ + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html#a04266791a4b23e9614b8773edb5f67b6", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification__inherit__graph.map new file mode 100644 index 0000000..5b60d00 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification__inherit__graph.map @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification__inherit__graph.md5 new file mode 100644 index 0000000..39fc4d7 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification__inherit__graph.md5 @@ -0,0 +1 @@ +20a3d182b23d3ec70a0beb4e60987a46 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..dadcf23d4aabbbb5e0fa406edc1d33d947d8eca6 GIT binary patch literal 89488 zcmb5W1yq#V`!-C7C@6@CG)PN>)X+ynI;158BpteQD3uPSYk-54NO!}~C@>%(NDtjP z()I2+=lB2K`2Oo%-}kUwti|lv&-2`S?|Wa@bzj@?S8DS238)CLu(0kcD#&VLVd2tX zVcpuea~u4{;D(F~{JL$XEH8_7gZcTpr63*)>j{>k>~n1|`1Y(X+{oSU=3v5_H9gR% z^NQo)Uk#iOH3+9(C19~E;^}&bd{kD@?6Tpky{@k9nYu1NCoSS0vAnNP+0>3_YyX7x z$%BLUIE9Rl8dw#cEPOG-P1)Xs`3G3&CBI!A5Vb}Qc=GJ6Es=cR7F|PM!Be|n(&!eN z2PFSLFR1@xG3;2mTAN=Syw{Ualmd2(2jOM$UD2*@3XdaQ6^e|AoLxAPoRP4IX|;>F zq#wkU{S~tV=^|wUZbTz$2ufeJYhqYUcP;i@igroKG+ae9=u z*u^d!F;pm=r8)B0{uRc{>mPG5X-S5!}jE1$2XlK346A()AW*d3Dj(8y`#HvU zaV4LedaoQlCLw{!aX@nIb2lK#RD)roP!%7p&1TJcAGSB18qo%&gI`&DPS^A|T~*H; z@&+rC_^WvS$jZvfXnaf_*1KV=IyQJWg7o!W3*`8xc7Bvv=?{fjA0CUwI? z9W@Q-rPBDPQe{&o6=`Nn8&fe#-pp@u;`8J#U7s=@2{_I*ry_{5(GL_+XRWQRiO%Y} z;2zvavlZrv+(CwZs8~(rvDT&^yH1$)RBYjhcXwQrk@oq_NUOZYgbup3PP5{z?z!$v z5q;mYs!Hb{w2_UhiiV_noRPlaHburte!AT!@NQqWMAbCGjd?kFd18W$Pz9qi*!6Q% zwDXW-YQVB=?$tYszmHdkvi1}+J7e8@r5&OUkgf*@^*j0ORwFhaiM+X`3%H^sLzkw& zBPRLp&j*tmpY9K&3KR^c330k{Fp_Z_)XkP98Brz<^Nr5zWME|EZlCRsDX(T~ zA!i(UDwwAvo2DkfQ-0jNEtg3fxWisfD{72y_n`t;jp#L0@-lz>=n8(HCYnEQfIV5C zxQ)yA3d=Qc0=E;Pj98Vv6zT21=NdY=P?%7ctWdb2q?pf}NIe)f?cuzAkfl0cetFW} z8@HTRU82Mv>8d0)MJnGg#PV%t@gzTU^rvjD=vUN(*nHA2!}|=!rYSA_9^I3azb&^X zlIF!tswOXU?E)oQ5EnsupSZ=TgWkGG5UmgrxzIch$_YwVrW2_xbs}`cR-?YSI{u69 zH&Kc#c1qVppe32vm=WA8*GQiB>EuGmBhJkVZMG4k37bLOA zf4_erI~7OFpQ>?e_R;Tq6@AX-0CF+AlH6|fVH6K+o9vS4bmyZ(NvglP0(181&Q@HoxH8*Ob-|}sWBb0pFN1Dd`pE# zbc^WLZWw%|+Op&$wlsc-(>V60*fovawY!E24BuM59+AbB=%&0Ut%=FjjhG0RZE+kt zZ;eoJ)of>ARBcZ_^dNx8xI%i`?^W@Brk|d|QRKAR)Mf$k;R5oWpkPUO6`qaPlJD94qPf{aXjEqL*aKlF#hHQ4UM_h}z zx%zj!9<$YHPKhYn#y1kj4 zmmAx?xZu+JMT`zwsz@rXxW;B5WwXapsx;9%D7tfHu`-j`>WDmh;w0r%FPaXQwxiFO zw7N5LIy-Eo^L89WOZgOGZ+e zMX{+{tAnE^*_};vRJQRD4A*7UO-hl&?*)75ElT;z_HNwo_b{(r7T)0L83w*-M+bzB>US2iAxK zND~%y(6kqmc*P2X7b9b8xnAa^U}Gww9Ra7al{ow}u4iAxie7?-!1XjCSBZQnbY)`J z|Lz5ia7`M;O6&L1nqql!)@#qjp)GIqBmWSjSNcl6J4?9EkSbN&D-f-UGb~ODOV%Da zlx|ccr6rkGeZLsx{fw-z>U>VMD)Jx}L>yr$x-gxUpK}eq*3;BG?x=#JbTmA((E5^X zTIgsHl1j+iydUZG`irfBJBeEZyBsu^Qu6DOfZL+K15|q2M=f4S1}`+M%NiDpV`A#) z@6apoP>dEzG*u-1X2xTtNIIrpt;Ra28?lH^zL3gXda?T_FioAZfD8)rZ-s!tZf3<@@so~OPmg2v9%8shDH20JXWtfpw zfnSiENfygrM%I#!B_kSn{$W*1vaLLp+8&!X6sa*4f4u2<-Ey8Y zRaEzqZE^>(V}0+8t!^^p%?DN{Mv&2_2A(=S-uHvISvmTDt)UosTCI0uJCt=Q1|?!R z-sI(Z{DPcr!fop5zU(k_?vCJ(tQ)y6?_cCbzh)c4#RpJn>Jw;1o1=5G$*YG5tH!-b z4d5oDVdU;8GqYy>8SGj$xH>m{7N(MLwBFHmqju>nd6PY1e6_McZA_A?0HQ#O4qk?Y zoh-sbov92T``_SwMSULEb%@ZQ0t4J6qZ%9%mVmkAU2o|N(?3{*fmi&xxb!(6o^M&0 zqyEU+$oU@0uaU5+g{?geQ}6`~c*LSPi;2(wuEbp~)*&(vR^pFHWoBgzh@c5r9Eu>% z(QB02Y&I)t)@zHnPr@z_o}p@Ef$p|wa7(?SxQe2Hg1FGr-618~PgU~%@KfiL>i9(0UH!H*q-z4KI_NVihz}$yOrf8Gj_!Ky{AlY$r=4N2 zV_=*`)CAlE_kiIrYM%jKP!eh=v&O_&lY=+@Z1=FA_eOS|M%IR%Tnw88o8HWp9)%Oq zKyS^yUy$wkFm}qtlZ={i8FViz^V1a~`)pC!TU_~! z0r?AY!}sGYhcM>Gvrwf(g+v(p#iEf+&}dLPJKrpFF+gUGg^`hQR-EVr>7g2`IzdkT^_K3j^~1&r1`(HRZ}LEaTtLMxv^@OBE=0Q%+nNy#2fR z0;t94K^L)Bx%fBX38=`)EQ$GBbN6Avg)lYsd*t9FMYZY0h(`z5tGLNn#9F8wpZpL^ zjD4sU9#Ag5*zV%k zA$px3H%&>_ncl2! zRE(M|;4v$;?ZPaUK9Z`Lp8wgvOp~$c=_0U(@!s7J{U;b>Q6TqXu0l%Cd<=FM|NKc4 zhIoNX39Mn&etgj=nz}_J8Zpe6kg%)bg$lClt-XTlAU<4Xs((bv|I>7oM`y$h#(!Zx z6Lw&0yli2J=m)C?!-UXlLv3BNC-*Z#nXRq1c-k%x^G`=~Krdt_0}jjjK?j0JD42v) zk@_2J-y3~dEBd?HJ-Ig1nC(@Y%eZz~zLof}AL*0LyFT8_5Uh=fi5c~nv`mKj?lxGj zYcmJkrxxCyp1=0EFWAdP3|>L-lEZ^_Xb_U)wr{+(JUJ{H-e+q$d7%C!O*o=#@XJz0 zeu+=G*57%9%H48k(ew43R3Tg4bwTDJ%l@Pamz5vG&@O_;IxIXt~2V<%(1Kpn0|{N$j79g2MzK$?Kw-qm`I$Xw&KW!Myxc z@tA0$i|UkaUJ7YhbmPsz5;P*(Wwh_hROzbZLjc1`h`?)yCd;fnVXV=z*^zCS$P@de zkwdd$_VP_UtMOFrx0ag&B0s=EB|e3hafZ7FDDKJ2PJO_P*LUr_?moo?j;B;QlH-=l zZv^Q@bm3+!I~9U!;R?2Z8UlRrEnh2jHT}eeU&hm6OEmc1;)U*@_BT1NdD+|}OqP6A zq+8-M*mf>pHBcVj%hsy)Pz33oH^qx&fHoyAst%NlpRh$2k>#Ug?TZXKNh3qT%aozx zCqjh+Arfta!rSL1(sgVyYm6gEFza6&Vjox0`ICx$diBFSjqO^(zCi4|d!kFMgDYvLFWlKSxfh4VzS}Q1M3LgF>n1EL+Bf&G>?b?lff&p-k;Sxu|2Ns?o#ff z%vLLK^o*BCPuNw3w1DV47yHtYKRKFPk*su_H486NUIJGxbQ zo( $i$rwp)5crVK{x#go4qoS2^f@M6%hEig)}YfZ*3picdr3BK~5cVT|qq*j&ls zS@KyDZ*G26Kq}3aS?A0dRu8@n+-j6+7F{xgSnZlf-2AF%Ad;~9dd%CI;A5_>Ohh*~ z&SEBMO;4^)i@N;{cXd4GM z=5sm}_J9{P^D?F&XkO}Yu{62%4=Kb@rHPzl{@k^Rx}N%^E!`7$j|=j~7*&^zwt1O& z4Yxd_Nfz8m7H2E+(w})T<6#&C5@hV{Wn7i+--Oocrt0unzT+poo+Xi4NiF3FiN8tL z?!pWBGkab~q6JXU!x_?FrS51)Qj?*qwyQk-8FePxJb=;{>&OK5K4i&s&6AN7QUjF6 z=)PRX_dSO9=8ri&iV(pTRB~z_;7r=1g@}Jt&&|<#7%h`E>CIrBCh{`kTr!RsJ2 zB)(qq8*TcadSI4Ca)Y3+wfK(l6~IZcav-N|{=iR(K;Hx^KL?vG9sRPY>0`V(tnJVW z>HXUw-m^)h>v-2+>;j2+R#;lC)($Vkayji8zb9~zQ8A9Z1G&A$kBEYjQ%rWV2T(MP zV_dnCNb&xxzHEd%KOHt*yS{3Sywmtwi5@w+Xq#TK$rR|~$Z?!X_{bl25~wU#-wps& z;E zK22N2!72w{$mRlAt#Gw`Dp4LHssBif465c&81I$#rZ}GMM`m@ZAOAI;R|*dCTdq#8 zJFh<+P#>cz8d}3IGa{H1hSua?tUX93ASxsTAO@uZ-~Gz{ z{3RCb^Q<#bw>N1|JE9$dUA%T5L4{IXDXp2D!QOtIrSeiXZMv_o&jd#tK%+QnN=k1j zHzH>+M(2G8-f$E2=f@Gs)fHyu{dYnRB%Gw3==aT03c>Yf2b{2aW+ zV1xO+LkM2dZyADYbnN*d=VXK;jhL{e^V1$|2?g~AX+pplq!3xLOa5DCei@@=03k<# z`=kkU2DJgXbnFxHz9NuZXztS7S`K=PdK+cp`g9uGGW0zlGn)zD0HzyD0Sllo*fYM< zxfIVo*ja@4u$#*dpwau zTpHZ7T_415zFxnTE95QBhUNL&&iGD-vN(uMEIV8wXo)WdH^!o0O`{Eaw~M0EA*92K z9X!Vl*cakN+afafTk&DHPkq*5Q=0gp3-`=shLZ4CuQ+pxD@7%!#DoB5h4OMhn0@14 zW7%0Hyv){uzHEiFOY}30ck=dU3Z`aZiyN>}ZzZRK*!9_hZP((5?}n-2I2P`B=gr*= zbxx<=`n0-NC|OhsqT;VijeHx1I?z;5EZRw-wsu9ul-R|<$%vaiHxj3cV)>S-2#Otr zkHA|#i#_`K8x&n)d%(6@d7KQHcuhW~lWU;H*5d&&VHk>rf9D2E4eDOV2m`Gd26 zdlLTcY{Y?Nl;wCgQ;-%Zh67Lo{xtRjR|4^z>+cU+#qriM1x(;;jEt&XV7$OZAP#@6NnQxmQA7!rKB22LMZqs#AJ{j6X6#hfc z1VJ7pf$=x-hevuPxds&?+$jq7u|)n^44C^v-M~Nz(VIQ%goSJHRA9z0EA4j#O(%?^ z9;bf5=Tvn)0mC+Ar{15qHWKq~Do=_45`?*NO7%OV5dkEg?rZWbnF7q87^4-nzA=-v zMYIH^LaalOEZlo5?sok+reL1|vjx+QK`a50qV+>-+@T86ewl)}1YT=`At&s8c2nP| zfV&y-nAjEpp%|Kh_h*{jjvzz9XqVyx99ab;F;_=Di{jN6Q4c|?f}V19zz}r7?(X3b zb|oH#$x6-RlKV)X5(9eguf;0Yw&8=Er@!P~L^VqNsy> zC;QlI1CudC+b~7{dsdU)&E;PLoYVy~6<=-Rs)Y_(E9;ZL)^6sFS?j=t^qW0LyjBO( z$;I#rgFv6d>f-@E2U%f9-7vFs6fXqOfZv6{8~|aRPLZg->rGH zT8Gz}pt{<-@b^2IPpO(Mc)`IE1U{dz7V08f3%gt`6JLr-jF<$>l%d5wk!!CLA$lR}ER+Egm&!(#1_X5Xk~`e;RELBAB66>aAmRa$INvnh0QK9s`W$w~*5 zPQ@9>M50X_Bvg>Kr$jiZy7m8LjdY?JO&#-Tu8rd>5YDyjT_^s(-{%lyXH9ArtzC>A zo{1gW0Kma7*{>J$A#h`7zc||EWqVgv!A>z-L#ZZ_BAJPyDi@UYzv?b8yVa(k5fOS4 z-GyUFRgK88{*@HjJRx%Z(wgvTwGuJ+wHXxt3fzH{4?ktKr(Bd4;iO7s#}s`ykW`$t zmvjIArZO1!&V#&5Q73Gt)}wvXby%gQ!>w$cL=GOSft0s{f20JpN~0P7S5_Ftp0@a3 zUV#6OA)X2-9A5WG>dvSoA)DGy(waJ?r96XgxJ*#jaJ0TDRp9g9-_T$c>cpf6HJuq_ zAwXGrD%Hmmb*LIuR2&KteSEM^k*@cY<8h=s{{O~WtsAumat|WrLtQ44n|fXByTjuJ z*A8$LgF_X}A#0E451PrO)|$y$I|w8QE~P`wv0PI=o=3WCIYeuIwXRL@?NN>M%9E3f zmmp>PF5q4Hqe1^2AgPbns418r0kmR?HqoA%OOL3!=P!HTxbpiO&lD=_t2ir-I>28i z8k4tWDIR`hU31xqRLF3%%g6%!kkq`^-Yg#-TFFQ(J3%3b%pe|kvw=S@F~rK(c)dFq z?{IMJH{GF*EP7P)hlwxiu8*#y>R^gC&KSNz;#BEtQ+Nx{g z4x8j-cjLU^Ek&~eXq&FRdUNR%g+V9)4Eba4`W{Hm?jPTFAX+al zoWc7(y(yKbMUOd|>D1tP|%W>ZLf9ZfJqyAg8LM61B+gMRK(& zz~RwLhP~6S2s6_IZ;?}DUDUk~JSd6}8lELfeFmJWTZOqJfAXsrTLTy}=e2kN6U~F; za1m$77Nzi;hX`%%s?-b=j!DXs>FTdO#0W*^m*{@hs@28F-#pfXRo{oYx|8&In(cnQ zgb(gUklJ5;iQl%3RIBuiTJ_RuKV>t$A9&*|Zgk|Drpb2XH3e^YQTGC;Q$g^b+wkQ?EXxDHK^UDYPYE$kDCr(wxTa z8b70_YcKp|yn*!lN8)`ARMv*6-j;j!exQv=kv>jtvsN!*o2Dfa@C zr$!zw`V~>t_^K8D{H$qcl^+e(q~=atWH4a~)+HYR0ifig4kv@Q{j$OADdGQ-ZA#^ z+mu;K-`A8_IW&Zq)qoP-)F^}s-Qsg5uF zJ`8WocRa`JMcM~mD-pY5r@kusa$>yF%E=kS<1aYApL4J-AFXMa;^NWa3-bl{mc;9Q znW|RHL>|&j1s!je!J$PP7p~}ae`AB_Vx9x18TY$QHQ25?T!QJAg%SLc(Oc)a5x+`em*c`Q->)0u< zd(L@VuRqGgK&-|C?EFQeTQGK;y@1%K{$#$R?LiQH9NS{H%6DD_^>{hNuRoygXnBvR zz18xoO!QHz%Cm=W#nF5+n92C#J~mYKT9#+0sH}|FjbOwI?A})tp$ign_@Gb`A&74> zu%PmVdQBA(WZq`nn{@q48KIXAYkynSKvZ8!R2UH^*j$0%AvE)1A@>NN)W!-2|7~RY z;P8YqP9SlG{j%%p!)CgaU}t(KNj$m^uP_>7ee$iXq^|%U=7Kk;Fd^6fRI6=QO>d$Q zgPU@jCc>GoryUY%)*SwJ7so20Y24>E5m%XBDS+H@l4LYEA7)l?jm#urz>PCvfT0?@ zw`wUbeu|;|qr?M?`keLZw=syBPTQ$kl-^Vtb%#LWp%^)oZcZ70+KEq;sNCVYXggfI zGRgW3f-L*pzLk;>9!C%hObR-brN?URaJYi`A$Go*3jUl-5Yu<(TSx|k1zZ)N zr>Ta^*0CD%rsv$>Y&*a+jl9x!>dV5G{wbXOaKRt`hMx|9_qHyMNl$$``B@EM#!mj4 z=CaaWw9C*tT^u<;FTQyNqgrCjudI`M z)p2Mn_B$yj(3~%SNd=$i_8|p*m{BOEdZvjN?NlwWb_*qXc*%$!?oaKgx@1wyiij?U z1rFh4-8ROTh;(J^30S(s&6$C^dI>s3U|z2S#8JRnJ&L*{{^x+XbY}yF_ySB4{W~t| zKnwoq?PXVE11~6HfR@I9oIP6u402TpWwrJ8`8v!XnwPmZh(<2PbK&wXl1VsyC6|_!V(#_jpNn*rC}%#im?Er;HJaPRSkOk&2)hGe}ypn_Z!O0v*l>F8B#H zKK795j7m&fm4Nq?e`3Ly3bs>Ce5pQpr)!eml=Z|*Z9$eQi^3(H7#^;h|K{7&XJWo& z3F#4$O?PdSKgulXrk0NGUPcUzi$T6_AB_g9xaS&V?w^Yx62^E;q)(ALOnOZ)DGU$0T(< z>G~3dSfFaq=syJaDFFf-- zmqJzi9Y34F_Uz}mr8}2E=5A>{<0;ffrKs<<6dXdIgGo?VQ$Z%)&5g06UB}2 z&@Y|ee}4UF?Sac53$iK=ed4T}&d5n@%)LpVj0Ve7YI34PULm2+;5f?zxVzOn{;~Q4 ze>Eq^42xnyP)$Wfv(wdpx5jJF5UkSi=6ehRKd_Z+F?jLA_9E`3!1Q4Xai#Bn$a8qU zb`6PmWK&?%GeSseRS*vHS88`L6R7H`EHc7BVU?MJTC(1MYRF0;Yx(pvK=h_Dq(kYU zKbiPwdx7&cjx`ffhTsyo>GFmfFd_lw5#l0FTyG&`mtQ{+OJ;`Mb!6@3fU82XR#iF6OiKtu=DhuLDK7IRu9d<6H?7Kd!xlLgql0KzXVf5 z<^G3J%R!iHtT=_Sw!P#6%Yd4fs}Ht$OtX?#PmKuSB!Ji{ssooxm@Fv5()|~4o|`k) zEiXTEIh@E!Rg>V3QjF3MOKtqTka;EI09 zL{ozF#@|l>_2*v|Vi4LjLY0NXZ|0T=d~a!_5aOY5CE_t34W@)2%QXlXIBWTfb%|VV z$$5-Y8Tl6n#9*HP^Uu0#HIaSE^g+VZuA*^f2g{VUTDogVV6m(W{{K*_)wUkVRlE@v z6Z3fm`o3C5pWz3ISdl2>$#03@{x+ZeBe{|nF9uiYwV%=?pw!sl*`rzeV*(!js@8zn zKc?LiwEv|H$Kkd&<`Aw->|Z%#%Yr?tvKl1Fh^UVJPpuZFdr%#c6MTlH6(qTT&%=%? zkI*Z#u=uN3QkcU1df!QsB#+#GO11v4uE&}e4~cHYd_l}xe2xoK(El&0 zE-Cec#M)rubnC0_NSE@oZq14GT=plecaJ{Z?rva3Ua_>$|I74$xHQwB()yx19}N0R zUwHAB5&o)bij3$xnx`plhExt8h2v2Ls$7Nc(Oi!$DiKD8Cy6is~U@biJYUrw_l zxfjJ$y>HPM1~9Gwrl7!OG9%Wv(cI z3_U`9FA<@9R#PUc7&Uo&DfZSGbifEL%QmYG`1)<*=?eg-?{gH zpIx0rh!d(Mi`$k#CV2||a-v!Oxa!&*sbm^Rk;>Zu6e-9I#83A9fFN~45s^@2!Rv-E zri(+P9^>&wdhDUO5oIN;y1Jsj7-K$?>D&Wq8BJY=QboK60#oNS|)p(}#RpLkVlj?7p8E2FNR*B)q4B-b#smK0)wV9xS`rw*`G7; zd&mXp$k%$0h6u&S;^cF`Xr}SYt08^%6QeZd1EpwfR__?qv?W)`@k!w@*XA`W&f3xu{fY_H56B*I#>Y$EhUr<&honi2J_` z-;Nc-@CzOLl~p4nNW}@EdpWT~C6)t%0lTtO(T**n3Fx-Hs~je{L(ikyC|ED;jWAq& z=*>b_seMw7*6EpuaBf2>&;s(@C804dGsvwoUP+20{_REQLLcm<5d<_J4$$B7nN$~A zAoEMk#>5gyZ(O3Gi(xN?vpLlg;I(Js~ah@;h#Yx!SiCsLG?+}LY@Jl=Rzt%>E= zqHz^0Mr|x1pUZ>5HfhKpvd1vW1nl%d6rQ;;{IYb`k9#}?R7#*KM!aDEHTy?9n8+#r z=BBRE8{bUtJXG?_SHhWFiF;9`D4dX{NFPQ;rf1M^SujrizakR}H)7<@DrVNOw`)l0GZ+EkC=QqLn? zC`-wfXR$b|k1>?1;6yt@Z|C4CX=L&uyInUwr)oS0S;6T{b;CHL)rjkK^zmkLb*p!T zFoM3%-g=UHXv0j1Gg zrEYd95&P1bFn!{4{PJ!u>0UEXgkJx~*ptjRXDvwsw{)Zj zAuf81<$-HlPIp~3BLvJ%C;vH)lD7QF^CbP%L1j#=CH%o=hOeU|Z;@VEYi(KCUKI1h z|FpXp2#!i=?-k%6)%Q-2b-`O1$(Tb`CbBe<1e6G@2yoZv*j zty4w!=McQtnTj$bKt<^+KE%Er^*JptsAC(6fQ2=?KQlN!#gfO344Mtfh$L!@s-XEn zP7`g~9BBGGK17V(2Ayp zDq4lPHD^znUZD&r%J7eGc}%)s1!|xIFkD$u;*OmbS{By^ENt<;U-S2X>12cgY_YRv zW*)da9Sy&Iyq>v9F*<|qn{W3&y@(-uaPfBAVivA-{Dsy#*4q1aJ>hSxVqD?ROZodC6NFb#G>jVnsKh9HhkZ^{Dx|KR_h$--x@mEz{u;(z zV4XX5;6CL0D<9(NP zSZ>Sd1M%{3kpXRVQ(}}y{-s#{kq1xrDYU%Zia&qG0ui#TnJO~r z4hhT6exLKwiL`Xhdk7hkr5j1=MsAx>e%=E5heRDo^H z-DBWCwDtF8jH+;Y*%;@9N4%BtG-M)AlCI`;izb~jc_Uj(mLS+jw5U3Pu%_SU@3$_P z8*TTyoMF@pB=_zu$fG6TI5l0@=BSvQArZreI!JYuMmaq}K1V!{8nJfus@}%yIf6_q zNXW$0*e#NXC(lptnv=x3g@lH-)d8EYpAK*%q)s*#n-!wok%`9O_zx*>)TYp89mAb< z8B_P4BYQ=$ArBy7K$sD)zU!4D(f>CX+*w!-5i}yq;{WmZegnM9od$2lo{&P#{piVr zk8~R-PYX|1%YHf2*;WbC5KmqM&H~Gp?r{p~Tm&QPc~q#^XZPCAGFO$DihM4h+%a{F zm+EPRexh1lNu>O`Rv8I>5PDONp0|)toKWmgoY5YCKbljY23wswkwCfNC8Oa+06~H2 z`_C*6gljYPZ;YwI{uGNaXee5B%9jcp50OIopp043kxr9<2w{r4@9^eVpP2eeSQZS5 z-aR$hS`bNH6{0iVdSMVp9BcjYLm-oLW?g3Adw2dGVv5xXP*p3^ivbMaVJ1P0E?;7<1zce>RRi-^7FN>NV6_uiR> zgvnyOlgd=p@1HjX7V{i33Qtpb{OWTbz}av^wNQIDpD7X6LCM;7f(?V+6 z6X*Wkqf;`bnIdj0!)aBK*{;oBK5j8%^Z(Pp{1fNf`EmURQYQktjlZmZB=1|Hw4+8V zW4I>)@Ul#)!*MJJ%Usg=nJ1R70h{_5wCByA%H1n?c!h@@0j8|0@aEme7thvkRq)0aU_Y!}p+HoLo$p{C zM_ZvFsMn^qMUgc;rNrk_&Tt0RSnW59fwnQUu^#Vp)?R)&G$(G4=ki>ZhIq7iZzbPOx>OTpxcH! zdBALk`OM;_*0;3DCl}^G(BaJ1id_a~0?Gw-=Q+Y=e2TaIx-~45I3Zg}aL`miPTNVa zjtL8YSJfw*m@gFPxN;br^VOG+fE8%tJ%P7Lot32>2A zMoifCJl=2Xybu-Kl-OEG{@1jg@fGz>6L>igL4|Sx>l9C;__q2Rx zOKo^M8~wBMsr*|BBBN-2(>IrlZvJ3U7^7wJGPw@- zi+)os2}Tiu-F_XE4WtlIyHzWY_(K2jRpb@Ik`SepWUbG$DcF0oR8n8at-lTcGF5 zaD#RyI1;kAhF;bWJ$NVm1PmaV1O3Cvz^d2p_Aet$eDQ(1hr zwY>2kfdVguXi7F?w%#u<R2ok#!1@hB3`#Ey753s!y zMQagCbrH=CJv4prS_$9eKU1q|6ilrp8XO7JUV%7NnmK zXNy-f{d`vxhPVX=#Qpys8(^ebcqi4v;MK9AEqZ;cejZuspp+;c@-uvN{#ADm7MkAy zd-rVu6EG@(OOPnqNiZG9(EO6|rw~#+FiU6lSaa_FwtP@gQA{EUJ<1Cu9Ta zfH{)@P8Oxb46ZISuU$Ow4iTkVn${69{yUP!bCPDaP)t{@IMfivz6W$bHT88nFist* z(gD{jyRD8uv~dPoZ9i|@CFzla9-e&Bg=85UF+{qIHR@y}$XN`TEbxO%U|eUmC0xN{ zKuKDCyyd)I{{Lpl(3Ga7r7hU0?B^Lho^c%-E>yssDu0XHcD3U;fd!mDhQgsWt)B~F zL}fO&OsTDK#AEwSbAe08Ac^*d`5QFnbc#!C4m$NM8G>gp)vRsz(f!X)c>y5ZgOlL6 z|1p~08>xL9U59O`kiA)RUygjAbZaqICGH`~_mrk&+P6@7A70s94UmQx`LAhHz_vmH z_0P-aWJzrm^q1Ii%Ub-sB%Pkpd%73-iRHTx)G*QP@!BJy7OqXN1eYvj?dk44Rmp;! za0ORjCa!obQWtDDe{uE@=^`Gf!+?GeI~Ac7m9X^{mqole@qe-LGXwVg?iJj2amHli zpCh>JIwSkA&!0?x3CCCcmlpsQCm|k+d@0KzP&IM+!$$HiCQse13Z5Lz?6}<719WfX zCnc@&FJ`^=b+OXYB!#qK9^Bot_C0KlC9m(t$az^lz=&`cuQj4#xbaL4NT9iu|C_PH z_UWQZ%{Mp6cei9@ZC-$7)&YsZ@#IUK2v*B8hOzrZ95Rfx!@cM8+EByX$sKTNyJ_@}JlczNKiB;b29KZRFI|0Pys8V%H3=cPUBQN= zfocmRUq{(tPN}HSND5IV|_Vf zM?avu1kyc!6RvxhlkBIaiA;6LNXN5mt(|B$W-&M9Mbop%iA%1@;mM;Rcb0;FTL+|n zV0WU`g50jp@qqs7vuMSpxkW=-*Jq=>B34cskXid7eHl3ZwZT#CV$2Cdm%%T8$4`ZE z+^$T~BqJ*tDb-Y*_$wh2V+c9@UnC`qpU{Z-7cCxzVmETqxqM2=qOO5gG{U%NX+pml zsa8_CoP}w>=I<0|2E_k*AvbL=0I-7%onsg2BO0b=(o@O!22T4A0PBK+B(zL@b{9|z zwJ(Ut@y-uN4${#sOm}uHfLDCnVeduLtRs!$W8&m=mq$lvm$LqvbY_nRFO3~p)%3Je z^nV>9_@5S$aiq!a#lV{ddg;9j|E5naW$gvm(!QQ_Y_ZT_V`TUOtK z!RHvKMlod#6PwwMO=8XY;fur#$?tz?f?M^Tn^7xOCU}Ku zBlGIcdC2D%1b7=}^}M5MC~ho!#+EHJ$aNV1=`6#cWO(1Ua3v&}J$EUq6sb9uY~a~= z{((X&kzY%^&_3@%yk0>6f+D zARrkZmVoRQxriC>2z3&xqbTS`%!Xlyj3(rLrKFL#@Q`lPtO)tOcb?o_@R{t{4tKGD zJ^{3DxRK$?=c}eVsY+duam5}Pvp2>cPtQ2(yj4D-8`)y#Pt?IW(vOJ zoYD>kjz5j|~qH>npLRCXleEh6Bap#IE^Dm3@ zCV0imMDQf0f~aCsLR*|!=`>HA=s)BYuV+Nby#{ztvG2FOYII5mmF34kYdqc;IFHfJ% z-Q8BlmF96a60)AEhCco^o613}#X=f9wxQLnQt-ZGz9?Hb(N4Q(|7Aiq*W*E5lSbbk z`T?KC2<)4ZxTQLUVUCS&s!s2TOTFEWL=Pddu*Lp9*O3_oxf1P5ke8>`#sw#~7P4%s28)r=!C5+j^2(x2I_(^2353fC~bEwAn(gk(|2a$HjeK(;W>4`yjhbM6dVb0 zW#FTGcUPowy=YuO-{n{Gxk{c-rVIG*QjAjQ@Pw}VH3^m^tFe6z#FLX-N+5bT_J3SI zzv%-93)N+xp^eivmL5kPK+JbK4){R-#R^IItu&#GK$tQ&dE zW7G#|y`xd}I}QIPm4<1!xG2Lybpv|rWT?9GMk@0C8G5ZORm$(Y%k_V-_1;lUeBJvt z9qH0TS2}_~sG+MMARs8c_g+KqNG}rUoq$UHpnwzskz!~;S^$wQ7z`Mt3sOaW4?e%| ze=lpXmb&6(=FB-~_P+ML@4+YtZ9m|T_wC$ZDUh)HvuA*Dz!=1P47PKodq1ImM~4O*$(H{C04k8#UegDuU%k9HHJ4`n_om zm}Zq&@s%8kGA#1_H4@$N6?^x$0G)X5(2R-=^cZ8@%vI$vv2)D$VPuLHq#i z-Kvk>rCU%;MJCsuV_pe+W#alugLr68aElZKT&c7X;CwhYNC?Zq{o8} zjHq0QpR1_f&PDwv=;PEp^+%8Xsu3wAaiwUOfj_=NMw27_LISgyXUz2>o1Ps$4X zcz}{)jQ~Tm`#$Jek#-S?#)!xr^aRl}bLGJ{Gj_2YlH3DfNHXsEi0kxqgA}Kz}M8IxQ<|o}-#1(f!z>2prt@?POD4314#@Zv*;}YV^atr0N zvCCNsYudioZIrs+g0#X5;34$0?+{*M8H2p3uVj~PH+r!FF0gW=A) zsvrDkh8aYvabAygd-h!rLVXiI{UJ?UQ*_F-7Zi9!gjyoUbC3oZ=P+cjJM1W1YIm+X z9ySlgbBPyqK%NeV#mf2CR*K!!COx}T0-12$T3^Vbt_7ZlaDffWrLpqkNkW?#f4k->*Sx-r9dc~6EriDCJD>t9T; zbg)o|C`LSCNjTs7)#^K+epfmSUpuF~}E_bPQKd|F( z-yg>~>Y^jRjHAOC@wQ9hyi;@Im+72`@LE>OKI}7@>Mcfcb5W~-jM{PmR{wY8xD|dF zAmwugKNwSK^v1d^~xBxS3gF zd^hXlgC36`kxyqx=mCtC;4d1-=}M(-EO>_^{iH?oH}XzA%T|>T*ml8B!1NU@CK~-X zk86D;$P>k3d+!PP#eJ9-F)p`OQCH*aPP?1To&eedRy#ecL`d#SBmg?@cp0K~U=_lB z8U*LzQurS9G%A|(wG?X+5%|~lg-y~oFRtK8o+XiF+Sj8_DXq+1S{EQ8h|5vB4HiZP zNv@adKe$iTR+J<mbJ9zRk4dG)kHPRAdJj_0!*;V}svMZsys)MR*?!`!3OF^+wP3Egn`}RD*HwTq2o1 zsVaFrfp|??X+yr5ddB4~tg6U^8$-A3%Rg)Cs=9!$h)oNlnD_Iprm0MF?KNvr^y(8A zb7ItO$d7AMzeFMw=?ob++}xT4UJ*U%PCFDiKlAw>Z!ZpaA~foHQ4s16qd_`wMM=-7 zg#Wz+2^yYR`s{@jr-m84=xB(LrP4cUrSgCS+mPza5POycFO%}?eO=yUlPR2+XjI!- zWG$;AO#br_tT=>Lb^uK4k6S|4#a2lw`lDUDh6*J|3j<;$rY2uOdb4&^Fx9I=-Hs&a(!U%N;lyYp88hO1O#H_%ZNc+iz|M#o;ZuT;XW44RYE%kh;6G%S zR2jUlblzWwr~WXW`{l?<+pVwUm0-H#?;6?N-qA2I6uF3rJY|Yjrify}vy&}MF6IA2 zJ$dPxunOnc-;(ES!>ty3ff=Z9$ya61ksc5~W)4T$gM68m427SE;Yb^JBQILMKB2Hb z<39i9S4^2zsnXQFS@;PD>rKm`m<9h-?KLphMzB|gTSF*+E9@#0g-K4nH5fdNiOV+W zXxrA{v%A*!MCOoZZj{O)h2QYLzS542pgs~30x?W6tvBy0k@f1QRo8f2mB?p#JQPs> z84?6R)7%z4@;xRx9_sAEzE9qKTL69C)M|5U_JXX5Dts}r*ty|Ip`XvNK8;aGDtPl_ z(?FKu>xiSxCiSb?3{&hG?u!!h@&1=f4kGr7J|j0)RnFf4+DAC`UVs{&`KrFr*<|FO z;Ro!+iy3or)fDNhqYO=2@@JW9q>ZyMdUKz{u+}0h0bG3WjX3J{r6`P^9z3ZXxjq#h z3JN7Re-dBcP=29Gft%~+)0N}G!?0J8ROt;bK`^9%+Lg&0j2gZ3|UOSb2qW#4E z^UwP85U1xPR$pi{e3f0xE_%Pc)ftRj%uwy63L;`9)E#)DeL1z0XV^2?-K4`4h8Ghw zeMM^keP^p=u4tXfmvHhsKULVjjySAW|KHhv1Vof}fr#O**@sC5RO8?`5!H$>XHu(o z$rz(>()Sq`sn0}+FSSOiq$3@M4uvs1Q$f4)+Sd@p^^u4 z%YMdcK0?51PVSe;m77W})%yBX7we;#XT>h{LNjgNE(ac7r-AujELz%3M83zE)=gSJ zKGCmm!5|eJQm(nY21jjD*Ver}sP&VScWw12QW>hgB#lnWfo)a=+CTGJa8ENGm$YwM zJ-^)A^vsxbN*5Wnf0aJFk4p!N+f>lA{RXDBdVu8}p=f6tj zpF%cx*%{euxUI!aj9ilNa+`NE%LmiuNj2r^_xaw``IAEQ?`K1L_p(zz(t%(b+p|ru zjli2{?L@KSqvJNMZ;j)krn!suDLlip+KUX99h`@iM~xD1G>h|TSL7Jj3^2x7 zkKAg1o6yd&@$_kGUM53^@WQAn!Jv8Rca}Xzu_g}mK-{KsmU=9Ylb-n9)cmg*s$`6H zh6741NkQ@HW$}#p1|LL$^veB1RzsBWsyuz23V3c^E6{_rJL|(FX-Vy4wTNbmu`8%j z1pZG2?xmz%zwnn&U;SN^xzbaOZEx!J-7C{ErZ_{G8gKn7$t0yxmfMn3JImSl^9O82 zb)ieuHz*mlpEQrSHbZeLP+CH{CF*iI<63{BeV_(=awLB2;5TOyuw}7VU99R$kTHDb zSiMBE4AfhiKecP_m%0wTqWi1*G$J8ScRt3G`mEjR#oPGTCfkvKdKgAjFIk8noCTH@ zlXci1Uw_avh7EdgTgd+6zoI60ELl0u);{Lp5lNn&oG%fO6Tb~U_@(ojqg}6T zW$hK~5*w!0x)Ji&$EqxXE$1eic8}?}#8ObO%S)xtcH4`ax;DbxLD|7|Pu1MFtKB8E zl{PkEHbJ!p845cE_JWerPgDa-VtZR;%!MifY<24=r;GVW}O9TA;dd-((mL1Y>O?%(V>)#p+BMf>-3 zTj`>MhT;!r;2-9qEA~@)-8Ub8(5x0TIs7@{`8<)2lKsq03@_aO+#Gep0VlGTIarQ& zlEM(%x)Q00zR8G97T^%N?IXZ(X+UyEZPB32F#r7M!Aji@;8wEbcNC|;1L;t&^@g;~ z*pc_yYx=i6PXi^>KK67-Bh1us#Z9|8%y$y%BS(xDwGl=q0f`3pb0=<)bQQDD?S# zJ4?iJaaT0B>-Oeo$L=#1-5=w#|5y+yf9xc=IQAmW95uA@{juE`3Dz7*nlzWqiW7y* zTXLM3R`p1URvDH0%J5lnCE1RJ*kvWHKK$;U!d%EwoUYw-?-FoD|3ARh^Uzpv>){ho zZylItRxnGad3W|!N+LTan)z=uO2#utc*;{zg5)h5H*s5~r13yNtiV3YVDxrlicRjF0R1>dSIH z+h%O(jOvm>_#T8A=p3?KWDmJEd*i7H?EH0ix6Y5%8`D?Ql6jDh9C6~$w!SDucMHHi zKcj(R>`^vbFrB)&+Ox!l@>Q#w?1k9~rL<=LZAs5QFiXW=bV-{i)(G>PCW#mDoGTRY z35q;fOPA1XzS^1>OzQD+A>ioez3*9jPkpyoo;sL`sSafDr20STKc(E~kNxX&+1B;q zfiY&PE{M8KkB?I-zU^?f$>~4Y&N*um3$=%jAqO@{TfOMI$voecyEO-AXv-H7AL>#x z2D-w@(RWe1C>Wv{)_ZRPU} z>*Hk~eD@#{WW~UKdue{RO)W++Z?U$vgR#%|BH?6av4#E?GRHVil)WViKtYDz3F% z9veWnK>9>oOP`Syjue2svJ(2s6e6~<-h-&j%zr&a6{QFgnip{=EsPZCTzf>@;TYoN zrmGfvn9n{(vS4<1#vu_V0)cO7bK2=9*)HB)`qa5RKc0$zFs#&8saiFq|ET7mxUo9j z>Gb#QEeg+5p}N_UFeb-7B3%MCIuMCI?58Isclwn3y<%8_7N@*)TF+*3R@(1ZnMCs` zv6*c?=w`NYZ!9FYlM}Rj{6N9%iK4v=y9L%nJw}4WL7^`=Gf)l_!5$VjQ9rNk7;yv) zMLgq84AN3k6AdV|77#u6;7$cwLd0CIQG#YBs}o5Oa&vM!VVBgq%kT3cTJ}i$ooH4K0m&NYmiA-b zIt6Y?-jTnS{o?WQCf%y9tU)V7_9kEi8mqd*(c9UaXg~rOXtf48Bk0)373KZ8jML3Y)r4g=z&Nnf~J})ir`9TK!iK{*!%qxdcD;XaZ#x z1DOD)1G_!lvuusIvsv;r<*Q9-oMf*}{Ck~#TsPgR1U7JPq`_gBFXu@pv_$iGV3F00 z$KGyx=iLb(dL)F6AfL{~~ zsm=B0VaS(pgj-l1N)fe+-oCqE=81b=AJQo5JbbCWmOS^(wflKo zK5UrC-kV^~v3|&c<|3=1ySyQ0%ico-m;WuTU#9AgW9pqxyoR6i;E5iRx8Y=AsyiE( zInfG*RP`u~TRRK8+C5-?iyE&!s3Wfkyb-bfs`nV>jkg>_>%>=erK7j0^ahJa^rC)c zN&}rCx$`pnp&??Td&si1Or48M#k?3O9+HQ~ho^QPNH29v8B7$zDzkG2FEzvcW zYip_gVwlRg;!o_-Jmmgj6zFWMPBgW$HLMoupu!Wg5&5Fn~)_wpu2&EE9ow^RJ|0Bjk4EGi>PtJ<) ztBG?9nA_kaPr6_07#k@0$FWS={6Tm&gHCyb3LEYglKA@B@R=VV1WtV3M8z>~O3dfq|>&t3(UXGgJbiNb>+KUmUGn#(;~seRZl zA}yl75}#XmJ5L!xYLe8o;V`u2mVG$7lsqhp>`yvL=Jb1~?op$q4bXU0bq*jE;YfB) z{o#x>>sMmftLZ@r9gh5u93Xj-fwQ2mqt;N@QMNF9Z=%Ndaf*})tS@%=F^MS1RGBLi zD_0eqVtK4U4XlwDQw`f{kRD6>ZupB`f%8pH-^0$7*ddfUgzgZM36g~8XaJ{ppFik- zh_6o|9m+fL%^>|l{`jRfkc66 z954~|5lSLF{x7u>w@3!qq^!~_eP+P@3q;j5uw(`c~+6q zCmd~SNbQ>s`so?$?p2oEd9>iqR9*Zsj-}+ytr-_jlxX(|EoZ{vRed_>Zf!PsL;ih- z6u~viW=B#{)A}n))F34`EcnGDLcaIa5#eV}-j&3qd%e4q&goNPV0&;tHD2hs{a${S;-aHj3 z3*l#z7W$j311WHQ!i>tyP@dS# zaW6>hjh4+occ}x!6C@nmkiP71n2Sn7t&T<)$#F5rza*yS=HyR;=)i#&F^ zjpM%YPH^#Ix^iFo%7F(hwUQv1`PrWK4&>LSaiSjU;k%@^&z~42=)HSk0vNPA_6|~x zthPxdF|aMzv+!T1+cjXB#-}n_>rczymwi;^9VS8ZQ<@R)i0y%S#koLK<}k$nyGSq{ zL!omjC6&4{HyM>Nf_rO+4#NzBnTJ}Lf$75vpUrMSFFia(@)Ql3zxK#X4J#H*)Ba56 zn!IweJAu&GiRv?@Qr-hu=&U8%zjX~xwEI*F9m#o8jVwBjK+3KTgj;NVTkBaJ`m>RC z*&L}+73AnZ{vecLyZB=B?4$1LSR+c~y}xh5p$dDE$vM{Z=}A+{umx7-LUP;u^7ET< zHO3|-twLn4_xn@5qDLO46PAyfcNgw_!x4y`rpiGZElWD^@^9+AaIN#a}(S* zL;AgSI(j2)d-;tyGW`$3BZ*#Fh?Z(v`yZ1tAl8Zz)xTgw?)KNh`fu|*GLWYG%Hw%- zSiSw-zfll9fEqy!yF2Ct!;^AoE(iYrXjiI-78rRH%5H@FJVLtdh_yS5?QtgkAoB{7 z$}}|~HT}x!eslnbkaN`>?+m%^#M|EU=0%6We}hVKYIA%y43S`@G31>%2gl z-%+&keB2+<9rz}3JHbiedzFagdZSJ6snj6wXX6fPar%g0j? z;Y*J%QC=?5|H=R#TR=XbM;=0{l%aUCS#dYLAcae#86fhklNKdn8G%~GB;L+95vJxl ztmBecOSvB->t7=1)2>PD{(2kvBhskI0v#b`GiECIv^`nPOr%`E$|^r+*De2iygF>J zDneFH&Q?KEQc__XwrQcRK7d2TISfA(6X4AMI2=VrC!r{IloJYFay`)8NO(az*GKm} zqGOM_PN;hO6kk~+XE;_+fwR%J%4gueEh-}}z|qFXk}iu3|5}U$#de1j!@~bpYhS$@ z!dVT(H!Wz#3)!Q)m*mIx5QeuTm#-E5rZUdkS2~xb|C`yg!BX~%{5i-Uy-$zUKI4u2 zvI4#@89cfEIYigu=|`c^`P!|4Z#`GD{{x|jMI^Qx_GMP}nA8!#uV&}?aL7AyFreZ_ zhLRUYca%2I^2V6e6_yJ&3w+-is?HQ9H?k_O2(|4#pHCi!{tVu1i*lUkXs`~hLFf5I zShQ~~I-hqsdnq0D)U5}}(AUu_R(H0bzwl|nV$%q`zt#mMMG-;~1CqORA5tZ7E2{&K zA|+&@)MlAd(O)Enrhl&r;1r zF@*tHp@9wy{)ry{gh|4;fv4WbS1FtNJ`yXR>wYkOcxYhe)_k-Pk!*dWUn)02>0=kq zv6{`bN+GV{*(vK85OnleLXr$4Jcaeh8L^n{ojo0(p5&K~bu>SjNAn?ZEWD}TGjiEe;jxkUALp{!318K@tdi8%H#G!^LGzM z3=R|Y+D1*dU+=1GjDlb~>6Af}P|1aDO&!~GyRc1=8+l=)J4-Rjk!$V3~YxLxc#xr^x z>xkJOQk-BZ+q5$uW||t#istJcT9hlDAIPZtkeq35Y&6{Yq3oxjLBfYCS~B@B_&CuK zao$^y8zQ5X%*^Sasr1tb1x4*dS#9s58XMa`nl9Q4Zryq3%FhDIC5$D&munw5Zx2XY z`wm*+ITJOkfY~HJ#IR;drQk6ELIR@V3$f!5ENSD7CI;VR<~hOxx%CQ#LUW z;Ac=}bA8cwlg$Hq5urK25|pDopfR{fVY>*tBxxq9g2AYHM3brfc|pG84|t8&B1;yl zVGS?`wHUMo>NHi|2e(67C_jWepESDBTJUQXinqoxVBvx7u-E(&ej;8tUWQaq;INlI zy_fZ?yRhsVt_(Hbox4E%+P1 zjAD7{X7#?zD?79%B!0Js`L%WL(Z(V5QGeGWm6KG{SgINZgQA%m$&@mk8gzjb`dEpS zexBxBoY<+tjQ5O%Zt`FgP^7Th$OG!TsN@_P3cKqw-vYQ2*_F3|86#0G~USk3sktes*c%YR@ zeV@H-c{Ji)P(|?DgAQb;BflAXa8~ zmJT0?EGC&&301FJ1ySB&d(^S7YTS>fKc_E_v+EPyRoW8%(Lp@P5?K3&d*`vHbL@PX zul4@0;Mj@{J}Y1pk&pBmD2QvY_Pi-J{5=SElWaF3g%z)ef;pfwmHS$B1}(iDB~(vu z3UZkkb2&t}*nQWJsSd4tDF-NMUfY4^0yOm_BPeb_YwWjEq~jow&^Nl6FnhoAH!P>a z2xk6MktgG53xjx8cV`uvZs!JXnh(7bj!qus8vGHxe{V-}nNy1O{51XSqRWRLM5eF6 zL^@+Cv-`fA)O}i;9&%fv$$#=j4j3K&-AYh8Bsa@6O74e+)-DOJ{dd)F^dW!P94Of} zIo0t4jS-jo$9{O7Yj2L`Tytgcz7D#Sy@)o5@YPkE0@5w^9l^W)a9SMQ;*xfGKI6z? zfM-4ckNReR%X<2;@7fx5eGhw-(c!y6MgC$<%tqB&yQ5ib*&TfmbEjimq%AD;|^W5@1Hm`viR* zW#p}dUYYRQi%{&$+O7147O0G2_hv=KJICnmQBS#I^bpZ(da55M>zX`OaMeZU0cBl$ z=PBm&fLd&mb-$TNs@~QorfbTciGBJ+m=zyoUlZ*7eH}0g{c|8*SFIO?U?kRGFa)?+q_ z+kc{+6~kJYj+i4t3~n0rKcpCg5X(4T1eea2E~Jo1qL!!yGM(UmLQMga^J@;wtMNLM z!U*=s`>T4D{Y>P_{K)fYeIwDFJhZ6OVn*gkxZGPRg1X^;Cak+)Wss z_%Ber-aYgxjtvw=OF$;89nieNuHt^p2ocoNxYB$31kl~dw^LS|wrzW}c6%vlY1+Xc z(xJeZBM9vWK^93=lKEKNrYOCUcNb;dB#y_OlsbOLnSO`n)WH{}H#FI9w3j3}eixbyB0epv9*Q z_TPVT_wmEgp7VV7RBhRZ{SVnV{9{zV%z|9xvx_hY8H!oTM@^eUo9WQvkWf(0(Y@-` zm-AH8j@y;ma0592Wq_GU6*$+a4$KfW(_srkD+4B;F!?AF5)-7P8o;>Z5Nm`Xm) zyPB)=90Yi;yU8MkEWL?k9$$J;_aLJ62^+<`ZTf#MGyL_Nl$WUS>OUQr#$2D4lbxNc8&F(TRlCJ+ygFpgu0W6HC!06sq=4*Sfj|1MFO3=~`tAl;^+d>S%{5Rd zA>RJHIP@qKGZg^E+I(g5Yg-lsU^D*NtOmDosbCnvM7j@ka=XO>ITapeS5s`4tg->T zhYn`u=R*(Q25%jk_S17q>%N=o7zI0t>+fxIvu}-I6zSo7i zGEx2D>lnl!9)__2H4bc7w|?w`jOidT4!akhm0W(k*8MuYbr>@k2h^l$E}qA^euk) zW{|7WMSW0wBe5OEuLicY)ud*H<;h9KH=Q~DApg?#0h>Wg7onfIsGrZ_i$ir_VIJBZ z9!^pD4QG;h=&+TF`C?`F{unY(B;Tj{df+4u~OTnU(ha z$a}ABYa)!sr_zk+zjjRbldWd@i*KD0NRowRk)->_xJw6}mXqLjk}lOJ}% zSt!N|3arD0eN0qe^Wlo?#*ZvgUhOJ!f^5K806`Ws=%c)&m|`s^;^F}zD?ty zC7)bltdg^4snk>e=^{9JVxB54JBH)LuUtq(E0cffBXGM^cz`>1wZzaQ=0xZ(bqAdX z1MOu-C)oG?>=-;xqL}#f<4@Ku+LhOIj4vT&C1VjO=i?v3aAt~vMZ{09e8YdTTHnqK?RBj2DnEy35+yx_? zeV-Z{6wwF<>!b4hI)-bD*UQIW#l|ct)N#(VZDs=u9&J5t&nr*=CKqCM;O5&w%72IU zpLy9fKx+wtffSPYBu4q(dC8&Bg5HjfS3A6Y`Eq;{w9fy|ENOoWHibhngm89-NpwXZ zkGSzx4#S3C-6^JfF11a#%Qj33pw$}nhz-F;VVj;8Dr15iz4cU#`U;`tB$f3ELZV!P zR%|KFB@<%*g)Pfsmc9cVba`2lU>?4LLL_Rtk4YIW=nXN`+HeuL_&`psPP0BY8RoyB zu2~GwA2n=0jrt32g$Dl<^990>GH%qWylV?oVR92aI;N+bfh-;p@LdX*TRD-LQwS1){SH=lfng|b!( zoPD4`@mq#9)e&j#M zgXhgd7zS#L*>L{PuDj%YQ9LHnWaKD-51tb2XH97PzTE7l(zQ6bo)3LYin@#X+mtWr z!@@B@bE&|piVy|^_wg2iyf=iO zC24qQ!n#u=&ZSmu9>3j;YiqgvKS7rR;E#eMGjG-2?xZWn{aB%wS1OI=>G>Uvpu=9| zYsM6corq&i=Jvyy{lk$sI1BcoZsDzGlEgLia~aSHHIQ-Xr(HD%?&Evy)d3nD`r#H+;!ie!q2#=vTlN~T2=y9L@G2}6i4{=RS z3~9X5zupg~F)oJV%RqO)=9H0v%1|=R($xo5OP~cn7%+k5D7$s``1QFiJ5t}~kQiHI zxXF0rV!o<4u_}c!A<~EI6H9ctyB4HzFY&ey!G-F3@DIcBm?;?pr+ub zjvQe1KFg4b>|b%D4k-+RTY9bPMc_96t1L+UfCZY~^yg}Ar$92M|Z(K;i5i8FE^yBfR|_v^ySmNk~<^%Eq~eI&mh3QCd}$ajn4IZ#DjCj zQn^}Z2jK5u$5w~P*cD1O8(U3RiS}*LP?WG2?)&2*o9gcLX_^=kUqBp=dR3d_3s@Jwf=id6Fu(G zbf{cML~nL;Z;cbVM^Fj*v}>wy$Fbm#vPG!Gy_Mq4k)WGa#ZgP_f2^y+3cP_5@9k5Q zP3gifJ-P0lo}TAe->w}w|4EgTOYK7c;iTH6u0+pIeh{1JKj}*r;6#TRGSIdMTqC32 zhtP}@#gqs9K{MG0lR7r&Tt;N4f*5KnSxJ#!Lp`06cy@%@XvQPe#~yrb-Xe;tNv};r zZZo{TgEMS-s8XX>+^>K~GJ?l_qLpuF(#BX}3YVsS$(}9QNHDun?t*KglXE{kj=-L( zGK@BiC+pk}!H_}SU7Gm;HGsMYbF(0C(2>*FEbVgRbf~**zvaIHmi_?U0);z2dLQ?2 zn0V4B@ToLKSV;pXG2(fg(rWL=v0aocQx^Qx=XIDo>-n7$N(!~jD7L+Rb2Rop^xE9W zj>9lNZ(nst;!L#KPa&hTJ4!R(H@VLhm%TuNn%S$@XX8a+*rNBOT2N0`cCy~g`<6DF z@koB&quWL=MxV#o5J=jx9dCvq@J72xlKQ?dwS9yQiqFq(anzW)_Nm&}l|N*zj@Bc> zF*=?(M#S|`BD+&68_LN0!P3}xh1*$QUtQ|!2SEK8nEKv(KS~jawKlVQVzxA2jso&}&T8;Fn-ofNP z@}r;;ScK;ZJnwc(rP|>RtK2k66q~_!eh#(keU-4lSOJk)y*^6wchi&MC=F!mp|~io zA<7lVI)9iv286B=8|8ILV9;ETOtqLzhHdC z6*FDa?L~4v(UW!_+oQ34I%oZvRiL7AmFS69RJ%;iCd6RKP zrO_yUWFx2RB5RPq=j%Ahaqt4AOkP8uB2)gMl}_}WfjQU3vwQbIZTul$6kB92aP$Bj zTGbDF^PJ!@S8m0hEKvWs8lcUaQ)>uBff>2(uOV+Zps4-&luspneXV{choa10 zZTognvU>w@FTY(U^oWAzbos>0a^q!mPEl{h9ZbvOR5IRgAzxkp zuDF?0K5h7oY5dw&=3^U1hS%kW`aWVu+V}E6Y>+v*cEL@?NW1ry17*0iewzTq%`v@+ zt?w1Xq{eRzxVA2Ai-y0t6gxEMEl+&}g38w78e^L1vc}!D`Q*Q4>;~7N)h}BY&RbNx zpnEooi<=@^k>F8#$=B|>S>iu+MaBFj;2G>hA!pJE6VkN4sw2us(DN(?@;iq4j(;xB zyozAadeGp+Ha^R0rS<$J5Aji@ab{f#t?=#m!yB=ohqQ=CWTt)gAb9x=SEU+15Eoq3 zTZP>Cwt~Eec);Ic_kUV|vW7C3>w{d6Ee+%jzIW5^ZIj*16(_tGdef-b`y~Ix%Ew@) z&fST8d(tP(Stp(THU zeU+Z4ARTdX({8Lyg_igIEtuPkNj%ohSj+8krTRW&e{0 zIwCi?4x@6O=uxdz?sGbT)x_O}_125&At$(hv6D9gA;{SQ|_|7*0l)Ji#FBSGVvZ+|aRlQoy%;w0$G!OE%^M;8T- zn`6N>`p_NI&EE*nKO_K3+%v-=VF4h=g8{7b`?K$tTV!;6ZzD@vfCBh-v0|~ zvOZx*fbyMpclv+_w$pRv-b=`t-eldd!G{EICm@MF6d~7<=`Q>lu12FoDWcIM$fpKd z<|g4D{Cya>yPlXh^EK^!#kGgCU-g~9`$zNNcSTI1&&tP)cJJb6L4sd*)JjFrynZDG zO6%6sCbfU8f`-DNju*VuKbcUe8>;)5S56GX*0z6uNn} zcnyJ?|BYOFbjE+(toc}~RA}1B;KJVD)=<2IVZPhy@Vn3>B1&GYul2)Q^k!4vibyMQ za_nw;+uCLc>^?=`28%~Z2N8?f2n!)7dT`N8XTMR}ErPqGO}Kua&|1#9sAv zn?6!ldMV<%N_&!X%8;EUvUbIir!rSG;Y5hD%f9>VtO8)iJ@@g84Xg6B!xkj&{LV!N$Rf%;v-T+OofU}4B^#RNQ?~T}bZ{Hu=UQC4`89^N z#(7}b{e9=FiB$w|KVw>MI2FzUYk_!&6(cdd6Z}`L#yBCo;m=QgPi;YNUPIw**3T2E-lBbr z;oTclFobP+>tXx2((-7%g$rdj(QDJcb1o^HlA`n!PZ=^|EvO`jT8&oUroooI!)4PV z-iFgVJxu-rob^0Wni1|~np0Lixnn&EPH|Ro%kJ2CPkn@j=O;tt^a!0&IcYf|cmEkF zeYs2cF3ksTG>RwSz{o!RV(*OBNnfO|lz&hOfdwyy+4T5Y^|je1(|5@RY5!oO7s3V}bD!!&l5g8y zs#VzRl(X@*!XU_s_^DS%#9_H`K}WH6VbK8OA6>*}doe!D!SgpkL2VE{a6Xr?u_Cb& zZJq~Ar`;)(az5pGzkjgC#fkVqh#b)p z-SIg_3H(MbJl9U!+}wN-^X)AIcvGMuL^_TNbk~MczhTBhkuGuxg#!Q%@aL|st{M<8 zr*Ng@HFk7_`Yb@HH7HV2wR0w~_Y-a#@Bo)Lfx;KPW0t25b9bChbIL~XH(07twF#D% zm!%sD05;Wu5q&L-q7Iua=@bINkh6VntU6TnuA{}~$WJKIw*iZcACl!xNx~?7mp~U@ z;44>mUk4Wd)jGbF2M#H(n@`PtCZQ0OYF45CP6U zj#h!SSR1%4s7@{tI*}vhrK$T)uS}IS+}W#WED6~>hS&)(>Jp*rDQWq4kIrVMg$u6D0xKh;5WJdAhs}?d!V_d1WPY zG4ZE6!4>O;8k+0Bl<@Y$<)#OUQBEkj*lL-5d9R91vmHQO*eJm&f8PbUM@KW*@e{sH zc|lBogWEIu7xMTmTSiFtYki{RZcktPiWJ`jL^xlORXe2moU2DpfT9-=Ds85E)X@K%iqs`X9 z?CL7_W(pTbg@1uD62VyVT9bB<-U%UKPu+hUDoMFO$9IQkvMOJZsfD`M5~abAYp-Ut ziXwNtsZ50A3gI-2yijbfjPvmpeC482mznhgXXJ<_74eI{F;+KB{KO)oEa^w9rzL|KKjXVJ;_tXaR5J`0r;2sJa$|K6 zYRUifo{4~Fz88Dz5`Sjeou2*kfFIMZGt6(;liV<&$pw?v$T0v|?-RWiD9N6KU`}Fp_O%!g0Q)ar1;Ot5& zubZ^AaraVN_j~RVaZ@O9)^TP6t2Dg`7zC_aoy5PyyRIsafY6dFAoY?tB;>*0v#gG! z`1dCI1E&;kY6T1&(FO0la`CW-?UG8Epq-H4xj;iD=g|Jy_BPb^0Me1jl}<9*wJ_qh z4x;VL7eJ_IM!@1_ORr24hDIPb{J%Oyk>CXoY%=>2bAz4)Plw^h&*w8L<=2aTC}{lW zL^!2O+zR|6bPAE_fe<(mTv3Hnook+eHR)eREj2W|i5TLnNx1b1YOjcHL_MNklf+&r z_%T-?oiaUoqnt_v({LaAC>AG)*)>S5Iu1iXxt$7zPZdBSTY8RmG;3jCuO(5)LLYuB>LcEe~kQ5{g)Wzq!m@VD1B3?B!wI8 zez+H~sD3Tt;s^p>VjzjuMe(M$@UH&{R+e)r=vuCSh*FemHEP*&k3>P+Ny}F@_3-w{ zcfLofx=|!JIKu4)!%h2}Vuwi=qHclY(>iT8HtZ*q*A5q^F-}Gc&6juh=S>nF?`?E|FWdeGb&U{`k7Vuo zs%Z8P=oxbea1!1Vr00tZ)>xn*05A6Qx93r=PQeKtlW98aiK}d7(67m03z?~{UgSyG zSA-rY?5$_QUJ(TPxAS3&nw-Flp%+O^HYVMO(3C=6Y07{_I@AvpUr{E||!Rr^LuNhl$pFtoIE!yu&+BArUtkOIPh(jbWR&>@W?AtfcH zbj%3IAksaQLw86B_vQPod;hqu#ag;ta}Ho7i^Fi>oOS#_^^^Rv*0mpsCC)XbLfrNlI4VXt?d4 zTTr|ue#FV}&%MloYqVYw+=q8DE_LJ4$c`1n*$2l6byGgOo;xxn1O+99JpczuI7gaF zYZzI;sQrOgn)l6!pH1rYc2mx0nOi9z#f=*mHT_(-UF=|m2C1p@IT0@PkimK)a|9`JqiI57nq?%>U9 zHDoST+#^Bhlywt~R=%0K`UE9e5X}mMsl{qg|2_AMJ(SqXnMTls%<8ze*du#1qJOP^ z?+%7B zTS79_GL`+FvyH&+tjCDlYQ>^G<`YN|dq8&aJ9Cv>n)iAc&IIi_&`-fqQMJ@6Ea+sY zKW?Sl+CZc*or8dwPe?{EoCjH-uLEhCnrDxb5}dt&x7& zT_MD~;z*13e>_-?&PIG3tWq|o7jM?}m7abPe@!X(6>l21ZC_Bugqi^~#oG#t)FO7i zzi;Jj$gr#6o~|~tyXnMt^zCh9ni+sri`vQ#oyiyHo}Sj#*M~E`9rma@2)>(X z>vC>%F2qVUww4wxfWr(UtztmK=9HP_7$Zcuf8fX>Au%;vKOQ*ec!N$-5jdK_f+#3b zWIWSXV)>U6VZ}X`i(9&C3~P3wKD&ZN6>7cQkN6~kelxW=(4zp7ssUxY>+Dn|7KHFr zKz@M+Hlv-}zbN^z`d-|_VdMXl^(jQ8+xU*bL2EF3Ft#OG@oj1Cm@h&IHWOMc#yFzTCjT+!w2!JF>!LKw4~l0q5Wv(<`&;AP)~1c*xvWaFKVDX3Z9=VYB7_!4 z2y_XP=DX%8z9Uv3WVU}0|BF$nBJ?3s4m8H~!AUqEN}BnG-3uRw3mvftc{OVL&Hmdd zL=IhH4`E^5CXS}~qZ!QlUl#0|;;>0uJDks_*G`I(x`vdld3EA+%{SiY@ElZ8$_WcW zrW5YY@{7d_t|}F7kXrmHQmlvc-@I%u8n`-@0NyO|VkH@2>#sv3D!)r^@cfHt&&YEZ z(?W|ktWhd{ZaVUI`%SHnE1xKZgLW@gRq{0wTcdasB=i6T9l8)w5a~Jy>`E(5aKlab8jYuZE|(eTsG>dCd-G?3)qOYUqzY96paeTzMpSn@x`yD5TPb zYrd&%Ga>Pxd;#J)p0Y>kXm>e4HY{MonnIY1pEOnxUM!Cz;{MyqjL00)g|TFn(wH zXA0R}W!qoG>yMy_yJa2&u+IfAwktj>X<+}2#YaMiEhB~57dIDo1;FHrt~#;e84r?M zJ9@S>_~zS-m})b?uGA2ktl6O+$>}ynEI_WpJmts&<}-cdHWNU_*_0G=FWg|I)cJ#9 z;Y}xC^R=d!{kzip!_)Oi8~*Nxo`Sr4yVT1^%O2Y~^74z~rr8^FG~Lg!euO6mDc_Gp$k@ZVX+ zJG*XO%j$Kujxcowhuuix_9pN1)gSiqH^FmI<9L4-6OQovI&M8gXcE-)+rP@Tv^M=r z^yt3rgJ+KZYjWw2%)MK;{!qUG${0#SB9uY+xMPwKrp*|6a1#gpTsTPM9fK_LHO)%a zLb$0psBgcXgYwdLq)K!4v~90e#Kc96TiWz@^n-iean?#Rrws?Rrt8= ze6OT2C`z|}X}#5tLb_Y%uT zWGMAYsrj>gx}uCSjfqm8v{&m3#Bas$fOg3O!UsRb8JjvSKOv7JM96#Hdo0D!B(&+? zm1eehe1-cSuM!7qq+cWDc-y$fw%0%CpcuFXl%Vu2Y4zOXS48Xbm=#5SZwS=2ejs}_ zuUvpUY##QW_672nAhAl5Vuq2yc%_iG%px z_~h{@Xo!T_jm;YY@h@A=w|kGQf27?hXtmr_bZ1>5jQ*&T(U+!Y*);MP!KT;95Lep} zeA<3-`E-eJm{rpQX`WIEd{w;Z{Z$qp8(>a?4f?*yfmvGnneb=a` zR_cB1AiUl#*OT-4qoY@(2HNtdh{td9ExYeQ+4U^s)L(Qi0GBYDi9A&}Nra3_cE9^} zl|3_`$dr4zgFsaXl%<{~v%*fDLT3QHrYPF;DBrV$(nE!l@tiq}qMfz9I|o%+C1?PP zj(kcOtRo$&BG>-33-+u{KlrH z9PE^5ix=<`QwEU-+{P-ld$tQ_zfXEXLBNdTx4JTyzaBsI4$eVYL`daE>>?@mP=5lR zl7Gc2ny1A6kNPM8Yj&9TKKIwMm=fQ(@1uq+w?OTPMFuQS_|6sQ-SQM7HBx^g-3q{@(9@20xyl<{t47Vz#zkmJ| zAq~xu%xNQ{Ygn#KC)&|yp*xlROykEt?wcX+q^(e#a>|&oPWQQWWGT$-dEFuXoilG; z7q|4~C(cLjnctL-%%!||6HNCbTbd?fF+w!PRt!RQpaxDpx5XI$_WRGd{h3PQ-Cn`7 zQdpO+DDW%bD4}RBBrPmG>~fHv?vs?|AKoxiqoXp^Xj0Rqc(USHacMQat{rbo@r=z> zo#oHx`NV7T$Y!ob@^F_k+j-L^_ohs)S%AEZK8iv($Yvnab8Y@{cpvGCcAXg6qnnE} zuSWgeq&gDt4bOz#8($wZ&~6%AuT1lWgdLx)4x1&O{N7Qr7I$jSe0`v6B~B?wA(LX( zoJ_NBq+-L|zgxA$({Mf3CCK)k8lux{%ssy>^M1~a3t8{Q`fySOUwRSh*XV-y@99Bs z4aV2Se70eqZJsBW9vgms0kLr=;@R5T zGGBSAF2|@Ryn|uOE(;DjbWhAd0p$=!Xgn3-w+|7m^#yg*vdtSSjs0Kt7`nyod;Xo) z0s*vEW98N3DKcaC$iy?mhRveQu%zNAY~xL*%>8#1Sw)IigzO$WOK>tIwGpud2yfn2 z^3dzlWpjg>s_ZHIWjKf#tubwOs63l?nIo5}uZi+xIBI@5kRr#P_K|OO!6q~eh@9k+ zOR{zY&527Rp&`2MasU}ih46h|y5XE(DLRy<;(UZ`Mj=Cx2%O4NUJ$^d zJb5Suk08%+fV=s0AZr5^_IvvP%}TL#1RY0K??F50He?N**U=JfPR5V)>`r6VL0>|a z)~sC?3GyF0)bEdVwmrXZ(3?LM&fSYiX1w`{;;LXBD4-1AC30NKMd7mt%L!Ysp%dGy zA%vlP3%3)0pE9yZMr^7-l%|E5;Q-r8j?TbtW1RAKqo?eHhP=;s;>Ol#DW3vDiPu4C zU%RFKffavXv+BEeOn3FgNx`l!DOUQMr~EsRbH6KCUmWqz*PFTLufQA0Ae;ah=LJo( zPN-o0(rSfj6+ml6m6X6^3Zm!p*`+h(_#b+|VKxN8+6ZsOStz zea2>ub#DMkv0j-h^3Crqiew@G5C`}(JPImnR(RSnuN$_u_1gO}(%>ysoF3gYN86J~ z>W<(C;Nff;KgFLPlpx(~i7;#!=apNM@z6hF8N}vLnIU!B`wO>m0X~EfNqoRX<$$;Q zwJyQ=MzKur-S(T3yX6B##iEJVR|SP^VRV%Md3OoQk>H#0pr1+&^)3+3)HSb{U=>1M zN>WbQOfkc_+$DA)lv;IbvJB7o*{l!9xvb6Jic!MYfXP{KETlig)HAigQFQVePF)1g z&MQ*ThucLLw8D*mmET!FNdk^&jFh{J1dA^)|Jf<0U zQ;BIK>cBfY3Pn>&1Iz`0~MUich^nAwAn`_hE|CDzdm$bHK>}cfb63A<|C=|+Nk0! zS;`mpc!6DhNkTl3I{+hIi}jnS9p;#&kQ#o+ht>;~SfU%(7*Lb^tx^{KOnrCEZ47LBThPqf^5=+6S8<(deMdy6{lyTaKN4~Ns*k}nlTuz{^jF4<|V3ZGNq)aDq@3t zkANVuL_iH1PE3}SB<#b@(k@K}y>}`>G9lvYgHNedwRXB?2;@m@bx##b38evS7`{jS z!1v}~d(erWa6o58A4M|NA1ouBwjhhVnOi5_tr)8XK%hP?64bpvOq(HlZ+h+g9Kt~} zfM8qP76ge4AzEaNp!Fx}z6?a7|mnM5x^UX3UF*&cnVAYfgYt{kbqfx%!8HtS~Pn+j7t8 z!?69XM`38nIvABTX(yM>E+R>><<=}#Jm>&6SuKkADd}e8>U&^BE2(`jEWL@z2_S=s zqgi`f1dvJT--q1fcFBK*d)}iA>U*^<+0_!NFT9OI-ryJ~%`AG~mx0U$MUefJ!;h~h zVdAwvOSXt~^0n(?B0Z3#;>`7`L%-8Li;M+9N9e;0AvwfrD+-CHbYMCAOQ!RLsd!?NU#KLIClb}j45cu_zre?eU?|yS z`|O$P4t)4#h_7Ep>HBblyDvp{D>+9ohj{7}IagXT9wa+jk1L6^K4nb(M&gXI*4`3nzBJU*)#HYuer*(C6J5 z^WU|0qu&9Iypui29l5mzS|iPDYJFhSiKxWTUCNURA6s)=8QNxjJdjqJQPgZHODfyF z)yChKdZUg(G#(Cdmw?+(A(FUe+{||#A9rWG^}PSfLAN#WXvP;1R1dOxksqdL>3FYE z#m=}#;q|H<`;Sdcr~hMKdWIR}7QZI)Ex7v$)9YD;Qld^B{c3O@vb@K~Kf#4O_dz@t z=+jhIHh(nNaUanie1*fNbJBUYOi z#uQ5Gy61C2gDJm8yB5LBLqfj!#4ywr5C`t~N>yW#+!bLxYux@sMAX)P=vQ5| zYNgVvou4w&IZ)3KrVwHkDYWjx^3ONFJGD37@VRSr^WqMS=jdWG(}>9k!N!J4UiNw)&;~X>FMQNFn1V*dEONs&oAeB{`b+ImR50Ap3P>o?)#+? zKMWy87vlzPz*Bcxwsv03QS0WtUO7{X-+fY*Odf9zl@jq%Z9O7qIHjMiw)FTltavzN zt9vGzdP1&6AWvW#uKMo=_PiYPUNXXGQs{%yTnDq#UrKbFbvK<))QSaS&{XWX0h>Jd zJwf+6s5z`>NPl*&;DJc3bfeBnj6EOtt}+LvTVIWS zDsCN_qIX*N+3#(UJQ}e)YIi;lY^;;;Y_hbt{Dn(|@ZFoVl=WPmDIVLdp-KNWl?li5 zGn{l7asD*tb9z$i4XIxc7ONz3cc1YKc_22J>N5hnu??Krfkn~i)RZ4pRp10%RmFLF zdYU$jNl9cb**$$y!D;sBV&;4bcjn{_*T+U@1T}!sE+fZj_t-3fqYffG!H*k{K3}eB z+bzrHHxKNq0+*&Ygm6Aue*gSbEcf{4x8?M!h8n)j^cNw_34H1&{=0DC zotpdj8oE~wN)A*ma7p7gUhI*-D55A)yYhT9yS8O_mdmVN&uY;0A5>Y>ld@)Xw&wyb z$dYu;yz8H%mwEV6HpAlNjU8X!mXW+`@%x=C&o3vUIbu5HVf7L^IVEFg*_6!WOh>s*C zQ-dl!*7+IgT{MRCe4OGp zuSTb4NOq#BM92bK4_J9@q4Dy*LKK|zqfWx49ldqsFPjRu$Vw{3N=DCl+3I)_-ocJH zC+X(hoSknKY`gsbqsgQH*qflk(zK*GmQcl=3i*od)zqsX;54#gFwo^&Do}Kf+voXo z-P6Z96rF2woT&-U%!-_bo^HxLHXaRQGSXbz8s6B94ee@{l(wOd0-J&6Z|Cqorw6`? zmUFvLTpq#xgXrpU%5N3F$wOQA9}}K+h9oP^_4j~0O#>5pIHbXpcQ1ElMI0^kn7qP< zFw-+}@FMD-&HYy%emqAjGTa<>-1)yoztotACdKXobBVVQz0|TVX0K__+!M-L4_UP` zp1tgocq(U#2!lAHl@mN&_g#x;C@is;Qxspy9KOx={%kyu$BEgksFCC~tgTcpJjUTY zQ7H=59iS+A;p|-2N3>c+@LGuXwRTH#s5=@D4g8J234Bjd&kT5O*7xdVE6SrTdFO@6 zX&Rrco`37>8{r;JAVLPk!G7m1S`$Tt$-h- zZp2A}L9{1i(e1*LlLs?Y) zaLBnby;AQ6-QoW2w!ta3ijSYUo`18QCMy1Q_W$M%sh8nUSEAFlQvG-abE)T%hiw_( z^9-AHzWNHi$~Fbo`%m1IUSt*4gUFp6sDrfzO8VyN(rjK^_;0q<4*peZ3pTwh`+w+$ zovkHOj7v7P-04q3$d@-yIt_py%$?zvtVb)u7IozX&!2{HGG@q=2p!`}=s(u2;1v=2 z^y}%t%8R!2OES?V1gd8$ z24DUo+msT@3{tZs4j{YfGM4N}1u)dowLl(@oTF$HkW-AUv&ept8?_+#Lhz*-;~iwx z9KZJGXZJ*w(!Q<)yEI{~$?Q01UW>12YVWfr9~t7v3+H!EW>Uw-#<;}JCsTOzJ0qVE zCKjr{U);`fbaNZ@CvBY9lq-WWf6D0oww}lDrJ5R<@^Y-)cy4N{Z=^)Oi=6ZJ>6ak= z7lDsPMRfj!{tGFrsE7rhp98|Upl7TrU~sY62{So*Eq&Y2s!{L1v-rVtNSRjd_3x+L zu`>VdfQ4MC8{Yf%(=TB|`O4Z?%iIc+Lc4u@4>Q^f?#jejSW#B}z=~v1x-b9-C(*Bm z3c|Lg+oJOkQ5xzmkKYd->Lj(+Xs?_6Ym&tO>7e}K;~zku;9^2*zg^U_t5oR&5CbDI zk$m|9IO&$!VXH|d?tsQG(ZiA7CjZus))%nmQc}h&yJ{2gADFv`!j&CrK(!f3$`ks! z;<74@?JnK=;kl&nb)y>F>xQkMlJ75tjBC1MCc|XrJu;@W<3BQPg_{?X%7-2;JOo>$ zUPX#~=J^x^?+7x1QJF!ncpOtO&3-2)iDL3Va^_aiSQ>6h&T{~xo^}mm( z8gDfYAg$+m!I8mfuD3W4ml~MbOz~geYKv2qMKARdd--j6y8lp4F4uYfQArS^!2rE?U1Q;6+~_PKRpkkvy6`fK$n|LNSP2(#xeoS0A##PJQK`efA*l z?0isN+i{;RKXs$|!?XZLoJ}QX^2h^y%YIDiAiiIbr-y)gmYdw^SmK!pN!UB>dSL5>5Djmr{{$2ttuf_HBLJnsT+6{`ya5&u7JktaD<4Av~x4MDaY9ss80M_}7!T zmjV9WyWh60|4lzZ&dyZ(bj#ZKgvbB&>9^n4295?xV-+ zFV+M`S}Gky%;T(OLaG35d+Ogkm#e_cb_UMw&Xv2V3LdA-C3qN zgLsc!zJV_yvQ`2{OpLH1X;cgPk~t1yX{J96&eAE&9#Py%I@cU|=Z1pbY^0gs`)AZW z)4ox2=QT!X1yPY!aBP$!no|0k;z!-CutlFvl}V#~iKa=J<%^z~CQk)wFH+IJj^s~x zvZ+P9Izdou2C?N+=E*pyw=cJhJ+J++?`;?-(v04CB`2Wg`wJMiLCii5ACweIWE3%! z>@dWP@b8D13}k>JZ$&2l;Q{IXdp}E}2U4#u5lLh`4VS&Mps&vMGiWyC*jW^|`o28# zuDkdQemN~8O<;6uGvYvI$Ho?U6Cq>`6(+>?AMWORd&JInzq@Jvc*unu9wVAZ$hG(? zakXWY;e!!7`srLRZA)^pGiOKXyT_n3t)PdgJ$FHjC$zN&_cLFLFMoWF!}7!eDcG`u&TLh_8L%lPj28PbE2MgD;MZRE#ay=#Rd@3%5N zQv0Qlmj@n9LYptH@c_sfQG+V;lBShQkz#ub6lJ9(>=$wclOA>@H`Sy*$x44H6c5{3 zb6UT#4hJ|t^Y>vV)R1W|A4zz_P`j!iL2Hz5{BXKgUoDNDB~Du+lOu-M3J9LD#NRS( zfTW{vi6(KzejsxN@Hzj9zI1GfK~)3;L%-o`Lxc0n5>+yNiYJt^NT?_`LxSpJ5eIdw zO12*&UL-dUCvR%KyViJ{X-3H=DM+#J(pNzw{4Y ziiNfoUfmZ#0ga}Sovz?CP)n9U@_y)P=VRH?=fZ-;i9&uvc?~pQcsT!h)U1``;tEV&?r@c)Qd+_(%s5T@L2un(gAc{ft^TTcva?W?ul*Xp>{ z42Q2t-~L1EAxP8@IZcTq>nan1zu!MB9AFFzVlYT?J-0ITi_X1l?W-H1e=g9<1P zuGP<(UAp&nY@Ykw5BmP33odW1`*KbX8*rQ-mujmG^@ER5V)I-GwP|L(RArGq$ld0g zzCSf1c}8>c&No+c0)nBI_c|3K4}^~{LW%n;oZ3_Cz)(>tP%@!u&}pH2R?KTw?CoxI zbqnBJ-Ay#2+fJ0I$;iErCK{4B{C&|LoD4WkNn|+LFRhr+PedN9!sz76PatoOAme@r z{rp;G&m4LWu zN-x5i172ih_6|-_B_u4e3Au*p2>HlLc!L4mIdbrzV@8T-?n4|5@U?im5QX;B_~lkc zID+{sUHP3G&PJqrG~iEgrqb|yi00d&ls*t2f+gK`-|lPi&cyY@mFDQ*vDn zDYE<^OJWE$UO?@hFgpU(iS zd0k|CpFECS8c-XQiKT_iadTVK3VVa^~@5)_$>qHz-?sPU2;TA7Dr9+5Ws@5)AB8>_&TWSgH(uYFrZjQ}E- zbgkmr-D#(Q)4&)hW{AoO;&8TW?^l?nu3_#VWPoPPez)OvXBzLq0o|i_Pa#CcDGW8a zScr%{O!g^$Jg><0Lz@7bXM)xQy6%j4PcbAaczywa{L6r*9NVAk?PiAYRCVTOo1aD& zj{ObrDvIL{7U^x6!(ql}M)}@ZN;FeEynd^lMTVtn*5$bOI_;_YCys4^<2W^v5&+nA zYJn7g8&MF;UY$b8NezqI`yi|l!a~rhYU4ZiFGL7efn4kwi%JX`iC}uD>G_Pi?Su>K zIf4&cU7=ie{E&Ns-!@;WfiE@OH6AjESBp?TaA3Y{_d7LJQX?leh%fuM9 zhfkF}%7ULpX`P|zU^w{}^rTQe{m2}r2W7w!W@LXWMicB;kDuFfYUM}ioKLZ2>httG z)q%V?RBm-acL($L!$#V=Ew(l&SYI+}qTC%XiaBwf63ZE1Jq4Rt$_e;(p$jnZA383wR0kDnS#vnc1>DQ%^w8N;Mf}uHj$?n5K6WlacBea|Fn~ww{UJySoV3;>y(p z_@c|#g9(GZbgD9X^Kdv1+S{m?)|Gru4RF<=s78d+pen^KUWsBYM&!(=)4oQe`!<-c z1${gVkOEm`Q@aGzdq{O8(+E_ndj4QJ1I>zzz<4Ce;`>vMW8hJ6Ih=oSf8?4NDJTV> z>26L2y}{%z?Wg0*yYz`kzO=E2qRc*BKoGj&%M`#2vqacIK{vIvK(kSY4)_#@ZDyB9 zq_Nn^>Ej|QtOHagl!}}rTw+Mm#?kO4B^%I2qw&1j+hOHIxj4+las68^Y44@Yz>6VC zyrv1+u3H%Fs5l}VJ3>a_A9Duujr+Ty2ttc$E{l@?I65j0PDaD_?-Stz8dY?%j9&a~ zqusD_JTLq)y#8cMZ7Y71u@-*3;}OWJN?b2uH5~nrRjGp_%|l&Um%DK4^^oHsIoq_= zE`1-Mm8i~%W8W?ZU0b{8r2=%`9<*$=i;Vpgs>vPh`Es~>2T5C=QN|0&Rn^=Vq@VoR zDjCXMn=2N-Anw6Zh36nmnR^eNEM8+)Ru2^6260q?{UeGI_UdxP)oP!N=?-La)kW_? z9PrHBwP@@#$NU~N;bE!8tMY(2I;;}~Gb2B&dRyt-Moy;@!2HQ+`4)sa(h~<6^boec zTh*p9j@%2@iE%6*c;z8HW5PGs;0XBSR?tYAvrdo1tSIrJyRJ;19+^`fcq_*BD^PEIQQ95* zX~?`}fw5or{Xx4=l7((bbu=wV+JyRrr1n8{S9N!uCaAvb*AxLF(B;=XhLyGM8V7`3}hZ zWktH|ES{&DZ4aXtG`+Rhk+h(6NoH?}p-auyX48vxc_4%%^f07_uEp#j_xyp@Gfa86 zaY(i3Xp-pFDU3-1d)a{VJC?rsb5 zzm>i)*4Ys0iH9^n|E6kTQ{Gt8!q_Zc5C#($<2+yFXGN4~#9hgNba!jPUqBN^hzvy?8$`A!=#M*9weq zkV{Se(B@=qYAk-jCLR3QZHFG6oMsSJS9i_-B1WONt@(H9t4JcPn#p^CC$p~ttH`mb zQh3#}PH9MlzO-}HFP!X-ysigoafj0~Na3duZx2l4V?4JD;N9bt zZSMulXi8$%2`Fa`9z{x67x)`D+ySf|AaNo$R&KM9ZlXc`XUgpy~X7=#as_CEIH+H>_HaVemd675DgpFR*<_sse-#9ft7P7`6ov;=>KxjpBQd~ zT=YZRnuncScwG0+{T?YN^u(k`LLS=bW@Kq-F|oBJ6-Uw!Hr98ylQPz@C#b`2t>X8fpY%&^?#}s9=JTTO=zW6$4r%Ri z>0(0Myne0N8l4gQ#69sHWE0+!mNuNS!VH4?V#21EIlzW5oAd8mVSXQ)C74NTa_Oa& z%E-sjci%ULj~Ktvu>HRORRCD2`!+|>r1?hcFUHwTw*6ZFzgmFcx&y|o030B#c)x00 zJ!m)BxI~qx+JX;V*rq*>YF@Y~kqxt;2)J8jxoMQpdayweV7cD%*sia~#L04H>Su-N z`UO#3#8b&=O?JLfZ;5f$|8(|b=%T8dMmT1Rv!wAdxww-KUKh8q#8wO@M(gGQQ{SDU zWF#p|aygCdpVCyAH3SBp50Ix2wcaGNh+)EyZnZ4k($kMrV*)-9>8+)5S2IeV%xXk* z+LDw$n9ZkJuv5}KNOA9OXDV~F%Ek1zL;W(0zklwmCQtj_Cleeaf`$p0_5jzjZa(jO zrUS)WRV(eyiN(aDFmsgzrNX3o59$z)-iIaip~urdfb~fU6DOm@A5Tc_*p}!D#kO!yH@c~_Zezx!ttr#htyE|g^n;bs>+!Vm-I*Ob^7k~E6Im`TAVjC z#ZyY>?~iLLWrBb=-qXh_KGE{paK+>E%2SC=tdsmU&r5p_=Kw)dij)SD!{2QZc6QF9 zV+R6O>~h>Xag`1`uyjHqpNlU3aoCN|cUtdS|0M{LJ}Y`!zIV`-bjNc{8#p=78+< zoJOaFKq>~vjeuCv2wZkJ`3+L`H=`?V!BIh+?4e$;VdEH2)?Jde@D}zcbGBNaJ)6O+ zJ_Y9b*{XjLTVkqhb@D89-}32+QHkX#CNg^3vDxLLd_`+gr<4x!%L)@-4A1IGmy%zv zy^7=$PZhoLnegg5wj9_o6$pCHu(xB|;%GXMizb$Z|Ld$LC3Uk>dUK&rzOYxw9!Q7woFH- zM6q(wmv0aC`@hRM%r6qzp8-n1z{)!!_Cu`3`bXW|4XSam-~!p%g~+#i^f)A5NFQdH z1639k0vqyAicdZxwO!7~Zn)G1uZ6=$p_06_SmSu#8bhcJ&ncde+ji$I)c(VX`1sdf zzjtxLMn6ui#d7m?br7G^cO(D8Gad<7-jjb9lAT}aKxUhVvuodVW}AtYfQy~5r4bgTqbZ}wQc1t#5kAL@Ot8XW6@E${U za;^3@`A@EcuLA|#nN=I82Y<E1iKA2cs&4g8l-@ePmv(SF}ZoY$(pe4DLZ;%p$e-8l8L691|-Tv252c1dcy!0y)I zx8CC1z)wQQ1cO#)F35$+F0$IdX7M>s^JqCDZVmrb`OsnmSw)bopu8kuC5IG*4&ut- zV`gG%S&$*7BdaS?Uv~wL7l<)JuVW>-#?YE`1FVPp#@Usk*PwlXN@b45+Mp$v z3qkSXD;ME7_2BP`IHbjON`_)ktFzc3zZM&&P0^EAaiw3i(n~y>^mF!$WT$AcA+W%18c-Ohv^`$e<_vBIU zmKZ?*y!KDz+%6kW2E6M0cz>V)zA;UokW?I$Y zYmyqllDW_TPKJLVJE+6xN%*)37>JC6a|=J*g-E>ca_!{Za4crZO_ENKw_O#h$S-j< zj(yE;HdA@aHhJtA8HlBp>JqJnnm5U)Sr-X~HK`l&%r4v}L5;P2wLXp-gQEq4Ub?Xq zV>CpufgHh?-Je!RY`xEf1#`uQTJ_o@i5fhCu@?`Q)=XKZWOU$^rE{qDZH1H~-IZ$x zac76O#p$Y7=5a?HK1{*mf0?Gm#-{!{G*e0nW_7YG#eGarE9zLK-Zd3#y zxQ>=X4#qV|w3}INA7%v*g~mg(Z!m@oncBZd9r>km(Jf!zm{i^9G~}bi-^-@HPqcw~ z>5N6;0IkG&qRZcaxWktMDP>_Zb;NK~Ql*7Rk4R2wiW*wRani)Rf98n4&e4*$xaBOX zE1P<=u%CNs@K3hY6FbB#ycI{5*s6;4&u)PhVb^?W$8DJ0Dmm&Nc6Re2MO)XYpu6tO zp3;E6M)zd$f*B7%lB}?xutGh2K9|5PVqWUX1?OB&opk1l7z5>UL}7b20@(|_i|+S&txQgXBe|`U@}|uY)Yd6 zMp!~Z2d}l^B!L${i)sY7|0)%nl9DbSG<;*!>BUi4EiNvc;!ibLRv0p?`57QN^YrR{ zWVePhG&5N91FZv>JE>DqHo&KclU~w;i9Aq0P(JF;Vox;nvo#OMVaIYQzLAy=Z#@B8-lJc%eA_qM~CRa>Z zyPscEW2qN?cHKcf=V>PAsliNjwSlvlf8CCsm8x^Uf=?%?Kuog)85N`-^BYcMI)+c@G zz}V%ZUd`n~6_2C-;glv26wEH&Pi)=!mDgCNtOG!Qz?MRw%*tc;fls zFA{Ln?KF^uYwMFrVAV_-oZKEP?`3^&;m58Fl}154K2MVS1l>iyK7YG(m3#<=oMi0# z5b2dZU+xOYD|e%l&Og!6}Goe|*asekoVS+jZXrXV4gBJwqN0%(UMt zProP}n2Nken`~F~{PeQHDb_x*c!CgArfyHuy8nx2`e9X|yrgUN-AV0k`-|}ETf3qH z(j=${m*IQbR)Hl&FOpnd?d261=lA@+>)sjxPz4sJy|Hw^w7y-B(}+8ml+9)K6^}f;RH|%PK681|g)|u)?is|L*kh{ij}c zQ6v$(^&y3jkCa=fvd4XZhx~Q{yT#9>3&HcP86*5&>#gQh9(%mDV{s`HnOQhW+{iXL zTBgR*^6+#M_afqdNkmpD?xd7y%Tl?EqS;z`gXWSM#Y=Hc!hIGE#p{WImf!fhm5lH{s2h&izn z2A++chv&T29w!^%+Ya=b0U_W%Kr{}?>+kpqk~X|6a@>$i+O;02^ub3^lr;k7D^-QR z%Z7YXkz?7-^hx!$nEg-37#TvkDXOUMXfztFfMNn6k^l-1@y(=I%65E;j{7=$Cl62l z5nqHYOEkB{pIX%_1vkzvpKRr^jxIQ`Xapz`g&LGTeQ?Q^>Vke^K1r6+_11(@J`#lGoGww0D%6Mg4<`=$Mo#HiZXbNKsW2MlLxTO(zI9mDY3|Jh zkU87kU-gZ;@G-nkxIcvHp`=SXqBA#V8cJpenSag^`LgV$)@&V%WD#7&Ka(dYV2?MY zPXZ@8{(&I#n;0H1qGN%&{#5Vb&Mu$&Rsc_`ZoZ0O=S7!6U^v3L-4nDvam~ds)8ZC{ z7KC$Dwl~u>t?#pMYV; z)&!<%kI}92;)n`d_uO{K4aBSs!|;M^BwPgfWb#{w7xjx3GpoA-X2Ytz2_q4&-CH>) zV@Y8mTDSn&jX#h;DAXqYTZ+4WRzlh>tR=gA-s~z&2GQbZ*J0&n@^ujQhU(%*V~AH# z%2c>vIH5N}{QOs6jb2-S?xF@2P}84G8;p&Lseo_a30NW(+|%}yML)*isqa@bE+rzd zIW9epxi{+Z&)k_&jTBf5su>jF_Q1R&&l55?99OYZ(ulzlguta-pLM- zKo2H;Dcvx%2$BNQ-AFe| zhk%5nfOM&VNH>BKL(I@2NY?O8Mgui-U`y-SguX;z`k1ZX~z0D$uQI)!SMde!YN;5}AlV=SmxcLgjG7xqe+V4o|HY@}svUKwvAE4;? z8UHN54>(}npZHM2m|7!FeeGo7ES42x38o~Vh+fdu44rF{^02r$S}5od@0L(DU~KC{ zY;f?R%E;e!I9DU29&p2&8ErV)7D_4uz_!`C_x=`+`suiSN6>mK+{>RmEd?9K9HhlY zafPDKmNJJKrF5)aldRS2!RW$E&Oek~c(q-TbHGx95~pV=Aav&#aA~SQbV|f^G6fr) z?hEK&d=Tc|Mahn>$FiAMuMRXE;g3S?4HPS^NI3BqNklPqV;viL58H!Ed8Ozm{>Z2WeaWswUL_ za|lj!*;d$WPa}cWppx0G9<*(-WaMQg)Q~=0EIfeF45VQt$Gro z3t<1RKn6s0goZ@i7lJ|}74FRv9M3EZJZ2sn_gRAd{s69``@zFDm|&(jyQaH_g)$&^ z$8*C!RwUh4tIg)&`xI6cG{4v#fm`M)L|24IVpnGW={3{FLmST#aiqgRThG8^b&ho4 z>0eJEbF=~yl9XC3`|ra`gC2}<;`4M(!=}=TBeFpij|Vj$@Yzuds=p1geAgrQ7MZ)C zJDNpB8W)TPx(J^2P{b*N`osy5xJ^0Mk(%51%b+5W&laP+10|j)Cm?9EDE$=E?jQbWt%`>+r9S0i)jt;7IO#vC? zbj^45IqNMwdBN_s9PdplNpX9%3_zz-xr3YEHbs8G%*p%hFo48op$vq0Ix9F6h25l|M z$^|*1&@UNcb?e4SQLkKGj$48EGQ^HAtG&6pA@LN1Ox>ZD*Vz1+GwAGcL>!-(H=ck4_6+b(u>TA9 zkC+k$zaB_H1|GBon<#=elD` zaQyGj_H7L-LHvvMTf$>wdb zuo5FI1hR0^O1z%}9?$JXrGub4+~^Fb48tMP*Zq>5^TLA_`%$L5ld`g7L$OUd+lHkQ zX~$`S=32RGrR`hAW22mRxrNO>BzfuS=~Lg^c3kOvW~{*7sqWC9!pd#-qoI+)m21U8 zP&5@}re=scDVQ%$|FR9iwD_99Xp@%fS6TxCi-@D7R;qq6 zC&-pGh1g%CSDIp0bX{26%0=4h81))zp#AWq2*|EqOH@%1wNLfyNinsd59*dU=Tke> zH=fO=IQ6$ZX>RVu8(NH8vZ9WC&7)AH1(Nqn-`WJIvD z1`ovkLh9M@M1!cPbr7JP6b$BD&Bdgsf6DN&L!n%`9?}_#1r;U7@Z4s-iquKK^8V)h z2<-#P0O@_bijbMk*PolP+xbq+KMSr~S2k38xo%AHytzg1?Ot$vBAQU4yF6(M&}15L z5QhEUnvcw{-r!HCtTd6F1b7f)eoB)?;T!96{JiEz>izZ=%emdAD3fiJNs19w0b2V8 zN62>l@fAB$4lUIa0FcwPQb=MI?|G3q|NKq%MY~rOM)S4WX;fD1*OLqv{NL3q#80Mu zi|_GqLXg)i(FnTyg#E;sT8TewX`TIgI7HDa#EqHw_EwWZdiVrVg1SsV`cC~5$k@;! z^OBB@S;y}j*`20FlG@_*sCo|wTC;ZFaGSUK#of8~CNa9V^mq79ZF&!vTS;pGudEJ5mM{TdHloh4mKid zaXZSY92hyr{f52^4hgyTE8mzSe6B_CZcSNVwUWNHL{VdEi+G|T=Xz(t{W#8mZg@Z; z97ag$wB#5uXjZM`v=W;6KbZNmN|G(bYsm?2;bKlFI8E+ilb>vNtV_VzY53%v-=vO| zdT7@{&i1@4cGXF_e?(qqhZ9LPnFzl!eu@J=KDW08wqxig(~xJRuPz&%-$_F^JL;b^ucxNC=djky=)w=A1#=yB49N}XtgsFvckM8! zWApaThgK8yhOaaKdtgFXYg0_|A-a_G z>y9c#ZM19QoHq_~`RTc(DoEhw%u4qw zkilO5HV5Dgng@KqP_8LR0~;ln#g+4)=w#MYKKwje^tTw)xzZ{gNu$WuIYW7#?~<<^ z14ML6x1^ine^dwbF!=n?DwTX_HCJ{_s8{?tTD~a2eraQ#Rn$Xp%#C^puUS4WOdMZ6 z^e5Wjaxr)4+S_M25C1T5HHgcL_}1e#8kMzK1H`>Bb6I28+a}gE`(?$Q_VhQ?1nn%*vZ8Y!b4&gT~v;~DrsJ&mJMlL z4@FygLL=}M^}ASvS?gLcBGjgAKDGrw0K2QBp68E@QP)X zok1mH{}v|vwyXS0*!wUgZ|a0Rmn)bdW0q_;LGr70ov$$OF>grHujk=c!3?gVk+N`d zofZ*Ft7%DH8u^bpp=GYs`6m&kYc&TS%M6Ca@3H5nqnGXC>~kVeksS3>>mv?5%zqNp zLLnmdUxJJCA5Rb5W2a=Tjb#Ar7BqKG5Zte9e3YZ3u()CQ=?*_SbGxAo27Qu`c#<=D zj~|9-Ns>{AOGrxIs}{Yfw;z>}zMHX&gZJ~& zobgO~xV)5G)lGNvi!HhFm)9|Mo za<7|{>3WA>UtY;x^lP3HnsPh>C6o1#N5N!+02=wNUs~za z-DFVart96s%3#nssz2Ugcc_%p1UuPoY932nELGL%wE^QL>BPr8w znFvWh0VxH0zO>k(Tty?Ab>$%uc6Z7(%NxG0pum(YIW6To;%^As(*I!)8WKNlSQStp z?Fm!(X*u$~$rp=I2&qIhda$?S8GV1#7Efs^ENV9HC{3ET_^1Yt5r4hYKA|Zc4giVQ z+aTV+OFFpA=~n?dNI?P}r3yRz4n2MfZvGUI6%NYSR^qzT*k{_jH5&M~PwnA$g7IR_ zJiD2z`cINaWz9FQR1??FbjnO?snlR*Rm(M=X_6f^HjG&dD5iq**j_XxTW9|AzQtj(Z)dP_9W2{G7e-Hf!KoKFluQ!L{fq8A!g8B+eP4KPMry#~g8k(!XR` z;omKJ+GXY1`mXjNM5yd(PGn>4uaqEK2$dg=;WkIr0ol)9+N>DeFXE5xj{c7euwZ&* zm)tQXWKn8kH6Q=1knaU~G90jtM9s09`22eOu-1l;+3A%0#k%o6UefYUO>CPYX40S- z1-&v_nDZ~V`vuhwLj-ei>2R+*-6u{*na2H8)je@@UOyLTtN5^>AP7NG26e${JxPb;85{>4$Rc!n%wu$(Ub2sP)a`@%ttaw`@V zB0xf%}2ljpe^bGgo6*+wFnfi>aKG_m_ zc|g7$+lVB0|7_!5IfbGcr_(JW?WXZ*&&jx->W-$t!NJmJOM!gg$9>_maw@1Fq#GR! zfTt~0xraHAp9^Gk484J$(4Jxh95_K^3g7pLf05gB2A4?yL*3^CdPNssj&enwYokDLnj@-ilu`z>(mzD zyoW52$;ewxEct3YOK9(#d(|4(V9_1o8GVni-s8?a(7D)!8waw=AR50siV!m2CylnL zElECvy$;=eT)|TJ+r}T0@y9(*&GZ-y&hQx0I`fa9-VXjeS6(>yokH!la~-a~6rS1x zd5dx8A4}VsL%*7MZ;@tOqto>m(@0VbwO)YtsGOS8SE|v@_1Fko)?P3gjS(du`C7l1 z{@%8|&$8s5&4(l5y;CyEsiFfJ8NAj${`Qxtr?ela-Bc)yQylFa{{3g>#_5<**6FT< z;F8JUa^V~-beZ{DH-bErnX2a;@W~0|vwfG>6V<%-ur&JBU^? z^bmef&`p)oe&H$uw~^L!f2;^V=9_v|HZAIqrxt%L>a|k zY=Eya;RGy~HrMy1fcqck1uO8vk6x|EDN}`rtWm)NoY#uOdnFwsZ%eEKWB)>Z{loKI zDYDdGQ3!@lR=~2X>91QIEI8Uxb9)ti>K$7dPFniX0eS}Q_0YgD@7{zr53qULFVx-( z-3pUbu6#?gy3S{iG2i^K4Chy@PZY?-dKw-WMnCI*RFZ06vMr_YWk|G=It0sQ&_g4M z#fM{XuBCrY9MeWD-hGwsd6cYwtWsOtD2%=Ue4uh6P&kt0L!GCTuq55Y)K9h|LSa}7 zK|B|1EqQv-k-Rdd4Uz)=m1|r`by-X?@V4}x#g=ZzgwQodVqnAm`*!~KGvxY_5boX? z(npdBTSP3GFF!4i#CH##PThTIXOubi%Z1n@w+0g{&j=3Qzmba1aejZ!oZH`Jzeqr`=Zg$KLnm&zW7vogJcof79( z&2PCZE6@nLnp-!5MVOJEmbAHQ{reRqe!qbRG4IH}^Ni#!2#pE~U%(~jqp#znnpRIY zvuJ;EhtJ(l3Kfih-vX;hFsMiWU5BIOJ(())f=670r!v9XQ&sQ`pv8lmN2>Im@bj# zK)7Tzs5>RnH}kNZx|e^Kz4HJ>`Yn13U8!NZ+$02@D}6EcfVT9Wov?K4gZRGoMv^s- z+>)>k8}53as(8Nt$oj(^VCwBWE#4OL9esX$Ao;SV?X)$ALU23G8-<#%D3oVx*YGa; zku&lG$s6BK(R-Gy@%32t1d2p841V;6_9_$g%0fPLTXj z$+>Uq>C*i392Suc#>NJPU zqs?2p;NfE{qE|vwUrMc5a`|BAKe^O;j;D!sMN!!yBKb>63~t<~!T9=9=rAeO=+lFD z5hwU1X%QYxoPG;NS`EC=rfpTmI8oSg#!WrDi8L%Votq)_lyJfmGWx5l-evG;7W*}T zPnC&(bpPrJdd%D$m%r^T<1|0bO>(lSw7QN*-RVTgCeMd6<)-yWE=iqNXfr9RWQM`U z@054gA%4YnCJ}?#L)2LE`^RrrqBGXGf8vg-yDuf-7L|E%PShRummOgIt6b2*`D2yd z9#!O7^wK9O*Y{~KFHqZX*9cL=t>R(+Lhugm{*t(<9gCkQ3;_0z>gCC5s|V6d<2~RW z6VN>1vdm=_X9B4Yh7?Q%%6D=0<&N@gF;qJqyWgWk)Z!s=vK@HLdwoE@VHQIuY3Ny1bIxr$<0Ey1??}qrH~< zLYywJ!F!k}k8i z2O$Nc$>dYzv8+bw;b$n4{JFGkIloS}EsBh0simBEuID7qzp#o&?aU@(+`acUDGiXZ zpFpR$?;|LJK* zQ9_u=X$bb3X;^KS4)>9;fj^~v4?Sp82(tsV<36Tg?N1RVl8EgN zF<;w`+ns3r{`w8tqgw53|5GY+lCuEzH%1*FrWXLDs%;!tkp!>Flu~uZ`hEg(0OFah*}g9z+t;rso~^0T&JF6=zDMEue2%P%#63QBZU8gl!w?0OG-Ze*`|>^~0S zQ%a}$@l)J9o!ZOdIl?*ju_Hd8Hm^0pz{UH>7$v;7il%u`S28QGYY19_^sR9qsh|v! z*^8IVui>Q6O{aZIN%JRKT)%AC>5}L4$Ab8CV&_cJfjkoqz&wNi{=oI_&pn@Hh$+Cz zWo+Q_&TF@UkC-Nbg{oZF#P*9QUnA^k)N@z-HO!_a(W!TCuOXE6$=>|!xIt`XhTV0d z=7$=I_QKO2R?hM_T%1d|cAGhgHxd;;Yu>6g5}z8DdPQRWx_H%9g~Q>aF}ZZX@pZ01 z?t_=ro+)rOTHCH4U78%i+QIf3KVP^R0W-%^hxA%$9{3d0OYaZ73woMmqzOa z-el7nUu^95e%E^z!Ef<46Mtyk^N$UL5-}v_$aeXRcwrbM+~519%xazzi3#SuVS$jJ zbHIb4f#rnzdc5|+NYo6J61_!pj3E!p^b$i<(*c=QVuvL03aA(MOiMMMBV2Q!5K>}& zax_1p$)w6ErsZ-p?;=}n{N4*;@!sjOubLJHm3(1wLc$`4N1Kt7F!yhJJ6;mQ@tKf) z)Ghu`ZXTNIMysHY7)NLybJe1f$Rr&mK-7=!KY0JRG_mRI=-LLb7woQ5IPQgy38QU_666k81v76RnuNr&_DpTrx`MjzPAn+*bly~ zRsCP&zgO2Oz^HVsnCz==9?yyP_OhdSelSVoYr7C;AB=(-J+iON0M zj3g-ov+W&Mp3n#zeXtxLa5%zVuu4qZV()wV<7JjHw|RBLPC#DAZ_N+3MKe$7pFj{i z)B2?nR&#js28~Dyl`qMmVo#Lw9w80>Uc~f`ed5q-+-OC?Uo&pv(>YYJT-L^{NJyaS zz(|>Gx{LL;W$}!SQRo?JI*)ade#%Uw|F4#}(DaM8N(cHnc1n_$PK|0KeZ#Wi?ZtcL z9bi4*h|h;o^BI6z>~GE5aDW;$Uyba6+ZrR~0F=eKa6?2!#;DgG0BC_}Zr&3ld$Q*kAVcuXohA<%>xHy9NIzRyO4oe7H`lKzM0+`&0kfM zQR|pyN~rkVPq-!{*HP5&0Q<${1$EADE?rjS#yza)3whUzK|_w3LRt3!fazA zE58i~{~+=}EvL)IGg>EBeZz6j4ow=UvGldKjv~Fks@pvWg&w|$7B>U0PsMMvL;g2i z4QBmJr!}s+fxL2Q<&44`HAvDl$GD*H?~WcLTo9JtqLBDLhNYJiBhOhLveIeKXs7BB?^+-Z3f)5fC=|Q`l0g}N&6MR)s36L{gCRS zjI-WkQU%r#AlW-+nbxCS93pw#%Kx=LN`HQX&6O9KlL<`40ggx?+t@#|A&lD>v8B*S z&t9^3>KhDu8#^xBcS%YL3fbM_-_M)cf^*Scbom$97kqv&^R(`<39e8uXO(@`yT4+} zCXL?;t|aMy^1_;XkY0uA>le*7xLtFGL>2du84QLb z%~|!#iUk;0@G%P5VBGjFL@fG>kwB1|9sQ%#Z*or%`9|&?mxeI`Y0{4bw*hTCoV%>* zzTIH*SyI?)7wcoJGJWLEzy z=ElA!C(S;fSa}Vh%Ro81O>kFrCs}Q#?l{Ch`bX;O`YPWz$QDh;K%EvQLtou!?4tbA zc~WZH?o&uDhkaTDISlQt`M-(HoR#B!t|-sQ62G~WYvC;!7YXOKxFnnFDdd54PS=gr znU;J0M)&c7Wg%Y_C2?|yL9VrPm_M}jo|-R)zZQXmU4!U&Lv|sbH^I!hOb~zzupII2xY&b|?8HQMR zAoI6Z5^Ay7bA%7~d~T0RA5D~gktz7JBXal#z-@^V`{MBj!t9`G^9Gs|NeMKw}}Qmt58M;&4GqS&uB2*k5X!7_qA`-l)bVrcEXT2>BRbFRMKGz&?& zu^GWREd-~Txgs)x?v@t0H``77>qVk^hfTyz7T08x!RV!2mFJ9~>SWwy_B2SV0;u|z zARrVj4y237yz?|4`&t=M3?;GT$(m!O8}6}721h*X##189sKTzaBF-Y;Oa1Xfd>TvMGFERcui zcq4kp9(MP4m?t`zmJah3cGmA9-M{R=>D z_caR%54IcTir@LS9=evOWcv+dphSg!s2+l0Bw)V#{$dZCXH>*xj_~|AIzHN<4XB+w z{kn*!qA9WW?!=X2GRIaW?2|u2KKrj0W9`e$56bG7nX?K|q?owZurf?H87=GWeGi4x zM+5nRPDgrMO5bYOY-x~HJ_gBgodM=f_2cfnFfBUh?Fuvf8~{B;6Q)5bZ2JUHaJn_6 z6wL}*g(Mup-ulx)_~rNS7=HBgnj6K*uT!}(%2dEs9qG>vrB7^>!hx8tG?d|6poo50 z`R1{r2d6(0w%GS?ZDhC+LDQ`LIa0qgCheyv~Y@Bdn~- zVuaaP=}wNGeR$VxcSr+QwOm%E`CbZ$bPQSQCg@XBm{eeB*c9narIR7EcBVoiwZTz! z#=BJV*O>{;giQp7p^nkTrabwAfQwb^7m!D0vT}gx^1<=^K8esFq>K*e3GWGCKb`f4 zXSoHbR4nle&po9tBB7ETBe33M~j`e{eSwjROsIrQrkcXrHD2u=$PEJeL9Q=Ixc-JV9WhoOS6R zDbDvwG@ADI_5j<|1@4l%?mS4LY~PikGcNIfCp*Ws^?fMc?K)x)HJYpg7v>Bt3i|Gu zkSrwc$+KQ;{9siBOz2qQQU#{kFBChR02uA9VVZ~f=9|y78Y~utmNiB+I49x!N zL9wsl9@h|$E{8R#mgNm*I2N{m3UzDTx6_3qhxQ7Eck1o_C)a8lNE<&fXE(@rN}3iL8I`z z|7+dCPe^(#>U1f-NOwy=?SgJk~6)OX#?t79@S4o>$`eX8>7?F>9+lYu8&($&z`a8bik z5SD^2+blv;_2Q>f238LeFriVgXD^BsnkcnVIO3;pn)2FzMNStGPsGpX%V#pRp z>&#@xXdXzxk04xOB2cd51Dl+I2w2&b)Y9{Cv&}n&j`d~i8A2O;9@AH;eq|0fWE~~Z zICnCrDEjE569oz`L@-i9wZoC8$k|VII^Xo|I(Dmys(kCnf$)dJf$(U`iaXUAdMI;u zuxKQ^GjTnrJOQ@+D?S%vL^<9n-cn+}yIDSk^W=cq_*{mcVn+Pxgzb_vrp>{sJmrKm zh&=N_MMSRVTEZl>+}02SJS)C>qQh=gJf6}&lG24udNOzXr4<o(8gUu-Ah;#QzCp}~twF-LPunfPO zeW#B1>ea&m4FlXZhTfFimwIMFVQrEJ*{J!HO7m`B* ztv%dR$OEstd2nvC-2bh(Tic0#13^iT)y3hD?La0b5df*R-)1dlvB$8##i*_qBP+4&~dlfH0_at$5FZ5nVsZf?C3=IA*M5xn1%2UJt-?8tVp(-!m$))Rn01 zfKS<;XaDj8%FbORla19_NJ0~VKU!%bj2`-Ol_MlT&PcET6Yib5Oqsj(! z&9UBu`}S14QW5oxu=#gF3P4t+1;jokreaX;up~Ys8l*j1ala+iu3rirP01j2K-2~laP3l`57h1oXycGfP+$lv1*iVzm z%*F$>5e{g3yqyndDhRj9z%Ap^+|I~4&iq@sc0b(zDtKdyB-A6S;h3kzLfk!Bf9kW5 zNLzX-{M=Z_YKfo$1iBFKxk6ZB8l66F-OMkSgjB_OyEf?kL9v}PL;;^d7INjmxX5^*e~ z#HC-{eO|nl+(p4>zJ0Nmz$m-qm4s}sDq4JWf_qZHD4*G0?pi&Cyk~PW=^b)W|K-pR zh~0zJ$C2r~)L3labUu{l87WQqankAo{zsj-da08axMMXvx1l43AkGVfpyVPKTLm`u zn-E9h!n;&ka_9(nae=z5rssQK&nS!jzWd%ya;G|uQvE+0C4^7Y#-{q-i5EvrVnPsS zQ#0;9S#+}1`;zmZh1%Z(tFSof?c@Aw4!w(IqK3R>i_fx0YdAuEyua;=cL;KIYMTf1 zl!}q0EKOkS*JQ?doVztu-_kz5Kp>ZV3Fa#W+x6^a1usf4002m`deOk@xFcy8jb?4| z3oG(J95Ndmm)WiZ2F2(zkI<3Ut_EHex;c}_CSWqxyG(fHTam^G!#L{0_e$A$(y$CE z*m8X+pZkF@m#nmC~MM&H(sISbjL9qs3Y)XphOjU?5eS5s8gMqQr75-j2ulT(!K+) z|BnmcHd604{`rV=a+56Ymu$v3Ls`d!HtQAc8+8~b5;>*p!Vm#P;YV;Rjl8_M4JHGk zFFKuCt|O#Wq$;)OWY^HjD^J2FEu)Xqe|71$17H7)n)qG!xv{}7s=y+Qlp^2_tJ$#g1e6$h)N z@OemRC#2>#uPa3o8WDPL>(hxN+`#-1W&&G zJ(;I!)CGrp_G+D;R_}KrYBZ|6?NuI6jBcs4=ggX7sw{{>vu-}p%38Fln&~v56)((i z3J)}7q4T%*JzCz6DL|F2Vfh}d0nUBbFWCycjYXEsF1C21sm?Fqa|(2X3yOH|4Mazl zDmPyt`NGjg>=t~*Z86H9g9J#8Mzf%pfKaZAAQ2sNKboNul>}Ru4MCjbFMDUvi6r9h zXCBYD4q!bZA%358c4VGp_=h-0YE>l(BJf%R%vhKicN4>n7q@s?}aW`0) zNF@LLp->Zy5WcdymPNFWiN6Pku_J-f14Y^W?@T82>a_njlQr57F}I-#KOELq1C}~f z!Dakn3iXa!f(X>*GL0}40Sg|-ck<>|JNSXJi3etTRw|WzyA6bH`!URK3)U9aZ*r~j zu4P`EGbQv4X%tBL3rcR+$ZzTv;Zz#cN7)xtwkSP+ubiyw(O0gHAjS8RO+BaDPaFFi z-jM&E~1QnR^e7D_|-e&Gw{1weST+ra7iY>~b|xg``$D%hoB-|NWtf z@+)LDqLH{4xhK}@)bb5_TRG_HZhwI9A+~?pihScmzVD2%KD(S7cKJgCdP53DSlj>+z}o4BJIv$0DacR-4ms^8=$ao^v`Z{&*t=BwmS7IUyLzH55o`m~bu2KWS@vxZKOjFAh1w zgAATrBc8%0owZ@lUswZ%#|!Jk5(o&Fk6#-zC9sUp-dTT~P_mncxV5VNEjPyH7*icq zgDLI=ASIXkkN-}{mpmqaeKKiK|Jre9C#O(^ZlwbAl=JgqL0E+K<{cKIk81Tdc}_2) zF9MYaOMi{~Bt}NFHgI!6p-5^s-}_xL_20IK$;O|Eid4k{ceH4N zI;`o)jfA1rMm%_$MC}ky)Z@{}bj{`5tw9lS!qStZ_PWK^4GF9ZC2=pq`OTMM?Mh7JQVmheA1Q7J_{ZQ&(A4J*rkGN_sN0?CUy6Tx z-6utyKymc;em-+ypbe{z9+5B7ivLd4LY1}SsM(Z2`uyilv-w`5?_E*xkn9l9oK{p~2%SfisY zB0D@P8msLRI7X<$q)nZzO&&9BQ^?xFzwFKLl+4tQu>V*NVUsPr~Rpj=Wy5J1id)*UNt66~|{6 znqPhd*K_lfQKKN=lvlesNUYoQMd<(~m&LYq3F&%VhB&Nr?D>?ZMd;_2-d`4v zZ*;vHkPEce!+)*pGKKJFrmcj=v}*}-o>od#7pD-NaEs-WDPk(69<4XjrI+G+X5_(y zBAe>7t_PSYJ|NihS6!z%mpQZSd8lS5oxv0_^U`~73V1Jn`!+}7cft^Q38mz*RYR#< za2PTF6gP0N`Uu3$s3mCaHj9~xN) zZDCB0CZFNkc7F)S1#gdxWLk( z7+c`J3%>`B-+3p}D%s%A-Yt&4=$kjRPHyQo+W3k-E6Pt5$UP4yT#tYED$dBI)wIRV zS$0X;@$n5sz)j0ibwFWwVZV_ipMQ@!^gWr8hao%Px%HC%z>yS9WMe(``SW(~)@V^S zPbt?0aC=)6|E7s5xeu0BE=j4-nOi+}D%nA?AAdL!Vd5x;Nk`j#q0^~$($0qNi$z>P zI854Ky+i)a&netemw2aonxZWvU|2$2#c649BG8ehNPAtrd78#;yyu#HT(4A3o6uN* zrL*f{9;H%8q`6L&--UJWn>No@#zyd+NJL*@_|k@8c4} zU3*Pbym=z<1A91gbCf-VM(AJHz~e7(Lz6wvnG$U?nfZM%eY$6|gnwFYqitioHc8oA z$MJ-~#i5tUNn?nGnk}P4 zr3Rc3w8O!fEd6#UKjl0(15cFzrS&#O(5G#MaqiA@(Hwuu{j0jQ{_+|8-9s54_Rc^R z58?eJ2qUVoN^R$rk!4fI6kKFi4P#bpyAXx}#eUf}7Eghrx(P>NsAT*Ew)2;F5d%&Klv3Zh=yfd)f^ z@sE^5>jpLi44pKXv>}0iXVu%-P3})f>t`zs*hP&v`v;Wkv?L-g>Yir5+xMrloW&;f zBa(Zq*#1}VU%?)nw5F?`>J5mj&wG}U^wNakCVnthK}Sw>y?JTdX|;f!OQ}RN)!)W& z0A>%rA-+Axfu%zAnE8U=aLg%TFD@pA!%qrdz``o7kA3xbEnRhqre|z&MaV6MA z9`7gm2Rm$IN9N(CB7b@~i{(ilI&1y+q;u{K!#29%MI>>JbchI zismW&B=29MucAU@#i{ufQdRoF(Xi0M-Z_IOS~0Ld2t?+-l!~($0;(&rMM$S~(QGee zO~mj3m& zeHx=Xtep7vdieyTNPbCct?iro5fxuBGy6;)-+lau#sk|tMD=O($>$WC*^I&!_%nH2 zk;)au)f=*xRw@U_h?>b1dx|H^KCI4c(e^Z4Zd^)}md`|zFJV43WfHojedNxl-wu(BxgCj{RQLPek?|pn z>p0tMM_bQf+w>-0T7Uc5X~5TT=GNX%@4{`^l9E@&5j#CP9^B~dP_^~FnKfbyOX4e3 z?|~83IvODnhih;9eJYcX(V_tmsHlsQ^w|P>RO1VThV(>JujG+z!^K9p#RVZyebjP~ zJJabCx?~?aKZ&~ry?(yqBjeb`@um+x#k}TxqCSmP9Sk6b?s+}|%?IjT;?OQ}NFqx` zD&^a17;zkiZ_38Aq-IB3iCATwI-h*7Sk@nG-cESPD27)D_7sF!AWVq|HN3Sy*e#XI zTI3V-4+XC1j|rtHILWo=(HGIQ_7ErX>|znV7sxT3!LNc{Q0y~XP-)7sXjfO{WpMXf ztBu2)PN6`K9BUKW{OEPaFx!0oMPc<&j=xagx`=t}(CLLWQZk)u`q^B9Sgb&kS>av` zGgISpX1bL$VIW!M$@~}XjH$Y*?SlKC9}x}~7{r{VGr!LY9hjY;x?#EbAcYiMXeCM% zzqDP(<*faB(dp6#xNQcQJDHeOz1Nk%;$e~ltpm&Q=WmeP;U zm^F}@Y5`xG94H}V3?_z(}$k4)G`aSkVODMf+@##EmqiV=HKpsWyo zdVp+4lSTljhPCqA?Pa z8l0f_)D689nnfxzFWl-_7_Booprf8LqZkZFF?(0fmZ&5;0y0|orRGB}K@A^xk~A$d zU3);`k2L8s-wFWLveU#zPJe==bHRvK(o6~^DNq6@LYRgJ>}s*jGe?nXE--wA4T~Sf zxjy2zQ`G5}f!yPZ;)%a2&Q&c@;D_xsr?wRj508lNa&fqPoe@FMII_OdCxfJvo;j3} z?*Mf}NagO1hbfYlhUU`O@@mXqd7XfOfc)4J;WRF5cxWtds>a3R0+`36@+Hhn)uMt< zhTa91fLgEx3}>jdY7=b~9k}}C9*a3Oj{8G0C%TO{$dKE{N2eP|{`gPxzgbx4uaZ_u`>t1p$ zdq$y_31$sgOFEe*YC+ZO0;XXoKDNx?8+@DV9?FCGVZ@xa^~ve!`20MrcNAc5a)Z@N zRC-d2sBs%-03sQm1(3Sr>3_y?vl0XAFAk#=dzrye!yYhcfjHINSADPXO4TDpm zc7(9wtUbT>%wlupTawtMnH-tOvPRqrVKUjotCDly|3Y7=1| zkVq9~1dI-P)+7&<4~P;fi}!qaTlFl@k9X@~Qy0`CBc()CE`WQ(m*vN6zYMry4RLhrT*0?nw`w2SlWA-C$`jeVr^|O?m%d42}Y8%r8$8-#?q+4TfM3N z(PzlON`s1fkNG^x0R9PyryJRt8l zAgu+Vokng#EwT!Clfq37R9A0AFN@mwIfV}|Wq4XA`H<+RR<|S))L^$rf%l30K?0e& znyH+l4oieDD>tpn5=MH%bkAtqho3+G$G+NU5@XI|LTH|IKKTvfK>%NZBjZk`l9uW38*Be}u_nCh3WeJC#NDt+qCWEJq zzg%XFx9JOxw(J9;+`?euKs}aQzr|6YWQ8EJB!>%X9-Kb(j}hintIHH6MBRm+7b|U3 z-5;aUP;iXj|3ahthc{Ce|Ab3`@L-)hllOZTc%@t-7{kw}qDcw(N19O1+*eDzCi3e{ z<1rO^CEWjyueT1Xvg^XcNkJr}8zcm2kvjCNbW1BOAV`;VqjVm+5do3zl9sMRcgg_{ zozgX%_nVn(zPaZ2^TIzkoM%6~_qy+O@3s1ZKmE~9H1*!}0)u^5u=4XcjKOcTe`g@1 zg20V>2lA}8NqWZG;8E$Ls3>6mbxkPMM@W*IgSy-hsuMHJhT@3Cn4dtuUv35 zV!(9;POu6PbViOT+_o4?2GBq_{n%gjzD4VmXDcY*zGzLkg_XI7>AyjM&_y*e=rSeT zQ$`=7>~kAplV(j!Jv7IU#A=U12E6dEzrv()RcA#War8xhf=7}Wb_kN1N9Nb}BC2dQ zZ$Q_$d^)m=JPOmrNj_ot2O~|;(Nr67 ziulm(HB`mp5H?Zc5e6}0A=(GB3ZEr5AJTWdg_R-0xt}cK)z1*roE0e6HuW$Qz&zsD z>7dJV!tJ;yJRczuO0fQ)%oy4D>>%KD1ptjVH0bH3zexqE^s72ZLZ098$T5Kowcf)l;b91x#R~QI&oo}O_ zXPUT%uL6X}DR1Y|gNN39Xjk4^nLBOjNp250^icP#^{wwuai}$cOFl;{U+{vIB_#WE z13-8wJR3!0afQlX#u>TqLyl0RXGUX-%if7|zpbECOYMtecAEJR9H=ajI?|uOCXxS) zo_nO;g(0o;vTcZXe_j3=&Zqi^)Vq=f66i8G$3DtOAKV4kHm8E_ z-Wf_()Rc8Ur5^i0{H=l~NCfdBZ|aIQQ^68w6Mg$9ASZ!RwyMneurBOO{dJ-#%i)Iz zyei^zPx1UhU07asr`sSFWh>#xUHQTTQ6CgC86;CtZ?{y67^-5d(`K4LOEWZO2f z!w^IFFjNV|gKtG`xLQFI=T(QOF%ImG`)ech=HK<|Id1H(r)AmiF;q~^-Nn7hNa4lD zA++P|zRCFWCz#+>Z$MmPO97CG6eiJ+*f&2rJH!17W1t1odWUY6?9Zn^T0!pAD)yN6 zGP6giU!5xl8{IMNR@ujP^Nl5PUz*KkF$0>=kd9}7oO!y!%O-5gYS+2Tf#dS3FcHX7 z2d$#u&2e*6las_k=qwU;c6OUYSlPt;2#_(wKG)k=nO})TFS;tMBH!6X38{D-C`r_Rcm2strJ;5&^*5NfM;verYs3`sugLV9{xVWy7JRcU9fvNI(-+vf9y&kMB;i}ustP^jp zc|rKPjXQ&I_b|8wLXDV% zD#VHNi^wj1xX3D*>)*0M*-&Y_cp1Z4TLUL*R7W3i!(A`+kYnnBBr6v01kYQOCy_^C zk)vl_L@4l6{ap|YeMka5xYN=UYuZ!J$!AlqusyceH0IXd7x@g`M=9)DWEC#fR_Z@a z_}F+i(poU9w!_M9(8@jR?E__}_LGRv${G-W+%a4(*|$^2!zz-jGN8QS1~fS1!zyK+ zG^%o+jlG$Or3yW9S@BqL!ajaC9`QFMg8NLmHa=~|F@I&EpLuICU0&nUXiS-RNs}G8 zTAdvmto>*w6o8mOE%R~)CAxVAjowgfr(^zkF$#kZ9hK)?p@3{F>s*2K=WPQ<>g z%AmpSfv{@|;8|89c6Yqxe{YrZR{8bWVyBKj zy1E~OMAiu+X&^2+61;lN3yxSXcQd8Gsc2cH7=_km>jwujS!W=Te{W&YrnL9)Eg2v6i&H!GX&fr^nPR=%3u^d0XqL4}(e@c*2{VqXQ4g~5bMRvnq1 z7*(T=&k`yPu}qdx{19{hkt6suyA`r+m*A@)NFeteB_tHp4fW7|@~VW8LD=KgVeQoB zfT^8Q@G0DW#r`J2_hr>F@|h8jFtg7jZIwHx;dzT+Npjm183$y(dE+ZTxOkOb>S98RStcqX6cn3O*ou(0X)9a&;KA*uxxZX=0dmHQX! zMY?-+%dDkJkJZ;IiJ#3zty{(&G(oN+J?9KdR|`hUD4m58v7#u! zLz=HhsY5C<4iz*=V&!KwM-jE&@GvqYX!7Uv`~X4=WjHKFISoVh?r|<0qfFd7wb}bf zkE`#|4zt#-?z>*MV0&?^Jfbe!^0hAha7TEdR@%KZZ2nRVxe3#{)13rPzLEmHH?X0; zVN$sVyLqm4)?9R*!OwV;OBkE!t*YP-SGNz>{0qfW)fBZWHvVakynvju5~k9CoJdXV zW0c2Hx$@}28n9m8Le2QADn*_w60H^M(^L~>%EvTA^FGNwIv3PPk24uER6WR|5jL$U zcHI87P1~N2nV>W&@@B=u^J48akYOVr_Fa_CuHh*c1`!XnB=!S30QeCkg8R-MpIg^F z@7Yq9EVMh!`*X=WzuvZ9ma5iO1Ol&o+B4JRyO+GSJ|!r{18%~-JYaA_B~ z0rSOAJYi0}oVGiq?XC?CDcTLooUdDyakGYeK~>rdKXg_lx&q-R_U!;H5iSL%pmyvP z`!63{OW;3qrJEkxby^il0UK`F@)@~FQ<`4`cQ;{y0&pa@oqGwE+(dfIfqPL(WOgV^ zK~*N3RC%8-YZoJV%mh#Ri$+VK`W^u#fgHZkhO;EoGPPZS?a++EY6W9d%-icMLGQx! zEsdvl9&g^ZtL{W#*t-B^Ym&0htteiy@aoF-c@VbL_FV55R$3}|4wmW+8LuP`&zogM z$~rJ>HD5@vK+m@AXv9U^wNOb>NMQ!6!A$AojLD%@z)eLVw}G-#v0P>sBju`(jvJv>;T)ikx;)%3DHu=4%lQn{&Es9m|#L4BTTSk4?{ft z!41K=i;|k?-P-4BABPNj*&%)VX#2bSXDXtO5ShANT*d#T1*oaEPI<+0M0ViH21C@v zkNK85_3JkoD7JL{U1opMt7$(`4@LPy`v!rJ5iN^ic#hs=VS3jhyI6@UhU>LJT8>Hx zA%K9SOZ9%QGtawrZO3Pb_!au{RnNDFPZz$JjW60*99vU?RERkN5{3DZAF(T+*rem! zKt2o6JCL~>^sPdtnQva5{RnjZIr9@Q5`?cXL!KNAe2633rJ=^hfal+c4d)U2MrUiG z=tAOKqg>kO8YQ#4gCE>zC7vPws%pBaf3e8-FCT^7ZpEN#xLyuf*I#YR(iB02jwBbo z8V*2*zk)7>$}!SX@P&w>M(MaK{A$HVM5GUvQ~pFqHwk7=S-r{hRiszx8wJVSRB(!E z&a%^Vz59AZelT^A#ml_2w!;V^3bBWEUWT7Lh37-2|250kYAl<}dwFX|fYnK#y%kgz zik>!A{V^UM*~Bto@Sgt9EcSjSW0nbD9JewOP5Y&oZiO-f&1nIF=V{WMa$r!%1ObSZ ztVVOB{HURi)WL6PrNZ*ehNod!T`%Y)ORUYWrm7+JHhh9$hY4o^X<-Flcr{%bH8vd7z=5_r z8t)}bZ3tmK@r+`siE%g!J+Zl*Z5=KQ2^T#RDbcOdPGmKvtpMP?rXZ{+5AH!jB$F7_ zRV<4=Ya}1MCh^i_Km{bO*($uEhRc3KhdccXY5D+MFlfre@E__FFWJ^f53T5Chi-fi zkM9<`pe_B zig0gw7dnF{`uFYg-(e9uAdkHRY97ZcboCgN@o&4@7-EZ3OzmNdBny3qyk9L!zE; zd~G1669Jxnw~y^Eb;IWKBMnI9DZ?l|^Xzv9%E`oRT5bj7*{||7KHjWxNwFVoy{z4BH^bjAzH5C^eqY^xZx>{&WlmL?=f1A+^0Lvpw2Vg@Q$r)&p`f zb9Q{4M=b8?-Wse~M?Y91Z+|U#b%&D&JNlGWjoNC0aR6J_c4P$>1_2csHz`&3DTMai z$G{H2f2&dQj(fyow9PADF?pkT{77@JSl>m+-d}f1I-1n!Gy^2fpAb6 z6~HddL|Y>9JXBghvqn>n5_Ng@FntD9GOeUa)-;r9x{5`Ae&+1zEbZJ>crIfh?HkR8 zFHU-3E_`6#XnDp$Pai4AKy_*XL<|eBZTPu7#RovlsAh*At|YGfgc`3WaQU5;4dc0} zb2(SQTlEv4$ET^myHaFIx2(VblQYbt>^#7q=u5{Jr|+I$u`$|aBf9%HADMY{YJY;u zOu;suxr4!#07R7@l-X<=m<~0FHMao;;sCpj6;13Fr(dy0n?z9S5vlt?r`+wJ1l*5Ks}Ur)X<@xPV~T|6>xzrS55Wwvq>hn&%c?1sq@FB6{me( zsDK+exj}iy{X!wyo)3zmI9Y}&WtuwN4I?USkszlGnZJQBpa$Cxb`dF%5Nl)PKRHk| z@~=6O-1K^L7)bR`!1Ag{8`=+D;o%3ahTKj3pgq}C&KCQDOP#;~sJ2d|%O9fPk5kP( zIp@y$p!A}rKekL&d+t0S1Oogvw-M~GrvOsrKmTOWFW=yvg@}7}vKy9`OarEYfr_4< zARmp=-_u{={eX9-u>pr|70{1P0*Op)+<66#ZiP)Vm!fOW;0O=*gqB9Ut_q& zuBsB;@JzV2f5=!sQ9KXn;1&x$;Za-I5~cd^Aa=@<<=ENYUM=syeUcHxo1K|SqgAR$ zE`)>65;tW(!GoYN@;xv~lmAM4`S;$}4^NBU2SoUA*;&zuknp=?j&Ov2@s$rQ%V%|81R*_(^1&VZYeT6jlyUhz~mVvC(s;WL?`EAB!M$9 zBpwJCZW}4#)Cs$7LiIDTda8Y5mXS48DQL84G)O+bJ!notxU41~X!cylTwdXlper)% znJobW0}TP;&WdZ>0eCHR!_coG_p&C3%0MN&IY09&UZ z!HmyLOm)iHu8Hj=Z1{T%H$%~+lDrtbWi$Mebw>~fp%=mM8a-H+scJXc)sgGofyOM6 zN4eDGa*k+xdS)jKu5)~<$uaArl`>7$%p z`$iRa8Hv0HDbD?rQAlOeQlYHVZ&UK2Tuma+5ejy`j|^M&0Fc^opeG2!fU>5ry~G+ zeisDU4fBGN@ErmlHPiUl192(})#3NZ5xMGj0d5zvHQM!FV&P???_NE}>pJp=>jw8T zZ%mquO{%@Q1KZrZNv}a^C!jQRAP(~Av{_P-+0?U4A-AQznTus~IBOHco54XODXuz1 zCldl4kUWJagDxz8?{JRtM8|;kZKN}KAQ5XK7763eT&P{`po+v97*$m}aXR2Rdfz%w!dGO^E01j=<%8>0K z4R|Yvsc zlG|~$T{cfMR|(Q>{K<*;Hb0gcv-wD}(V}n`d@@w(eK2J1yWjstE3I?k2V`e%>grqo zzhp(M9km2sq&MV_aW78y z{Z`f0Pue&`8Q^vFiZqP$SFh0i4j1n^-+yMDv=jrVl0hifG!0$f~DRb-KQSe|Ckn3sRY2E?4edBpXXu zYLr3)M#ar-88Y12=ZCxn87yXvwVX^#$$?Ckh{rvdXoq}*TBCjicw9ZilZ>y#Pc6yF zrG8=7_mb|2l0r9l&mS%Od`edL2Z3EwtgB~Y=G6M*e_5l;)|xcTtqF7O`|zx@ ze$^-kMUt7-=U*@YWOcQ(7B{&mV=(k%J&R_AMeJ*Zn))KR&v`K=tR!+SbU;h9`k9Bx z7!q-FaDk2BaZ0=}XHEMEr@Yyr=KB5X`}{}Bz!#?}oO#N#?554JVFCSW?W6DZA4Oqh zeEs@IwEB-1tvO!w1!{K!nfA|%r%(?wF40B{Hy+xGQ1-5^&k#=Jecjr#;YR8v8y1Dq zW8Uz>I2*X7`$gUIhiR7iL_&rMT+7LQw(06JvmXID(A)+}c=hP=(a4spGw{xM`+1YC zVy5%hi$$F%Mc0$oqlB>cZI8Hzg%ItGsqaY{(Ul)EOkYH$>7-=Z!yMq7&{N71>lA}i z)|QX#Yb}5>A)bUajHbITxi9;%NY#wu)J2Saxu@tuWv^zuE|~dbFa;}jwy%0Fn8kng z8)!K2FE9_kv~7h>6j!LAbDcl_(_p;i?{#!B%2Inb7FT@0%sj85aPlZ!rQWHh_k(Do zY{0$f*k-qt1<1j%DTwnbv4#hG0efLr)GNJYh67j?HHx06(^*-HRXzR($jid#k9?gx zlF2s)f6pXwbOrA_p%hLdnl-L3xrhGo#g|I;8!~x%Vb$W~MJEGYd92h(P>`;6zCE3v z2fyw+IwM^PZzDypA9diEAyIow|His)N_yj(#9FK0(32L4g^NE+-=5@u?hdqbMfN@) zcrHygt0gU^dYiADMAQDMO!JLh#9i>|_Ve{hvzg)hEJi=1j2;|6#IS+FtQ$N220{Pv z-B3kSD1(D?`)1q4cYvyHu;5sCNxFPCDyjOQ7@lw{Vj6hk_r)N8<~Insv0Z@OFC&~G z`5v7_N<9UJ3|*Z=3}q^wVPB+O8Z9w|+-N-muy8H(PAj#2f0jr|Ny-C-MgMfa@gsLC z1l2!y+LliN?c^_xx+vC0BrFPd@qJC=mGBncZ2XW7P zek#&xRTG`c^py`dKjAz;C_Y%s>x^U8(sh&0uEdn|YT6q1yx)1997wckhS5&^^=A|D zG-?bBaJnnVZpl;PZ9`2x;7kLv;P*^<^&JrzA29ksS1n8ECNl*>ifeGJwwUaU3X1 z{z-L3p4O~DWFaMacD5w0L0Qk(_}XBrzRiaBO6d3llebjH4J@Y7pkFikCzWPYvQNv?%74YexH9r@s0E&Qz z0O==Tec(&xhd?d{YOJRBf#2(RaJOPauu}122D;B=oguNjvq)`gH(I-I zf#H6Jl_}5p(-4L6slZFS8LPl~`EHXc*Qa3RlLn0TCGcC~Kpn`1Q5uoG6_KLrA0sSv z8s@|XA4q**QyqUAb<1(I#c=u8YfB9EvS#wFX6&g*S@e6~Mo4C8nvBtudP zCiqP82b7utg8A#b$){Hfffi^ap(b5B>bR%-<_40;nVnMTsCB4v}tdWc(C0A%mE-vKyLs1ySv z$%xSGaZ~hGn{Rm{vuGDzZbK07bacd-9C;##Zuh^QNjjxZL#ce(>QA9$KUZSHj(mRk zJ@Mwgp6BHcgvn40_a-(DNE^_e5@8^Z%kfad*>&EbH!*yQb%rgLc^$sCAz}Ih#30N6 zT920TT*h3{Gi&(f!7!=RXuR?wnI@jkG{B%6g1upW7CChNUN%4?xqW`<5Wt9tb(SRz z>z;7-DtBw_4B#V|Wf*gU_qGVt;mbu_1w!wXGi&vJE>#xOJPSWdn|jAavY%L>8d`awn7w?lY=Xm z69SR;yuY*zkc2+1|1=WBKB11V0Ky5}#4obAK>Ezy=cV9Ckv5ACH%(8o7wcUn2evur zZrP!eka>~S>-MVyra!j}JNVw&j!#3=gf|wiMx-C;hdGiu!37j5!a}DVrahKBoEa)s z4Css$RW}idXQ!hyjnGeX7$~PHamt<-S>=c>J!`ZZHU&G$J^|4Se8@e=f3rtewBh?z z<<+<1npZeivRVTb4}HyRbQwaj_e9rdu+XW#(}!>KinS?YJEFYAfjpie-mGOL1^Kcc z%xig(Rpf)|p=jAWpsob6DF!Am0^oC!PdGAFFKr(!QG!Vw(Qe%VyD3`b~N)O@OTvD+4yYvE2o3wHq3cSVXw{l@Yguo_UoUue}GTQ-xYP z9X&zF`OzaCLGt7vC#rIsax8@QR38F0pBccvC&W|)Al4a4vKh6P2%xoU+DOZZZKxu- zaZEtIzTJmQL0}v>qLVl9Egp1Rz|9_sSKiEJR5bE{zKPy2P!UArzl*9Orlzt83Wmw# z8n{Uc9Lm*-oWrG8q!lV(eNqF}5Cl`z$cqjmZbdmgWlD|}Y}}{6Nh?TUyy&=0Q>S=8V4485lYBE0m17QGuXD;`3b`nz>r(i}~XxP$pChQO!%7lTUW zj$R_^dUi(A9KAQ}&EBWjBEbi2HZQj)n2n{g#f@BxdD9K%LlfFS$;R4I%R(EJSA2nPatdYGp_ z$+w=^8>^MSV08U~Rr7|%fvlx1VG)Ov?~+KQ;xaAARGVS%Pn%zjag@6HWUT4Ai>i6WEom(9+ zecz06YAW?&_k_rn3x4Ljyzr{U$&jEs_TJ_idfkc&#-ai2(P~re=u_?I5(sEG@IkWC z9EF&?LBtM(5wkT-sI>6NV7QXVI9V`;ZwP4( zdM58IR7mH?6&yZ&*g_d-92x-I!{UOMG4QTy>0Oj7Jo6yvSF*{aapJgLDcPm%zCvHc zOxcr2-TsOr*igPIRy5F=T+!YgVvrV~i{BkZ>kH?HPH=$>ZF4m#z8_Fr|FGL5P|eU< zLv`^xegzL6tP8h-;$Q+-TPxf-+mx&+1dTxM(W#Z6=;6Xm2 z2|9}ymKXD93cnS&!2ZgpGp=kw65dsE5yr2%T6+AWqj6ed_rX5sRDLO_* zJ=@8@(~Me_ho|&m8~2NRtCYu*+h!YAd5PmBYRD> zT3DoxZ)*|V|JP-!4;w>iq(bP>u)fpl63`Ku%0uQUGEMPSZ%6k3x?p8zRwk4={ONjBo34AOapqhW zBz?w;GDEPV^2crDjueE*dQ*Bb2%j<46FuCa`u`DRfcrLaRqt=8>mS3{9vc1doNm98 zeMMFiA`D-rVOllfO?Z&kp4GZHA+#Hqp-82u%7^Qx4WWLGQ}m&{0soDxYxK;qFTT!( zdxO0Xq_iQXLa`u06|Rgr|Eiq#Zl8>W1ZbOq%tcb3bUM;L#Q6F09MrOK-IzmCd2ull zaxRo5gb+Gdv=z>*Mx!nCAmHxh*W^BND{xTQYfTq}M=+n}aEgy6y3H!?pNC-BD?bAM z9u@9Eps6E-MT>Ny?W`05TNt`~yohZ+PtIEE(;cqAs}uMC0MeGFe;^1C@xie{H!2}& z7ao&1VH-__XVNvt3-L#eFPNBm3|yD=A^bi=gT&o?fWthonjW%&fK7TCEJH>@*RA+?X} zOO8~KFd_G&(dKN~m#h%e2?6qro$R<53C|lk)vH%;TA|@kt1`rz44FOr-OB~-X0P9&md0w?v17IXh~Y8@pz=Nv2ub&@|$PT`M2 z3c}VwDu)^~JejX-=*jQJ1r~uzXov?9Lj5%df3&s0Zr8$L z(wI!GN#4R&Qr&bS&*BLyP9`%!aF9xn13<}M9>a3;IGOfAdl}k(R<``ZCI+31S-3j( zQE@pGd%03hnN(W)W8B~n6RoHu6dj}Kj1cj^cRn`LMHRjuBMCw^6%%5>neo=jrjXbP zcye<8yo+V?!p9r=odqlrdU|g6yQ9`&@mW|hAQ2oP&yf)jU{3Jv6S11iWSnq{_W9`L zSsUgQ6%|oeWhD?YOy`d!XbrU#R+wmVKR7nj1V&yw&r*}_U;Pmv0g@lCl#U1jo9<>K z%XApU`=90AycU(;m)~BG{n6jIt`$))+E(J(|4L+>%b4V~qsN*e(ZZtS5E1|NqWQt} zq5n8=ZlSMNAs@*cY1JNjMs_H=;#oy{t*aB^;tK1YAvJeuai)&dEg=$GUsK)w1@%H` z%D3Gcra87bYc2 z=L_qG!Gf12t%iL*{gH;2O^}n`8WVMHZ`1DHbG-~b@uH(uk~qWXOVgH0bz^be>wGtk zOAid$rU+{uvs zXN3zU&Z@MWIIbsi9lV(*ij$#p-`H+Vwxael*tkwP5T&xC&}cc&k2lG?^9m1rj~fZD zN?#xmlCAOUTwou58M*8nx}L?Y@40^8i|VB_zY(Sp4dex|=BtxaZ42${`Iq(`y$X^j zqnN=>VKpcBb*={=Tr@vs_O$M35NNywzE2N+BqXXKImy==@;gYim;uvTy5kTR;V`^s z0osx%1z7amSl`8XqUS8f7v(*EXj4Owz-SAM8~~q#D0aH^$wbH&p3Pd_o)yH;9xPdvG!xgycj`KsZ+)!}z>xLw z0~e$H%7%!a#s112dwdq9oumDGXHUCD%ja^sW@+AHeMM9XBs> z-^NM$q$zw{z0;gwS(UP?W+_#7kXs=3P>Pfu3K~xnool?Z9NPs6x&gAaNh0N{-cq`7 z+{8hD50~pP?d_$M64&3+0+GqN4BxtMYFQ;~1=D828f=o!ari+Q{?!rJ{zXPFgEjYJ z5>K3Jk4f7ui7w=cEZlX?xWk~e5%fZz| z=ONe^Iz%ZE7A`~7GHRX>BH7qq9Y6!Z5b4Mg%J3NXLr~iH-s}b*xmd>2Cr@w-kS*dB zSdIt?1W=NCh|JyUBw`sK#-`x)7WIu#JNVeN)i&+5S0vgF5h_{`jdi;yH8#ACZbb#`~@ijHmEj+3rgq;+|& zBl?^kmX(|gVRFTl8#)QA*_LN>dlt5!7`krM&Yjg2^hi_kq6z6V{!O;M?ml*GE^Zh- zvkWxYBvs$h917llZ;u;HQI*Vv8lL>;=Yr~$6w&27#pCV;K}NY)$4XGQu~+-ZoT%N7 z=35vQsVIjc1f)Ggq+K4kgBhU7EErF4`8Z#o1b6ce_fqFg=S{|sk(r;y&=RN&#qvaG%z!%;pq zxBU+lZo#zm#@LHWe%N|LLyl}LBS$>2Sv_HBxZm4`R874Vk5(7_!BaXP+v!e|!BXQt zLLsn2KV!bAd*LXhc%0>A9tZyXi*@QScY*xTdo&i<`jG0HVUBDk5$*6pljXL%AW zJ2L`cpki|`*&)?$voNB%OmOTr`Av}3af_sRjAqN!nXWi70;~mi@wmo~eyNgb@^}a|z@)|nh z(i18?_D56dD-+e}^RHw;qa?b8sdVb`Tab2#NS0!R!)g`S>IEZ@d`PMU+A;h|39W}R z6drn0j!2L%tV!gdnqYoJhdN!VaQ8iNM1cPOVy?Q66zkE3$^6udHEcolt!d)v7TSI< zwZdhIP7SN0`G|dZ$O$tOQ&eAugxU@}gt1-a0t0tVD8NM4D_-hGf~bK85-rIcc|5;> zpD;`pO!eF6dM`;hC}<=Ihq8V>QP;62rurWes#w_~7UXH<>8|HqUp*nQon-bD?fGy$ z185Xt`Bjew)Ae2*twIv#5VeHFCwO;c1B0w3>JwbK=(s4;C-!vq9~7(Dc$xyeFJ3>) zm;&+l_OgYn9B>~ao09X+=ewP^H_+h=(4K?~D%=|V;vY{D#~bhVmdmp3Y0GjtxpI2( zzV}*icNNil{rt%&HwPnpQ?q>HhKtU*_D@tlwUmB2WfE!`b3Fyw^ZG>R1(G-~x~Zd} zcLT5#LNE&>*dY@xTM!=I_p76)$hr8wan zM!EhTL8|TeR*V)IXouf`Q?TlJ?)n1e0_M$m^6D158IvoM9EB+y4j)jHHw3%VEdza2 zMsjlUzLqZu)piJPx033bBUX9hAvF&~RZT_hN$sB>4)Jz3Q{(-Jk}Eh?8VU&% z7k`?XF8uI<`CgkAt&PtM=Uf5&^%=-vVm3ZkTs$y~PVL5^(m z%4{ui|FPmr>XH@{!1k zqZsQ$R%BqPYB}`Zx2Y39teMjlXuAbVWSnuYguQV5hr&dC|K+y61^M~Q^S0N1FDixG zoz%W>ua7~3nco^a==6PA>@Nr`;?*li`J*6QTPL)T-?T@)oR($MlQmGs7gsaevR(5& zvta75QfJ<(;LNFD()H4OeCW@o*sCv~sjQKXO6dbtV@C@q!r@l~3wlupQ(oi7QO_I< z6py^+y~0tZc?Mc@;g=S!YK4mwEYgJ;KT(NQ+;(a-t+KS{tZK>vX?%GCr7su1NuOD) zU8IWA$aS;_NKl(sWJjf}r?GFm3lL{Mk`HiIHd zrGF4|MJ5pktk)4kTAqrCuBiK=%b+)8b&bIgXA@VVI|+@M{}wwU-{Zt#zZX?z!XX^z z#>pU(v~td(m2m8|$LywANH6LurJSXwCZr@mlYSx2%q(Ns2b>!L_gT3a%OcC2+~k+)~YR8cnvE=1<3o}St9Iu-R)y*>CPawh*g3OP}I^&46h zx2r*%(b2+udd~Axq$jw}nrNXcEmHn${&;IJ1`bII6N~f?TlPQy5L~Mn8?L-(JVQ^c zO!h6T@l|wWKSZ(@M)w(V^wHmGU>Ga+L}*s%et2T{NLoEq!XJ}NE(V3C^*tOxBHZtxGo3mf!8dR>^N$Y8&@&_FuFjrsN(XFuOo* zUu4`z-lwY%{yQ_>s+3c_0~?jymPsi6R`+V5VyRZ=z{-?UwNd%!JRfr&;pN=X?Aa^O zOnncI`BgpTA8mZxeX17dq#H2C_1HuQaeMK@4klM>WLS0^4Vq_+8|xvv5uW@m_jzU^ zx{Ts65rKB4x9oI>Q`xngh-_%E+(KM8q;5vVCaq&vcWB$$DPnY%PagTLVp&m=ep@k3IE-fy=yd&9iD~)8CLdoyp z)z1AW5)X`Vm9bYe$YQgOsJfV$Z338?ivAh?8IR8xW&%55XszHVJ5A(j;a|ikMxWYG z=FKz`98{vfLpbmj8V0R?R)`w@KAQbOFmq?zmV~O`JP5BMgq9m*rVj>v8YBmH!#2Zp z*eK@ow)S)LR!$o;PgSoglY!Olh06MuJauZCbawIyJHg8pwx)W$Jjz$l){uUtjJ8EI zUnOJr;*W?0cgE9FYC=XttIlPx>)l;K%RciEm2YciF7I}DnL-*&OyqX)y-e<{!r?Jd zy7DTgPpe32|Lz4ft8dMui3?PfG-c@=6eU(@ z?VFuh$aHJ9lqS|_W!1E3-_4$Ppc4jbuoN{Uc-VuAYu6O2Bp?8x_27*V_K{Z#+9dreY?2ues%Qdv- zNy0g^Gpir6pR^dHq_{Gwrw4TJZk35ew^am{e^XLZ)Q;3#aqu!ahZSiQAUb)6L+E!* zQbnE2EhKA%F~5B33H4w&*y|xYl~38BK6!b2bLzHOKR;?oTS7#6TR9h*dk3e+JGi&kGj+95qQ_wySBx zTTj_ugnp9wqi%Jt)AQXcl{zfGXvkx4YRBnLKk_)?M}K&f2dLKlqJ0MrFr|p!+y6v> zoq>xZkxLXX$umHys!NxEs>m|aofsbUe{b?BqN9pRSR|t;wqiXoxNkgOn&Za{~j%=L^MBLNyg1U&GInjZR}xVmD3C z<*r1*x+;zjfdso&el1E~-{J0J8+!p@Mp4Qi9)qoYj?;}m4fO-Wr))YoHRn>byv#)9 zHB}NPq8Lnr4B=rf3|cRHOS8!zw%eb7Sau{hVw)6B*yTMwoP3qATw{5L+Z(kU#0QJzA-{pYB+&d>-h!y>-X@!|UvF0el%ZL&QlqS9`}p`w^A@xsv$Z$&0DTrH@G@&-T~{QBQN6k6Ov zoE1^x!(e$bTD+^5PY4>oW@B+sQapxYCIu#fZ%>%1nrafwQb@H>NVyDW04!_~;~uCj z!Sch67)UW>{6=}ZUH?-7N!)_5xAHl9GOHikINIvI_ZB!1hdUx3-pTt9y{zh5s}xkm zIF`W?0nlzNub*+O_X82|e^e@0?CI;U8WG`tahcB=tEQT$RFv7*w4C1MZVD1a6a%P_ ziWhFMhKybp{r(y%T9MpBKl_1FkCV;5o|-^JbTrpM#_Nufw=WiI&4yBUK$|CovV@;a zLJbD^S9ny{Py&3xVWeuBibAVA(7@p;RuK2EEf1d2V9mgziW3gbodOUAN8V%st4S=Z z3H^foxet+)7_|Gsbl+NyIWjuB>hspv0ypp1sp9t?-I3t%1TYEqCnhz%yFO&moi6kq zS%lk_=3%_S>?=SAkOL`y9YzPL{_orYAjsrlrwXldb0nJO`nRd+-~;8^P|Y^HoZkCT zxwAfM(9bLw2z%L#N`d^U6b%1pC|NX1i=_SBf~9sWW6cma=l-;nHaPv{S`g>vc6cu! zT)h$_WV(MzZQjXiXc`2^ynFOc@LVK%(gIxo0eexSE1!_XOo?w}(WoOlSvxtGpVG2H zt1TRrr)9XPwq>sAGq`uLJ3$>z!f~}+RaJ$t2FqR&c=f9CF{C`rTgP6OIx(?=_#LG- zcUK0Lj6GJUU8m;Fk)A3&PP|Lzg@6g2cl^P86ybr^)pnvZR<)MXd+RmT7evxgkX6j3 zzdr=lqrTI)9CeX8&3;UZ{M={=nx-FXFi^|e&zN>WxWY$5spcsqIVsHE(L4M`t?Upt zc;cf4-*Y4NeJVB1gdjFP9xscYGp*q3__}7e=ZVwqh0|rNStb9xb~FC~&m@I`mX#;R zqz`A!73aP6FF`6LHQ$Faz8J?68iyf3_dCx=#Z6L|9T)vQsnbsT@^-J^r>52lhpw=u zL~BaxN@w#ZKc1$pIg$GMz>V*_!SaxgbZk(tDFu#z$UZiFdN`vk-Tv_)R+b_wfb|6!T@ zUV;jd-RD^6#^~13-M!5+sE?4h<6qc4sqd@Gko7IcB~`4mN3!T*lcUPl@5)4?^HS)u z-$xP=H-8>8;IeDhyz@vv59T%c-kZ?oi$q!;y0d{rT);NR?Os0`7a+}KAt1EXG+LXM z(z#?w`9w5Pny)felfk>rLuAi!_2bdtn?wGU#kO#@^5;hR4MVy@a}6HyJg#h4>yq9r z@+qW_!9UW#(n2NxL&!EA3!%6u6A3nyf|h|-k!oL;zn1%Aw4PTXBi|$%;EGQrX-wH} z?C0JUq@%Hit76DA!Lu=LYiv?J)F3<+9!pcO0N5`4}?mdz26EJQQKJ@I96a!cf14 z`w~0+b{00SNOhsKSFJYU&8r4F@6>b0^h30QM5gAocDy48nJq!KbXQ5sMel-X*AgF{ zzAA8R-}VB(35rF8uK)0ar(v;)p|l%>11_K+@?6e2PiBAiRbxWjxU!yfIsHluilnvS zTS7(4AhIe^2&AW?AGOC_&fPKsod%8wtU35V?{d%>nuWS*s&X59~L^| zALand9^owDaNd02eISfu05HrK$5+BHwuhb+{Gj!T0vLM36ED;mEjR}9)hM03RtkC$ zb3qb1KJLhmz%BR#*SQ_4n~%0S6<9s7Q#?np@~=5)VLS^(k&$_sNZ|X(8a;7M>8FQ~ zcYxmBIp6flA37b4-_8)+_sx?`@biv?I`rV&o?K!PBt4OH`X6pW&vB6raGLzr)L{uK zJW_9}^om-=Gu%yoQA4O9w~N}HCkj>UD(%9uBH?>o!3aS72MY2A6?eO ziz{DFMYea4v)!~XY+~^_z@_S%Z`@EgDreTF=E~Y^+2=z$U4bYJZh@B5W{H*i!cjQ% zfB-O5!uIMEaMBcYOTPv!Uz=0qAd2_dKMm7Qul`c62=^%V816UmcmnPpM;LH(Hr#cU zlP9ZGE+&r^9^YZV!)hXQd!=R*U{bY4%v$UcPFy-!8=Ne~X^-36w4jiwOv zdZyy{WI80Ax$0~F^c>d@H}2<43ai0r;*3Wo{0_Q0N(JL7leC}!VMmTgRttM@l5W>m z$71+nShZLr>a!ert$ZR-L0v(rm4s%Y)*;;sL^@~%=M)CJAJ1phTw!eC2Inprffh37 z!W&53aQ^WM&96*G^}l_5mi0gO`@L}1TlwHUlO9|>@b*A1%l=f({T~(Eq)g^Uf#xNG zmV<_9EI~sw>*iORzG^*i64;4V5;9;8Op*Q|{lGZ0r+(G8;yFhr-#nIM)p=i6q3V8D z=C_n-wHh0xJ7YP^n9E}S-mNZne=TwS)$)gLCv6b`joCO!J@t8TW=0yzjmhqnQr$n4 zy=s{azh6jB@7#S&_)4h&l_oG?J12mvIf{=5@bCV7&ZhswrUw&L6nYD_3$jo1>O4w5^MRA0X|AVE zWlnVGU5>oGCDR$wvf0;e}%<_49U-ta + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RangeController< T > Member List
+
+
+ +

This is the complete list of members for RangeController< T >, including all inherited members.

+ + + + + + +
onAdjustRangeValue(AdjustRangeValueCallback cb)RangeController< T >
onRangeValue(SetRangeValueCallback cb)RangeController< T >
onRangeValue(const String &instance, GenericSetRangeValueCallback_int cb)RangeController< T >
sendRangeValueEvent(int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)RangeController< T >
sendRangeValueEvent(const String &instance, int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)RangeController< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html new file mode 100644 index 0000000..150c729 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html @@ -0,0 +1,355 @@ + + + + + + + +SinricPro Library: RangeController< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

RangeControllerFloatInt. + More...

+ +

#include <RangeController.h>

+
+Inheritance diagram for RangeController< T >:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

void onRangeValue (SetRangeValueCallback cb)
 Set callback function for setRangeValue request.
 
void onRangeValue (const String &instance, GenericSetRangeValueCallback_int cb)
 Set callback function for setRangeValue request on a specific instance (custom device)
 
void onAdjustRangeValue (AdjustRangeValueCallback cb)
 Set callback function for adjustRangeValue request.
 
bool sendRangeValueEvent (int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send rangeValue event to report curent rangeValue to SinricPro server.
 
bool sendRangeValueEvent (const String &instance, int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send rangeValue event to report curent rangeValue to SinricPro server for a specific instance (custom device)
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::RangeController< T >

RangeControllerFloatInt.

+

Member Function Documentation

+ +

◆ onAdjustRangeValue()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onAdjustRangeValue (AdjustRangeValueCallback cb)
+
+ +

Set callback function for adjustRangeValue request.

+
Parameters
+ + +
cbFunction pointer to a AdjustRangeValueCallback function
+
+
+
See also
AdjustRangeValueCallback
+ +
+
+ +

◆ onRangeValue() [1/2]

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
void onRangeValue (const String & instance,
GenericSetRangeValueCallback_int cb 
)
+
+ +

Set callback function for setRangeValue request on a specific instance (custom device)

+
Parameters
+ + + +
instanceString instance name (custom device)
cbFunction pointer to a GenericSetRangeValueCallback function
+
+
+
See also
GenericSetRangeValueCallback
+ +
+
+ +

◆ onRangeValue() [2/2]

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onRangeValue (SetRangeValueCallback cb)
+
+ +

Set callback function for setRangeValue request.

+
Parameters
+ + +
cbFunction pointer to a SetRangeValueCallback function
+
+
+
See also
SetRangeValueCallback
+ +
+
+ +

◆ sendRangeValueEvent() [1/2]

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sendRangeValueEvent (const String & instance,
int rangeValue,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send rangeValue event to report curent rangeValue to SinricPro server for a specific instance (custom device)

+
Parameters
+ + + + +
instanceString instance name
rangeValueValue between 0..3
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendRangeValueEvent() [2/2]

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
bool sendRangeValueEvent (int rangeValue,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send rangeValue event to report curent rangeValue to SinricPro server.

+
Parameters
+ + + +
rangeValueValue between 0..3
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.js new file mode 100644 index 0000000..30a749d --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.js @@ -0,0 +1,8 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller = +[ + [ "onAdjustRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#ae85696d55112ae7343f9807faee6e064", null ], + [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#a6d6d8070b49c8b5272460836a1120b33", null ], + [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#a94adbcdf6ce61cb6552a5f9915e705ae", null ], + [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#aaf84aa417e2246843a27e819898e64b5", null ], + [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#a1d726751c416fe6dd408e5dd19f6b53b", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller__inherit__graph.map new file mode 100644 index 0000000..30c2cfd --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller__inherit__graph.map @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller__inherit__graph.md5 new file mode 100644 index 0000000..886c78c --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller__inherit__graph.md5 @@ -0,0 +1 @@ +0297ace2f93746544e96ccc312479044 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..684166224a925589110cadb439e9e6ba32aa9776 GIT binary patch literal 8995 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 + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SinricProAirQualitySensor Member List
+
+
+ +

This is the complete list of members for SinricProAirQualitySensor, including all inherited members.

+ + + +
sendAirQualityEvent(int pm1=0, int pm2_5=0, int pm10=0, String cause=FSTR_SINRICPRO_PERIODIC_POLL)AirQualitySensor< SinricProAirQualitySensor >
sendPushNotification(String notification)PushNotification< SinricProAirQualitySensor >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.html new file mode 100644 index 0000000..fa28f1b --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.html @@ -0,0 +1,253 @@ + + + + + + + +SinricPro Library: SinricProAirQualitySensor + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SinricProAirQualitySensor
+
+
+ +

Device to report air quality events. + More...

+ +

#include <SinricProAirQualitySensor.h>

+
+Inheritance diagram for SinricProAirQualitySensor:
+
+
Inheritance graph
+ + + + + + + + + + + + + +
[legend]
+ + + + + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
bool sendAirQualityEvent (int pm1=0, int pm2_5=0, int pm10=0, String cause=FSTR_SINRICPRO_PERIODIC_POLL)
 Sending air quality to SinricPro server.
 
+

Detailed Description

+

Device to report air quality events.

+

Member Function Documentation

+ +

◆ sendAirQualityEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool sendAirQualityEvent (int pm1 = 0,
int pm2_5 = 0,
int pm10 = 0,
String cause = FSTR_SINRICPRO_PERIODIC_POLL 
)
+
+inherited
+
+ +

Sending air quality to SinricPro server.

+
Parameters
+ + + + + +
pm1int 1.0 μm particle pollutant in μg/m3
pm2_5int 2.5 μm particle pollutant in μg/m3
pm10int 10 μm particle pollutant in μg/m3
cause(optional) String reason why event is sent (default = "PERIODIC_POLL")
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPushNotification()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+inherited
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.js new file mode 100644 index 0000000..98b4c27 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.js @@ -0,0 +1,5 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor = +[ + [ "sendAirQualityEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.html#a733195bdc5b15c858e4e890847b3a0d5", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.html#a04266791a4b23e9614b8773edb5f67b6", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor__inherit__graph.map new file mode 100644 index 0000000..42e48ef --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor__inherit__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor__inherit__graph.md5 new file mode 100644 index 0000000..57803ee --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor__inherit__graph.md5 @@ -0,0 +1 @@ +b12e4179973ddd1cfb5cbb71b4d2a360 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..53768141e36e6bd02f193f704ed0ac483fb15ed6 GIT binary patch literal 7980 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 literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds-members.html new file mode 100644 index 0000000..5f44ac1 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds-members.html @@ -0,0 +1,115 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SinricProBlinds Member List
+
+
+ +

This is the complete list of members for SinricProBlinds, including all inherited members.

+ + + + + + + + + +
onAdjustRangeValue(AdjustRangeValueCallback cb)RangeController< SinricProBlinds >
onPowerState(PowerStateCallback cb)PowerStateController< SinricProBlinds >
onRangeValue(SetRangeValueCallback cb)RangeController< SinricProBlinds >
onRangeValue(const String &instance, GenericSetRangeValueCallback_int cb)RangeController< SinricProBlinds >
sendPowerStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)PowerStateController< SinricProBlinds >
sendPushNotification(String notification)PushNotification< SinricProBlinds >
sendRangeValueEvent(int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)RangeController< SinricProBlinds >
sendRangeValueEvent(const String &instance, int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)RangeController< SinricProBlinds >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html new file mode 100644 index 0000000..d6d2f6a --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html @@ -0,0 +1,532 @@ + + + + + + + +SinricPro Library: SinricProBlinds + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Device to control interior blinds. + More...

+ +

#include <SinricProBlinds.h>

+
+Inheritance diagram for SinricProBlinds:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
void onPowerState (PowerStateCallback cb)
 Set callback function for powerState request.
 
bool sendPowerStateEvent (bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setPowerState event to SinricPro Server indicating actual power state.
 
void onRangeValue (SetRangeValueCallback cb)
 Set callback function for setRangeValue request.
 
void onRangeValue (const String &instance, GenericSetRangeValueCallback_int cb)
 Set callback function for setRangeValue request on a specific instance (custom device)
 
void onAdjustRangeValue (AdjustRangeValueCallback cb)
 Set callback function for adjustRangeValue request.
 
bool sendRangeValueEvent (int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send rangeValue event to report curent rangeValue to SinricPro server.
 
bool sendRangeValueEvent (const String &instance, int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send rangeValue event to report curent rangeValue to SinricPro server for a specific instance (custom device)
 
+

Detailed Description

+

Device to control interior blinds.

+

Supporting

    +
  • On / Off
  • +
  • Position (0..100)
  • +
  • open / close
  • +
+

Member Function Documentation

+ +

◆ onAdjustRangeValue()

+ +
+
+ + + + + +
+ + + + + + + + +
void onAdjustRangeValue (AdjustRangeValueCallback cb)
+
+inherited
+
+ +

Set callback function for adjustRangeValue request.

+
Parameters
+ + +
cbFunction pointer to a AdjustRangeValueCallback function
+
+
+
See also
AdjustRangeValueCallback
+ +
+
+ +

◆ onPowerState()

+ +
+
+ + + + + +
+ + + + + + + + +
void onPowerState (PowerStateCallback cb)
+
+inherited
+
+ +

Set callback function for powerState request.

+
Parameters
+ + +
cbFunction pointer to a PowerStateCallback function
+
+
+
Returns
void
+
See also
PowerStateCallback
+ +
+
+ +

◆ onRangeValue() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void onRangeValue (const String & instance,
GenericSetRangeValueCallback_int cb 
)
+
+inherited
+
+ +

Set callback function for setRangeValue request on a specific instance (custom device)

+
Parameters
+ + + +
instanceString instance name (custom device)
cbFunction pointer to a GenericSetRangeValueCallback function
+
+
+
See also
GenericSetRangeValueCallback
+ +
+
+ +

◆ onRangeValue() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void onRangeValue (SetRangeValueCallback cb)
+
+inherited
+
+ +

Set callback function for setRangeValue request.

+
Parameters
+ + +
cbFunction pointer to a SetRangeValueCallback function
+
+
+
See also
SetRangeValueCallback
+ +
+
+ +

◆ sendPowerStateEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendPowerStateEvent (bool state,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setPowerState event to SinricPro Server indicating actual power state.

+
Parameters
+ + + +
statetrue = device turned on
+ false = device turned off
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPushNotification()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+inherited
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendRangeValueEvent() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sendRangeValueEvent (const String & instance,
int rangeValue,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send rangeValue event to report curent rangeValue to SinricPro server for a specific instance (custom device)

+
Parameters
+ + + + +
instanceString instance name
rangeValueValue between 0..3
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendRangeValueEvent() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendRangeValueEvent (int rangeValue,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send rangeValue event to report curent rangeValue to SinricPro server.

+
Parameters
+ + + +
rangeValueValue between 0..3
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.js new file mode 100644 index 0000000..d363d36 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.js @@ -0,0 +1,11 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds = +[ + [ "onAdjustRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#ae85696d55112ae7343f9807faee6e064", null ], + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#a6d6d8070b49c8b5272460836a1120b33", null ], + [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#a94adbcdf6ce61cb6552a5f9915e705ae", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#a04266791a4b23e9614b8773edb5f67b6", null ], + [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#aaf84aa417e2246843a27e819898e64b5", null ], + [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#a1d726751c416fe6dd408e5dd19f6b53b", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds__inherit__graph.map new file mode 100644 index 0000000..cb3095b --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds__inherit__graph.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds__inherit__graph.md5 new file mode 100644 index 0000000..7576cc1 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds__inherit__graph.md5 @@ -0,0 +1 @@ +a918a66d557ceb273ef14e7e4de3d671 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..96c3828a88c24177b179d1cbe0e680324ec0c0f0 GIT binary patch literal 11752 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 literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera-members.html new file mode 100644 index 0000000..c18fe69 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera-members.html @@ -0,0 +1,110 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SinricProCamera Member List
+
+
+ +

This is the complete list of members for SinricProCamera, including all inherited members.

+ + + + +
onPowerState(PowerStateCallback cb)PowerStateController< SinricProCamera >
sendPowerStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)PowerStateController< SinricProCamera >
sendPushNotification(String notification)PushNotification< SinricProCamera >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html new file mode 100644 index 0000000..b2a1cc8 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html @@ -0,0 +1,279 @@ + + + + + + + +SinricPro Library: SinricProCamera + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Camera suporting basic on / off command. + More...

+ +

#include <SinricProCamera.h>

+
+Inheritance diagram for SinricProCamera:
+
+
Inheritance graph
+ + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
void onPowerState (PowerStateCallback cb)
 Set callback function for powerState request.
 
bool sendPowerStateEvent (bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setPowerState event to SinricPro Server indicating actual power state.
 
+

Detailed Description

+

Camera suporting basic on / off command.

+

Member Function Documentation

+ +

◆ onPowerState()

+ +
+
+ + + + + +
+ + + + + + + + +
void onPowerState (PowerStateCallback cb)
+
+inherited
+
+ +

Set callback function for powerState request.

+
Parameters
+ + +
cbFunction pointer to a PowerStateCallback function
+
+
+
Returns
void
+
See also
PowerStateCallback
+ +
+
+ +

◆ sendPowerStateEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendPowerStateEvent (bool state,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setPowerState event to SinricPro Server indicating actual power state.

+
Parameters
+ + + +
statetrue = device turned on
+ false = device turned off
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPushNotification()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+inherited
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.js new file mode 100644 index 0000000..4bef750 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.js @@ -0,0 +1,6 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera = +[ + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html#a04266791a4b23e9614b8773edb5f67b6", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera__inherit__graph.map new file mode 100644 index 0000000..733ec77 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera__inherit__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera__inherit__graph.md5 new file mode 100644 index 0000000..6fa2d74 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera__inherit__graph.md5 @@ -0,0 +1 @@ +81c5611258fcd93c435c36d85c0c3e3e \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..865be58150d9b002f1c628b76fbd909e436a10aa GIT binary patch literal 7377 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 + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SinricProClass Member List
+
+
+ +

This is the complete list of members for SinricProClass, including all inherited members.

+ + + + + + + + +
begin(String appKey, String appSecret, String serverURL="ws.sinric.pro")SinricProClass
getTimestamp() overrideSinricProClass
handle()SinricProClass
onConnected(ConnectedCallbackHandler cb)SinricProClass
onDisconnected(DisconnectedCallbackHandler cb)SinricProClass
operator[](const String deviceId)SinricProClass
restoreDeviceStates(bool flag)SinricProClass
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html new file mode 100644 index 0000000..44b9e3a --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html @@ -0,0 +1,386 @@ + + + + + + + +SinricPro Library: SinricProClass + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

The main class of this library, handling communication between SinricPro Server and your devices. + More...

+ +

#include <SinricPro.h>

+ +

Inherits SinricProInterface.

+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void begin (String appKey, String appSecret, String serverURL="ws.sinric.pro")
 Initializing SinricProClass to be able to connect to SinricPro Server.
 
void handle ()
 Handles communication between device and SinricPro Server.
 
void onConnected (ConnectedCallbackHandler cb)
 Set callback function for websocket connected event.
 
void onDisconnected (DisconnectedCallbackHandler cb)
 Set callback function for websocket disconnected event.
 
void restoreDeviceStates (bool flag)
 Enable / disable restore device states function.
 
unsigned long getTimestamp () override
 Get the current timestamp.
 
Proxy operator[] (const String deviceId)
 operator[] is used tor create a new device instance or get an existing device instance
 
+

Detailed Description

+

The main class of this library, handling communication between SinricPro Server and your devices.

+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void begin (String appKey,
String appSecret,
String serverURL = "ws.sinric.pro" 
)
+
+ +

Initializing SinricProClass to be able to connect to SinricPro Server.

+
Parameters
+ + + + +
appKeyString containing APP_KEY (see credentials from https://sinric.pro )
appSecretString containing APP_SECRET (see credentials from https:://sinric.pro)
serverURLString containing SinricPro Server URL (default="ws.sinric.pro")
+
+
+

+Example-Code

+
#define APP_KEY "YOUR-APP-KEY" // Should look like "de0bxxxx-1x3x-4x3x-ax2x-5dabxxxxxxxx"
+
#define APP_SECRET "YOUR-APP-SECRET" // Should look like "5f36xxxx-x3x7-4x3x-xexe-e86724a9xxxx-4c4axxxx-3x3x-x5xe-x9x3-333d65xxxxxx"
+
+
void setup() {
+
SinricPro.begin(APP_KEY, APP_SECRET);
+
}
+
AirQuality.
Definition AirQualitySensor.h:19
+
void begin(String appKey, String appSecret, String serverURL="ws.sinric.pro")
Initializing SinricProClass to be able to connect to SinricPro Server.
Definition SinricPro.h:176
+
+
+
+ +

◆ getTimestamp()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned long getTimestamp ()
+
+override
+
+ +

Get the current timestamp.

+
Returns
unsigned long current timestamp (unix epoch time)
+ +
+
+ +

◆ handle()

+ +
+
+ + + + + + + +
void handle ()
+
+ +

Handles communication between device and SinricPro Server.

+

This is the absolute main function which handles communication between your device and SinricPro Server.
+It is responsible for connect, disconnect to SinricPro Server, handling requests, responses and events.
+This function has to be called as often as possible. So it must be called in your main loop() function!
+ For proper function, begin() must be called with valid values for 'APP_KEY' and 'APP_SECRET'
+

+

+Example-Code

+
void loop() {
+
SinricPro.handle();
+
}
+
void handle()
Handles communication between device and SinricPro Server.
Definition SinricPro.h:234
+
+
+
+ +

◆ onConnected()

+ +
+
+ + + + + + + + +
void onConnected (ConnectedCallbackHandler cb)
+
+ +

Set callback function for websocket connected event.

+
Parameters
+ + +
cbFunction pointer to a ConnectedCallbackHandler function
+
+
+
Returns
void
+
See also
ConnectedCallbackHandler
+

+Example-Code

+
SinricPro.onConnected([](){ Serial.printf("Connected to SinricPro\r\n"); });
+
void onConnected(ConnectedCallbackHandler cb)
Set callback function for websocket connected event.
Definition SinricPro.h:430
+
+
+
+ +

◆ onDisconnected()

+ +
+
+ + + + + + + + +
void onDisconnected (DisconnectedCallbackHandler cb)
+
+ +

Set callback function for websocket disconnected event.

+
Parameters
+ + +
cbFunction pointer to a DisconnectedCallbackHandler function
+
+
+
Returns
void
+
See also
DisconnectedCallbackHandler
+

+Example-Code

+
SinricPro.onDisconnected([](){ Serial.printf("Disconnected from SinricPro\r\n"); });
+
void onDisconnected(DisconnectedCallbackHandler cb)
Set callback function for websocket disconnected event.
Definition SinricPro.h:443
+
+
+
+ +

◆ operator[]()

+ +
+
+ + + + + + + + +
SinricProClass::Proxy operator[] (const String deviceId)
+
+ +

operator[] is used tor create a new device instance or get an existing device instance

+

If the device is unknown to SinricProClass it will create a new device instance

Parameters
+ + +
deviceIda String containing deviceId for device that have to been created or retreived
+
+
+
Returns
returns a proxy object representing the reference to a device derrivered from SinricProDevice
+

+Syntax

+

<DeviceType> &reference = SinricPro[<DEVICE_ID>];

+

+[] Example-Code

+
#define SWITCH_ID "YOUR-DEVICE-ID" // Should look like "5dc1564130xxxxxxxxxxxxxx"
+
..
+ +
..
+
Device suporting basic on / off command.
Definition SinricProSwitch.h:26
+
+
+
+ +

◆ restoreDeviceStates()

+ +
+
+ + + + + + + + +
void restoreDeviceStates (bool flag)
+
+ +

Enable / disable restore device states function.

+

If this flag is enabled (true), SinricProServer will send last known device states to your device directly after connection to SinricPro server has been established.
+For every state the corresponding callback (like onPowerState) will be called
+This is useful after a power failure / reboot of your device.

+
Parameters
+ + +
flagtrue = enabled
+ false= disabled
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.js new file mode 100644 index 0000000..b61c144 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.js @@ -0,0 +1,10 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class = +[ + [ "begin", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#a1b5b66fb0c539b9b5f5f58a135056c75", null ], + [ "getTimestamp", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#afb2be26eef972203404140612fa31326", null ], + [ "handle", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#a37c2d0658e498b1bf878f8a3d9a7c5b4", null ], + [ "onConnected", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#ac33a355adfc413d4ff36974d735115bd", null ], + [ "onDisconnected", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#a654bb017ca55b448d55bb36e0346f38a", null ], + [ "operator[]", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#ab68694b0983ae36c532cbd52adbb180d", null ], + [ "restoreDeviceStates", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#a27a9bb7f1e8bde0f39398649493b6f93", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor-members.html new file mode 100644 index 0000000..99d218c --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor-members.html @@ -0,0 +1,109 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SinricProContactsensor Member List
+
+
+ +

This is the complete list of members for SinricProContactsensor, including all inherited members.

+ + + +
sendContactEvent(bool detected, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)ContactSensor< SinricProContactsensor >
sendPushNotification(String notification)PushNotification< SinricProContactsensor >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.html new file mode 100644 index 0000000..699d9fc --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.html @@ -0,0 +1,235 @@ + + + + + + + +SinricPro Library: SinricProContactsensor + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SinricProContactsensor
+
+
+ +

Device to report contact sensor events. + More...

+ +

#include <SinricProContactsensor.h>

+
+Inheritance diagram for SinricProContactsensor:
+
+
Inheritance graph
+ + + + + + + + + + + + + +
[legend]
+ + + + + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
bool sendContactEvent (bool detected, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setContactState event to SinricPro Server indicating actual power state.
 
+

Detailed Description

+

Device to report contact sensor events.

+

Member Function Documentation

+ +

◆ sendContactEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendContactEvent (bool detected,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setContactState event to SinricPro Server indicating actual power state.

+
Parameters
+ + + +
detected[in] booltrue = contact is closed
+ [in] false = contact is open
cause[in] String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
true event has been sent successfully
+
+false event has not been sent, maybe you sent to much events in a short distance of time
+ +
+
+ +

◆ sendPushNotification()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+inherited
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.js new file mode 100644 index 0000000..a8097d7 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.js @@ -0,0 +1,5 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor = +[ + [ "sendContactEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.html#a452a4cfa3177d8d8d31c5919e9ccbb19", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.html#a04266791a4b23e9614b8773edb5f67b6", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor__inherit__graph.map new file mode 100644 index 0000000..787a527 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor__inherit__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor__inherit__graph.md5 new file mode 100644 index 0000000..925fa8f --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor__inherit__graph.md5 @@ -0,0 +1 @@ +4974d91f0d4e2f2ed8ee0bd372d3eb94 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1a8d7cece8af4c4d374718abe9a5df37d544b985 GIT binary patch literal 7950 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 + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SinricProDevice Member List
+
+
+ +

This is the complete list of members for SinricProDevice, including all inherited members.

+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device.html new file mode 100644 index 0000000..4e8d449 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device.html @@ -0,0 +1,162 @@ + + + + + + + +SinricPro Library: SinricProDevice + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SinricProDevice
+
+
+ +

Base class for all device types. + More...

+ +

#include <SinricProDevice.h>

+
+Inheritance diagram for SinricProDevice:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[legend]
+

Detailed Description

+

Base class for all device types.

+

Supporting base functions which needed by all device types to work with SinricProClass
+Implements basic on/off functions like onPowerState and sendPowerStateEvent

+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device__inherit__graph.map new file mode 100644 index 0000000..c1bbf86 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device__inherit__graph.map @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device__inherit__graph.md5 new file mode 100644 index 0000000..a40ee1d --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device__inherit__graph.md5 @@ -0,0 +1 @@ +760621c7dfb83d93b805e24fe893447d \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1899644dea30f44206e43a50cb8a22fbfc756c3b GIT binary patch literal 59937 zcmZ6ybySqi|38d`;L_bK(%mg364K2A!V)6gy@Vj$Ee+BQl2XzQ(g;W_-7H=5T-=}E z_n+r*4xGd8&dxP6?|8+8tEtFig2+G!2nd)8?`1U*5MG!gARslMy#)TFzn$|1`18_C zNnRG=>G>zOy*Lp8fd)ZAR!Yk=^Kiw>7i=-xb++1)$j3aHRB5k^LdHz|;q z5){BpM=)huNJE#;#>v5)&&0HANbo-KM*xv>d?iEro>|vCN>U%D7C|bJdL9#|M%|eB z3AHu<2S#2G%j40k^vsi;Y3#9Op9z;Y42%<*J|`}}NFY(%{r~qXTs26gi=>*2jO@*e z#Gvt>G_9o6RQVJRqd!L$s|mJ@kSG(`?_@W=lU^i=5!u<<^Z`5Vhc+mS1WB*(-(39l zghg9O?U*X_RJXxFN-1m#dnAlXEx_Ok@r34(s3ClvxM=P-s(Mla{b^#RD2pTzc<}#T za9_+|_NEhEefnM|YD<0R#^TgYLG19bF8tl*J4M^3fEcGFoK(WSb#>`z0Bc7#=5`oV z$NbqCq|++7SxS*=|6AGo{_JeSlexd=dWbK_bLz1#b%^tuv?V(_2c0Nkao*BbYQc*%*9e2QG-$69(yE_qmXn2R!(8d71gHF!jDvR;5 zY>Q8LI{RE5mz>>A#e~g-$9Jld`PivF-ybR#%j@i^=CIpGb;;T51BL<5d+bM%S&Dae zQ12Datm|}U*1@9Pz6?x8R;oQ)r5`z|_*#n(QWKUALWv~C_iM)gR;I?d$+@R3fQhj{ zGao0+!IG~(r*Fc=x9V0iKfTOQsnC+---;kK*PMyCtax}&y*?d3emEW5ou>E@f8!LQ zEb%C5#&{Vu6l6O_g-?iGt*g+RL0j|(MwzYI%0nu+A_l)z#LJ+~$QRIvAAYAgI}!V9 z@t+>$$vsb-&>NOhnWjSL7BCC%s`-=s9yAt@lGs(W2UuC}A!y0hr?*A*?7xNfpchwn z25m>-a21A*dHl@Me=Cv721I-R3=8pi$tx^Oqqx1gEeHG4-hOxCsa?sRGyG5wPPNYQ$dpvq(=Oki-T3&*qJiMz?eBBXncsIb1|Cs&B?6X1?Xe6 z^lQE@W}T=HwRNO*Lx!_QWMsO(cs{=9E?#2UYRq-vd6NMQ(l&GRBc)%!r5ep@!&yg3 zPXrhx%@!RcD}cL4yXhc}C-nqT8)Vg>qrkVD88w6g%%@Fbx^OGcm`dBCu6fipi(d6* zRw8$c8Oq{j^u9Z0@Ccf1JC%QQVeVWwHBSZn$nXq759o;HXy#l@_Lm+Vgn>Yo{`S+bK0*Qdfz7 z?ZMldSotY%@n{2gp4I8h)~>Rgs^b8s)x3aW5?>h$m`BAGrFm^;ZX28L|qK<6??1 zLf|2naUWFrUf#S^GiKof=4~lICnF%NNj&StL>%dSoMr08zw4{i2*Ipy8H5q6$h3g(MMy~a7)iv=f-Zs$TVbtk>rP-$3R3CeWgUET@R?o&sTpTI zb6dZT0a&yl-K(<^b8WYuF@$>7vU^mESmQ<+QgL0rkkRp zlER`1&0#KYr{P!Z;=(ucV=H{xrH9dbgD2^rNTC%CB;Iu20joue6nAJ z`uFvN>duV%JUQ^wN{~jeL{e#@wY0u=WZVB%*lIQxzTv)lfA$WdJ{Ei#7hTP9G_|7D zLe$*uR`u}wNX)N+gk9}@*Q}UZ!P%=DG|pgx`Q$12a6(t7Y4dTnaeV+&-12*hG~Jn* zB_5~o;X150GUJn2Cw#~Q$d?_9jmCY9>h>*GMQv2B5>lG8l%TNr?34G8x}5BBviGJ)|h>IVBS6{2abII=ed2U=9!YI8rPVMmst~^bZy1w%zPxnfk}{}xA?yBwC;57 zpmgQ9HUGYtx!Tuv5_>VUVF43o_;wpploCQ{o*3U+LKUb{$`{wTO|R6hCk&?8%8~?0K>+~)Zqx3hTo?X6AO;mO3c#2T;y(nhQL~gp$nw2|4yN97 zS|R;JjHL$?k@tLIwHzb|zT+J=FdcT{%K3JZk9nYZe$|wJx#ws5L0FYc#2m7En=JCQ zVyM0x$VX$Qw}z9q>A#=HRVuQAo(RFGp8~o zT_>Mb=DLt7$P}wMg-jrv%ii#Fpf|QD+?UKPp=>*>LiWWw4y>$-QG zXI!Pd1^P%o>{V$>by|RfRI<;qh9YT}zRb$Wxk})QWlV6wLfP+Mra`*|EPdoGdWau5IeD#E;x8?}9XQ)@3{)DGpWvo4)fkSN-bK_rNTkBZ@sST`GlFN< zo!3IPv>#}6Ap-9%)ttQW;{HKZ47isfYDp=9&BtXoF7QFiWb8hIt^{Q&8)?OcF+YXY zIgKJPuJWq>`xfaGJ%p+gHx}lt)J#I+=;M6Ox7S}n6;VfZuJ z%Qu%lgYlfhpxP%nrH*LbZr;M(M(e5CVjPt7fGGV3F=d<%ye@Za zTCF`OxHApOz?GQQV8*_oTun3k$c}za9V3Hzs%)qSUAJ2Ps*<(A;!!>|MU=Ai5S7Iq z9UU#K|FZ{KMw?o%(N^DW(hI{1Wf4Jbr3w=0qIDCM<8)Bq{Z?6@ezL(tIQ5oPbV)_> z(G^SVv@3U-OJb?U6p6F_LSxdp7YGmpHSQSR0HZ9NBWPbmzYMC&Qx=jZWYp=Gf%cY1er6vw z3qD`69GQmp@>%lLq=ZPV`R2OxVR+F`>osI~;|){3)l@3<6+AzTA{DQoiFHO7bw%v9 z23=c_l}nVNhMmT-#5U@{Q6%BKmVC8AV#6U6+eqz?35%6evqvI2$*6&;_mrQVFEJz_ z5#g6{^1|BV#GW^Q9W8aGqRQ7Yy8h9oGGC9AX6b5$4XRX^?qe;5LbDXXoCAI2{+?KS zBxHiqdT+Q{2MZRuOH^cqrPhm-H)iB7ctRrO(&xqG;pY+eY~-b%u>8bV%uq4QLSJ-LaP^nPu9{#bN;={l(2D52BK_2+ zZ&gP$_}r;7S4fl~58Jmw<1z5ndMC$738R7^3%%$LOUyaRG0B{I+{7JWddf@{$# z&g`w$w&<7-wP{_#J4!w5HDjrrCY3aVV2f9!`7G$f$ukp<6L|_{q4@99d)IaE$hMSO z0GTWL0km?u2(B6!W9YOjDeYx0(mzw1t0M{77j-oW9AXhm+pl%QUC~@$0>!6rDb>fD z(6Y=S;;QEB$h`U5uRt&|!F?W0xT*f0avY^~by@mzthxr_M`0Qy2KRG$iNS5oAT94D z=uUznbw`@sh?%R1d=h`Dv5|UHiYkKk2G8R&o=9k`chPKpIco$yoEm`iBu2FRLw4KI14+jN3h(wT-A-V-<449wDLtbcXV?wsj`4| zS(bO~ec{xO=9A3d)cb*{;q6;c(G+q!DA^hRFuqQBp@VSU@YTXXCvhbH8^?HJ zWG|6*TgcK-ALQ2S+d1r3)9F{Fb}UC7fzQ2aO49GrD-M=VJX&ftxQ_W{RK{k5u4IKZ zb-n_Go?Frz-B+v+Bxz5Ug4o5*8t_>E2M7@_pOhCYI*OVyogWwi-IQurlbv^qddQuU zX&oyt+jwib<^7l{I=y!Vl3?!WicXkSLx_c+NUebFLf2Q!(v{Iq%5Q+A^0F*ny-fB- zr_Sg=^wO7bTszI^J@vuC{DG)j0Ot$-uIabhhI(QqHsW9x7nif;e-@yxz=6!A?Kao- zj4iKF_^~Q?;KoV0MvgXSm%KN|;!^p)mPv#1V>sHAdvb_f^0Li=ZJM+>iWh-e8oKT0 z^3BxnD^}7qA{wAIY-kx`;{}r4Lzm?r3R8b=d#Ae_#SyVZGFRjN?<2q-JV1+Kn|Ck|wB?Y_Uxm-5< zPj%_Fq+_;U!NJRTDk%L)U9EZ5*C|uMc&yCpBfrcW>+edkixnf$Ol(S%IFSL6EL9f- z4hDxRszZe@G-`pyj!csXDRp}!yscHGQfF%kWa3bnRQ_drAT3vaBp)qYW2nYm4x{5` z+vLg^{A1l8bvxM!IXz}aA45F}LV$wUL;~iS-a6pwzlIb4M6}teB2H-$gI2HURRnIF z@z@szUB6oXi$|o2ZNv}Mcv9#1cs!QCrvCmL+_!E&zxJ*RtgWXg>Zji99+scXXlm<~ zPA+QoOz2QzDx=MfJ{8nHQV>%s#s=}QNMW)jz zfpbsy!N>qHvuNoLA-_?pXg6NclaYX~F$Palq|Si^hbuxS*@1IBdye(!ctt2!R^W>3 zL-2|W(iarrnGvfO(aHF`4ei9PpX5q=AYGjU7^iuKRv6=dA7>^fxn8AhdVnEqOq`st zY(}kou;L$vz}Ic4g~N9&T(siBHu=}0ddJYx9$VNm!^&Bq-T2??iZrd zz`SizOCY86_V$iJ$e!SfA>5?PSKPWPXEhIavo>)bW2ztUN}+EpQ9`1Gs~tcwquY-7 zZV&^?%e2FXS=sdKdYe4wWH|7i0VHyaX6h%qVk*SUSom!bDG!d8iW_dn z%gka&d!Tv5)uQSr00BD_p725ig+zqm$lcC-mYH}!d zNH54a9%r3TJNpQm8&}A1Ei<>uyd-v4AEbmLv4WT4^JVZCkiOU>&GIriPW{}PUu`X> zC{kh4MTby&H+Q$AjTm&p8)%&W>w#O)fHHNx<{Z|ws@?LA!V=YKx^IKORX(Su2h{29 zf=)egdDBlI0!;0NlQ8A3rV#m!DNfUSLH^Qd-QlLd6~_`|ev>=rtS{Ule>TPyBRa#HEm2e_F0uy$SNg5_Erl1| z{FnK67vQyNw9Cq5_%t{+rz$>Tdvbo7-4ful*+R82B?S`opj%1NLVbfE=fLvF-TT1D z7bxRnmp2W#j{#jPOePMPN`_Sff}#<+hg!1{9|LQsoC7t}!Z#3Oe|&Wj6>b02e#|iZ zr7IDCg!vmI6eGt7>*;6M;ml`}R=XP~nOM?Nx%l`0Yu%#$Yu(bu?<1PVs)fRxFIg>d zfTSdZO0-6UmNT~13>;$(kuH|txC3WsoCk7|&HX5Ma(AO&QOo0k=Mo+z{z-6r=wr-|u%N-#vnob;gdRYkaXtO$)`6 zYL7oxB4LxPWQnnV82*?}(^L4o`(U!`s=UNWM&;R~rT8YI4td^-Jgv34<(P6_^V8SH z5JQWz3UzMZm){PY(BrA8k3uIjV2|B!QOgb>mvr^6Yce4jwze?pLX7cdJuX;Rr95jI z>S|OsqKoj27Co!as^oB{B|hL@F#otnm*aspSF(FIWR&P%&0i(=G>IOG&11AKaAm&{#Q(? zar5)CE$Lox+G^j(N$do`8nueYug`zN7S|UPv#b-4Z4>Ib{vbGS+dGQFI*3xzsELic z#n$zzMJzj#n_R>#qMQx4x$3!7jpTNrUBrgu$Br8}F^~-?afdajvUnBOi6>vD+4``Y z2xlc0?m;Is$JkSW-J-#*B3!6Yt2@y&f837%da0G8t)E@jhAb{Vh`-Z*0|6CSdNS!p zC{gxh;^a?SB!6s{aR@(V8uaAIq3D zzcDKLH}-S)KctSuq4zd}IFQ}R9a}WlU)L>2+DGl@#q{9e+J7odFtN0ufQ-ffWrhY> z;;VBfjEl-Mws~=nTDQrDsi*=0O8zG!qn`U+ z{gl(NY**k8*<<~Bgs^5ZAu?0vzy_A=lf6B!({#xPJL2opdhBHX$6FKl(!f6gR}D*7 zHEok)F#9NZhkSZ#m_#s7UW1}aS>%3uep@*MTm1u7F*J*+h&vnQn?VnpuoGrA-Hnxn zgC|kmO}D1n#c0rj_e=0YNDV~=XC7a%ZAYwK@c3juLfSDX411qw6=x{onA z>;PsgGNaI?1s9(>B*m(-6*u4zj|%pKoI6}@NKRuD+Pz8u)LBwT9rMI^VSKzLLTVdH zky<_rB~NL3ZpK{orN$xAD+mP&2-&)jpKH<~(e=V_u}Bh}s6 z-9Dkb6@GQI7(u$RT56>2RIr?P8X2zYoZ;Y9|6QW2-i-U02uGd6wlv}XKSe}OYTO}G z?&c~h8NT0Gt*W(!D~VcSI3m3!8whi$Ra0*z%bC--cIzk^E)KXivj8`meQm=9n$DXc zkaIR5Nw8_hXz3x;ct#)pMhy+7fNsu{07wmgYlLO_uMTrZqtt`ebm>X7on;}KJd$qX z*DZkHG*=c_$ny3Y)|TMt#pw%^6MSPIUbDNZ+yzXvF0W`+^2d-(eeB%);41Zi z?hd+Ul>Qfo2Pzg_MzP=9{00X0nA4zwj-Lnn1941e)#X*N-(^W%#eog1b`GB&U}wf%EgSf@UWK$iYS- z^^|!GRF_K*z(g`AIsr`J*&Og5K56>>iKl8tfTOQaTzIGQMCW_0ze`H zfu&u$s707;f-Fm3TmrF3C8Vs-N%NCK5Xql;F;bLQnHTb`lnv4%CW$Co0Nf+#^OoQr z(C)k-1#9L%in@IF**!oS)_Nh&(2lZaBYNqHJMI?D`vv;Z8uodGfe3x)$g>Ecy3L%4F!k(t^5x%tv>q|Xtx!~&ZsfG%TIrD7myRs#>(YMUlh@tPp z7Fo+SC#1F^${j#4?2^?(u+6-|hc=(TE7~Y(TDCkgkN{Eabk&j;rNskcq_$QKUfOoI z^@!DwL(nK{Zf$L?f%XpL>U5N4nYV?K(g;8@PlKG}wB+)AWs{Rd#VcjB!{AcMGu2Tg zfVz^u%+wtL=(kf%zM3;L-^cqw$0#g)7ISdngsVayi3}}cW9ayIg~UVr{6z&-Rcy|- zQ^dFUA5px1=q(JnQv5w=t)S?r%=_|X8OKM|dNhu;Umd$m^re!o0^f&>BDi*7z54j4 zbovhVij&ZYh=_lHc#w>e6*?sOKQ9CFc>#ns7(p0|7@<=S*NT=>uvaVBgH0?|ar7Gp zyL>ZNvx`@uEu48aX;!`gcO5^U?}yIN*IYPPQJkI>)_Xt|d@-)RC3@D#s*D2d05qo} zyr%D|BLU)O+#QE9->gfcKPR)S%C>YADt1slH_BwJgD*%0V_LeXV(_lHuMnqc8r=H| zjaoC%b<68q`@pw9slAHIs$^nu3n`n68x-w9bf^$eGT~-Gm}4MIEFk%2sgMCuw%!_( zdbT2ir3t4lCyT!aCQEUm&51YFg1Q zVs87R!R!ww4aA>HTE2X86HYvnLFD zf_By^u}|?@+$;Ko;hjKd@om55ps>zr-aX>9{AXQ+Fs^8Vy8(OVc_fEqjMER2&dPFr z#l~phBDEzA=7~-32k_!QB#DQK$^1n77w@07(C@tN`FiOD5J_jsf9TbKkzt%0QytUw z1h0Vi?-fA8>n8j4p6SFrvoN?srKg2?s$@eUUmLuCfILd!$&EEXcARY!DbtBO6G>SI zg^Pwm183=tP1t;K99O8I+suCvaa}10#(vPh* zJ{ifnvpC8$VM^NXa_}@{ z+U5us!I2~`AU1w(*HqzF4*0PN}y2nkfU?L5z(S%FrfU6XNrdGRB!T3XFZR z`Uzm>d_V97{!tMpUuOwaioAVo%p*0{wvoleiX0-Ki5Wq-Nns7H^g&`Qpl@O&6A?mN zSUKa8;n3uG;qGK)f6YA>46vmN!9KDr?F?)qF8uZqHPQ)W_t3%tkaG-1l5->4qs7)) zbrnKbG8f7&t1e!ZsjpXP3N5(QaR)98|8_Fe|J<7zHJhxbjw4qM_ocnL4q;E7Kf!WP zHJ_>q*tlW%D89KYOdRHG^Yy{!JEd%T5PZa(wXJ=tMlGow^{!>?noVAfJ9|m($}JfZ z1eGwsd3V=*cra*smC1cqmFq3zo8&aS-d7z zV9#DVCU?Powuej}$M`z_gk?w8p=~| z6CGGqn`9vb`>!Ny^fv>hN74h5E~mMtB$hx&sIL{CJRgL{QL)r+zO8!o*8}wmHfm)s`~cnYXyrCINH$!C@yi);Ly+eQ+Vpf zsQ>0x?ED~*x-kPHeRu2B~4-~3TcW~LLH=978(ZW&eLg)4goyX3X_Z_{U2 zk9L)g-m(GVa$4yp$t8}z;WN6Z1OrxF0u3PkvcFRhtU?siedOua?G$5o(Yc$q; zDoyoM0Ib6O1$e(Yz~-oRS2?@nKLV0nrg03-FDPv)YoO%uHGz$={_k3n$d!42$@JA_N>`EoLjW=nX&;XBfv?;Z@rZvXGzl9}D$39=^R)lhffAQG z8fhjrFAlk@`N>Xb2&sm&gsVssMHIbp6HwV=8(0U;ZxP@^nX5Z5@VJLCylq zE`gE_qY108mnYVR)=b8-C11yBW;?k86HwV^|pFDQ`;K{6op(;Hc0( z5$=Th_ke{mf7G@z0TWQ&K2-l&1gt3_kq;2}k0`m)3XQvYd4kD zztul_76sxRakd7F@ZF(BcTMrs|QA;6_Q!6G(z>H`wazv%}XJQ z^%Tz~?PkRFUs~C3v&#CzI)I8y*wIj-n7>HIXb3oLT=0Dfh49vW5bF(k7Vn{?iR?OY z^|Gk<12&251V5J6D7_)CdtG{(W<7TKLQ3De8=_U6en?{9vH)j{IX&o*|Hcl3e^^7# zT?yy*Uj%z`|Ihuk$p*9(wOts&BZ)_>!`x_wO%IV-=;1wPfmVi=Be8YyjBo9{_F5Ug8qC>v9ySbcdWwiki(UvuxNg4$n(qtIIK7}Y%yDw$eU zq~xJ{Q-khd$vOcX%5Z1a?kslG+fLhPSn*et%Ba4ZWF}(7oNqU;8TA360eI*1bBDnp z#enF@I&?)Sq+?nfv~i&piBphTQCah*dyL867GvJZ2BVX&YWl2}q^VV{+;R2otJGCq zO=D~TN~a-sQ1nnBZWI;)PP9BCT#chNB`gP)U!WUMi`yZYBGjn7%%nq$oOZgf2a6>TBX6S8TA9OPefzDFtvzx0Ie7CHekYf!g7ntn@l6A<;^Ii3oJcm7x^E*my{X#|ql zy|)+1f@+fff37HD(nR#Rx>F$fW2DlLg(}WnyFN<&H6=PkyX;!Zlc<|gWOBMqLF?p9 z@0zd2mDB{Jj*4&>42N>n&<=nE-4%DGjjG4<~N&^2m@XS#bP3i+AeXLPtWEZFx@OL^< zTHM)9*B-0x{CTPYFB;AI$D;@@K+Ndnc2J9`IPV`~y~uQYY>yMK#@U+h5-BoF>oJ5X>AcJ!9oM z)&CT_bhhsKw!>$am9>1)=c<~pMK%O9brkK^n_FoBS01|O%NtF_Z^ zK=HJ5Yc??z=w7r-PH z2v&Wj_kq@Vb^jEHs|VNe*^KzICg_mbBIQfd$O=dJzG#3){Sj8XoyRpLK4L(3x8kqtm&1c$_K)X@|^VxAB3L$ki@{2|7xT>=-%GidK2BAyO{gKL^aIZIc4eO=fYJA+D42AAKTS5R+A93kgyiyOMj zu517Upu!m&UZXm?o|K}m6BSJwJ{HIO<7jW{egN!%;V$~&}}V^ zVd4N?52yO;AGn;)IF4lN#agajl&0=z{3>dCtS(Sh$Xv1B+-qG1T8yMBRAF zG8H4XKm8MwysYaK?czq8S{1Qu>?Uq~t#`!@MKAkFCr$pkM3vTs+hkkc>II#v~Awp5gH zQDuKtmH-$}(h@J_RTPRtroWLf&KSck8*toQpHvc?$Ke4=aPH1oisD%#l?%~~T(f>K z*;=NB_J(yH17wtjb&%9iS{e1Fncv?kNx=SB+eM2u5$>3cwt8MZVYphlGx)LdN)zyv z%LA1}z8R#qK$bEPG~AOW4YXQFh>S=R-bVgrO=lD+NkSYMfiUo8@x;>1_ZW~M!jaUa z%|X71YSL1G4PZRu38RQ&cAb+MA9bDa8KFg{R`b-PP|@(T>*S%jrVsz1nT}1tLW|fE zT%4y_+&t`8_M=gIXiRGJqcS%jZG9uE{w*FrPjK=G(G^x)*X0;R?N|buEuOK0QU%K3 z1GyH-unZ0|(F;FrQ_RyF=oUET;4GT?jev}brbAdFig|7lwU_w2H70FiDIuw3rH4V- zR%s?G#kNpO4y9n#Tss7dGT-*lMQ9?{geyc**4_Jqw#S0R#evp_w=l=wn;w_A--c&SD$wC37CT9U!09 zVceJ=Mae3BD#7g7T#5<~D=RWqZ9~cwM0sJy2Y`9}3}_}T#br84^`qW{)}H|1RUky} z?BT*vus0ro?hpn#O5Xjfj-a9@rAj@LbgME^Np8eV?2 zCx5j_?+&2_3OK~sZHn|&7v1Pf|YLQ&`CKa+%4p?IHOc)bOp7sh+5hM@Kn%v86!!5nl(o;9s{_o0$5maj~yz1 zj4XYP5F}U85}H~``6S87xB)Lr+p;m10y;4)(=ry-!WmSZBD6!6Zkco}6Ydz7fG@B6 z)6@ImWmmYA#lxQiqgALQo%!u)LHncrwL}fSC(9Pby$AQyiiG#ujegG*GIZS&v^Kd~ zLETWg`O#Jl0cCSkD22F;&cc^`p}sojKhIrelp)PK&0lCiWyhz*X^R-ba{pOP*Zitr zkHLRUe1wsia4jAId*_Jx!=DBb@>H1CLrctJWGj;{k_)oRPpj+)eqGqNUT1NniO_#` z5}R=!bmBC%h+v+?BxqiSaa3K}DpGG{mb07?xvQk~<^>G1$AwZ*fs!tEiV|pJ*xi_9 zDb}O9kLf3#0W&9))NflqVK!d%_zu$?o2?cK0b241a2lvBZ5Wf5&iDPV6}Nz>lmgq` z8RjZSvf)wX4No@(tyOM>@)?FHyzMz~lzvG9VZ^%Jn=HHV{xgk|jiW?`HuHP0=&a#u z`|tCSg=&V_!gBe_^dbMaA9k2&GkANoB3jP}Z*P3;#_C3rzKZf=WP^%B~-nwV}Pkg9xSkX7l(?syBY5z9C_gAW0M zCu$z|vk1a`KwC^xr0hiT_pb+AC)_vAnJS?CuPP$eJV2TbtVwHgj9t~kiQIRQo%91w z+vgOmhqm=@^IMGubfT=@)a0rPD_sc->?Vye0jUgyj-vP!y?R91-Vpcb3zIl&_XER< z6Y59q)31i(9#hfl;blVV1_6QGk9~gU^1!tK|Eys)T|K7m^s-=rIT6LIHu$*@DcHL= zEwe5t^BW9df_i#dpY&p_2S zhA;_Gx^pqqe!k*(dG!Li*$Or$g8e!=X{oI}`}?t;uOOMwJQnC2kSS0+pGc}lQT|H5 zzyG%06pW7IPVLyjyFy~jb~xFCYp>pH`Yg+4K(-8kNs<>keM5`JaKt(-1C=koFaY|b z=A&ZCe`m46<5Qbc7jv1IZ2L>J|Cdk}cOv>1t6E%eSc=K6Dak8Z$q|JtsZC&shF zv=)5h>A;za2nishUC%JiDVthewvE(Gd#fjPr6{D5Yy!Adpt16!7LJcFr$<@`Ik6a4 zSB?J6c~vwhg05tB0Fqf$r<`iM|y$s z!(+;x(off>zs4Ly&9u{7BJvv4v(s8F$Xf-AVy0plL}cfX}X=I!K)&g|Nhggeu3&xK?9%%k&xLxmM}OD7GtwD*pybfp!LV9 zX1e#uVx&f@A#T5t!uoQwF2FdkvfQ*CI1>(QZk+x~Q5?E4tp&(@L+~K_`lsNXwnKwX z6>Ov{!gcMBA9aaUQw<(>Zm_b794kJ#+as3(JvA;F0f!B9T)M@Ifw&VGWrD{O{kHgx zM4u~be-R1b0|u@Gh*i}Ibg=~sIxe7Wc`#Q89@dcD$c<1aSdUq7KKlfl)(p|I?2@OB zJ$yTj{^nUYi2CXqRUuH}r|Pr2Y;HY^e}EH;(doGrT^Mm{Z=eF3rgU992_tIQ=*|FK z@t=`Ub%}J9sv%pqn~E+8j?wXVzLNZ6MW~%ejyc^@Abva3GuM#F|L~?lQVJHw{jBb{ zwq^l0>+mku5I3|?na_g3LgF)swNzUj7j=~SfD;@+0`p-4uDH1A;VU`&?t)IRm$$6B zt5zp!>^Tj-(vBfmuQs+nURdbi%cVnpLT%Gs3n6%khf74ee4iyel_fPSY7KZ#fAxh! z0VfqDwEs#IHf>-)JnI0eP-`x~|Da-vIYRxcje=`a$cXLzx#_tAsTHR4Q%DyNXg2#?{%NL4^ibznsTF&d%}? zHRG_3`hbS2k@dHo^{Azz$NPafKeUE8HOILE|1{iDx!vM*vyWJgOgu&%rH0^&&jq3e zLW5z3EL-!>N+3>!Mf_X9&WsT1l}`H{B35eK(xv|iDZ#%=oV{N=Y4R-LqvM%or<{P%NyEB zb_Qib3HdgY0=rQrQxq>`U^2uX{VyGxvI;U0AAAAVcu!zYprp5OxByhl3el%ejKlY& z4{(p7aJ;+S1n$J7m^ks)a+PUn-*ljHUNvXxFh!D)CfWerQ5RMY(TnZN(QVr4n6m`mzqvPyPye(5TB0)e@FN?!P$i z0T@qXA}pO|cKrtlA=TWb`LmsLuV;pD{oPu2Bb!9wpYlH{mAHk3TXQLjRaf=$*$)5j z9&waAaQ99=ZX?L}7BC0D5ALBzXrhu8Lb>Uqv>NQ(2ejR!T2En>mbYs@&`Ym@*qy{K zAG1?o$qkGAM$H4+PcJ+E7%jjg4&g`Bhe`zgJZN{xS@HO;$rGs1FqeIPLzW+ zW^9a^ZInp`%>W<=&}w68d;se;UB<=|tiM7?>IqCu%xZQHLFp>LPlo$R!ZC%H5!z-C z93!dErnISlk02l8efo?!(jc{Mrc4Xy&J=`%6bMP731IehG{)wLi{w)oV3e62Oj?%A z*t$CFuNdavY=DL@UyXB;WYfa_Qr%9=f_eCoT{}T=UXon%z3o?uPnFUN74B}$Zr0ot7+7juie(zJ#48F&)u z#KCaZC(R#W0JtYeV_O2jyBiMCwVICy*&~5?FXb|s$yuz0Ipd$!rzrY!WGQLO6zi1L zXe0sR!fRG+OTb}SOXVy!Ow01xxAmPZ?*PKjW)ZzOB`}r;isH+69GiqNAwo~a?#J|^ z<{BAQ^|Vq)1DyGrIgkC)s#7jURi!jmXK^SuPJEUzaD%WBxM7{#Y#b9Q`0tcLgK~bt zvmkyf4u*^6&NsC2wmZD*0I+yGnsu9kss$zz$LOhGYM5fFXJ16M`(B+{IATkulH1-KW6%^PH=J%;|6e>ZiY%KjwWnH2;JO&rV01gjiczgfcs4G-x@dKDz zdk?Xx5+-J)<%IE#BnkhP+5=Zc?*`hPh)0JDa=D z^CqhtpNVPlOXeD-?QC!pe(AO9`x#Cim;XsAajV2b9)gRlu2S;`4w)y6D!)m8?c!g> zO1$ZneZRc(ig-0s__}3ctoG%<5uY0?hlz^MGrzkq#Hf^;eG@8TdC$bkl*Ke8yIg@z zBL#`kAgnBKVJL}EJ^F;eP?^BvF0-j)Im=%Vr%plj_4e1q^WOHY=xIL=-San**8US$ zSALDR=kYO-aXvic3oTA94cAw1nRJfla6em#zHQbIMNF(r1w~f5%5mgFqR5qfo1nFY zvm3m`T6StBvc5}epQ7NGBZujE-+cHIGn z9CH{)Qlgwx+Iuq8goje!4xGB>?s$SG5k z&pNyCCYnFm-69abreq${H5Zzp(;M6ib9KaZR<)dtr5Q@x3+w^B3u$Sfo{BP5V7Q@!?nNC7%PY2hpn8n@q4~+X}Lz35qs{@#IxAX|By1 zfBR_Om0_~HFlL3#-*fi2wiPPV0*{C0H1xIr7LMhb$~hxg@4cW1~DMmOsf* zMW9{?KH_*Q#|3^Mv2RY2Lu|<48xQT-qnFO+3!HzcMy7~k{ssSwv4NWk8>C}R?bmhv zC2L2|3FM`R982ZIKe86O0kmV=k{VU)zRVC=hs%zZ7z!8drA&06a0sfwiI{;? zQ0Cj81GThV2QqO;Lg))_y)vi*F=#4WpHwc}*6`LQFp+Sk!twPu(%75149U}L>hu$5 zhp+?XBZ?en)kgKh%(V1Qxo3Tl z64=nL-rAsI0gfi!d(T6*!?(OSuPi9AJp)%=%H5jPi-*%f>WDYLRf5qn-@X0ND8Q3f z7|rQLbspf-sct`k*_TP5{H;VKUhli)he9SORn8{|J-Lq%U zPj(a3BFlojN$K`eeeK79uxWiCtqJaqQ|RB%{iZ$JLw>%8#F!un6)AGW=gO9~vnLQf z-5#^4gerLgbovI}-uUX8fdhPR+C1r5k@XWtFKAeBC3gCAO|?*R&>E(grtuf}a~Xk; zdK*8Ifn({;N!ZsIaFCW>ijads=I4|PSqGEjdBlg?1@0^7koBA*#ID;26bM_W^>O-Y z@)IZNu;jFx^rRI9VzyP{jYJ;OU(DyX4TF@YciXUaHdzcSV&~xd{hGz+ypK7mHZ7HU z)2;!)(}tqMb8p0!TC7LhE7`KXS5f)0u()_I{%M$L0M*6Qs&JFeVj85Gn9U|qP$}8*3HNX0WzD}p(X znXF0G8@rD!VX~iM)Q8m|2!bkS49ZYbxWx`?^eL`;tJ(cs?nTD;woU~mipHYckNt3B zCYN#+QTCHoe(hmJovN2Iq1WgYvf&onOou2s%|D?Gv7-of!}pyeWGCZiR1Y3A>Rup; z_&NQt8N#5X_Hlzw)hjmMTh5v;-ij|2X5T{2nPcu74}HwE`Mayue;oA|2RmEx@6PRy zl^w|Wk>2b1hrjr79g=d)+byaSniUsTY1w5xI|fZxMqco-HEfPkJQXxGHQnE?IZo#k z#s6GssU5zWj2uFBA%c~K?Q0E6(`r$Kxb?2CVxzc}f?#{Usg!cu=wXDd#*DJGvomiC zMICxxkm`B1c9(sbrHQ;SdncQA`OueX4N_~8ptrQ_)GtKZ73qsX@N{xLDps)4YoM@#*2#G#_}x-Jy?)uN^HVCkM_#m;Dq(E1I8{;G8>2e2-bZS&pEV zy^@}64Y4r=HUeL=Ic;!^NBB2pIKSaqQsAI9UB}O4QeisIV0d@pqrfLmF55Yk3xu<` ztzR}+O=iY%dG&};goonqaSW|SZdeF&lLNmjca*8EP7zdyopr zP^u(iI}u16rwmons7Me*hy={JR|6>?sWD|;OOB0qIa}FC2lj%m=u2I^HJVVl0Mw=| zGBYVxpk||H2O{17itaZUI}qIQ0i5-6ELW(f9qCLuprAQ`^MyAPFQeA@3(KFNp-3C}QwY$yZ2#5LNYt(czMPx^9`$lAo4PYS=yK@{k|jOJ0>Y_3z((>tYN1C zR37nOjG)^cBLw|yoBFRj$XxNVB8>qBUD;0dQE-%NsLF`UZ;X=xjb5$zg@eYd_1@`HHnXEM6Ry!PApr^ueY>Zhs0pR z1rB;i{#Xx4bL=6H@9Rh9fp{yWd+}(y`B-Yn(lUIXVW-v97&TC)E8TW(J;a@~IR6(Q zwa%#!vNn$C3Wr(SV4+yDW7bnopsUOC?~dVOYvFitiG1&s%F>^lbx;Q0z|1qhN$2IE`6a7+Fmv>+*kQI%n_3luV!*4m|yPsGC#dZRe8 z`x@)o3+7|suPOf-XnhjEa!V=z-^isx#hhf>Do@lB!-wQMsi$G=AZQG61AXOHNrdGs zsZ7@_;x-Be7E!dBa(JxQm>JNdGMjkSl*Q&TL)W62^`EZyic6XrjoRoat(zw9FF53} zLTVKk3kVALA^D53ar6|1H#g{K#ePrwP8fVZqkV3gwQmSZGu%0)ug!+}-Oo2C-@_;j zdW*}K38-HnVsDc48q@AS(<(0cs`=M4;5acl8T*G57h$eU0;C}UbaDbR03M*(wX z4#kbC6jgZq=r~jV8nrWzHxXpo*5K*j;XUV%lEwJuvZk7sxGqoEO4ua1v6MNzxu<&| z6AX#FZUX4HmX|k#R@t1E%>_kLotR9Re%-0n7o+pd_?6x2rqlal4mGG-waFnw zZ3f^OJY7Dmk8l5Vb09b*AyE`Wp1)iq>sG0v0{gtE`+Jj$W^wSK76!;fT2Y!J<_2Fi zYx$vF?uus*ry>_BBAGoD_xk?Q=O^D?rIm{|S@MigZ_6U*vWbPsk(usMNI)2BUy!F6 zwzxq0mwE}0Cc9qvH!uhFIG1;iKe|k5fNBiU`e{cJ{*V8A_NRLkFti{@Gs1i~zulh2 z=F6@XWB||Bqs8S+Zmn#`34R41*!t6Jz<$6f_CdQX%FK%g$^<4t~?Bj-N59%Az2s7Cw+Qb1WU% zj&oQ`;7fr>Gkk=}L=1@A1LRW-p|kKN|LRl1x})qJuSjSyXqSH$iR|6rQyEVU@%nIt z?qZGW$V+^Pyw2@(QNW;p>6A<2>f)`kE?y3#4W9G_SOK^#cJ}>>TK1p1S7+%1+}X@t z5;Ei!1h`jo)~*;_3~$@{V$wm25NNv)x=p4V?5|B4N+nMrULExF(IGP<5&tW12KYbdN4|Tfoj3K>t%Xu|=pDzPF(@K{d zc)K$Mknb;GpD=%oviF|P&Th}?Gy;9+%Ja1($46iz9eqiMwXwCWe9J!FLKVMGee?+Y znEEbP<6Ag0E%I7!BLf&hB-O0mf&bDKCUgnCJLg<0Sl#y0OH%MXN#eA)yH+aRIQJ&V zPy=>B*{2%u8Kr3Q`a6}rRp3eBeBI$5w>j9*=W3L(<0cJvqTB!JelG77K@C~-jvRw1 zn|h!?AxV;dS1O9~u#sd!rpmZUKLU2xr#{E(MWaK0*RS=%jwbx4iAo?pGIX=tt4Oxl zlSWn>;yTP1hX@BFzi6b%;*s4YIE{^s3DvY8SIqi7ZI9%Z<^^P`23#dScoZ3!fsvPYYVwP3>m`3azgJ9#9wl`lCWVlg@x}S z;`aL?nGBy8&FP$UKckH=CeQ)_@%39seByA_09^024_ZSXYFbJ>%0vA(0TD_%h-mM{ z;*UU+-*3eKknO{-&H4cu`{OA>T-JH(h=za^DF6z}e%Qg;2C*s`8XJFU*_)$^F#n7sr_O`H(}{LPxq#QnxVuaqDZ-LZm;ydr*teO*nQXe zXKX{rEH2Cl)BUO_7)0hU+ZHJRzf`=g50WzU&%@#%G{Br{2%^W_SBa&FH&pwD%L69J z=W8qdfU~2APvPq^H+$yn%my~6hjrzS_Pe+Icpb^gb^Z^2PA)D~V4|TqNUl?r|D0S| zC1Gk(7V4zPWLxa<3a}`rPe&9Yk7r~4jk3baP;@@SJs3{(`hDkj(MrfL7a`1FLtO{< zQS)SdU}2kPMXx2v7G9-V6}}O(u8%G%QL2IhOS9B&))@a&8_5)p{Y!?8Xm>J zzsH_TN7x;xypp2LK6u9yqJ2z6)MS$$g9GVE+@W~eMef4D6`^D-udD=yOM}J)d$~(a z$-ql?Ge=hQ8TTd(>|(Cct?G)H{HXllC6{2gmMCHJ_zC9E68z@TgE3J{J7?V3*HyA( zX8e%x-OnaVxuP3SZ%b)$bYXg`YkzK8p8XisMfjVZpef!T_mO3n67tkxpwFG%J{l*5 zM>jV3yXNG=znK5qU!~5xGueABeq@{49?ua=EnzL(M>UOKA+Z^DMxGM4iW!I*8mJBT z>3xQf^p|34AczNJ$KNIX2305qx#Ca}A8U%+Wd2kF-%Yljj6~>jC#EPC%-lE&;lnCC z>*Xr^(uh*Ml6|m~{yFXuc>6dWbtk}Y@V*fk5iK->MAPVhn8hnRe07^DYAJO2W;p1< z>g6zjQ3dh=VxsEDNH$!-&lGk~P*+ee>*H2Lrqr+AMRE`8G#ndIR$bX>!gNT5`8Gx~ z@WZU`&vb{k8PA3l;dTE@mQ0BkttbWN(xrw}OUCCx`Q_zfe0Z#Aa^=Q;jJA`iy8>69E& zi?Zkr$d#1nlNnL%>3`cB^!KfiE*qYT{uRRjyil}%z()F+_S!pnvvRhM)mKBwLI1t@eFCC4 z|0z*dijNXB0WpCjy?U&BKeZxI??DIb3|YTo!ytPX6tKEhewjC*KgaVc?(WYfP7wbZ z<7Bxb%OH6DA>Txkkb)9lRGj{;r>*c})l=H8OE-oL7r&M|%g?d*OHv9- zoDf&cLPV_ao&*eH^LmrS_VPfS*i4 zdr~!?E~Z6+e(Brg9maUpN_s^RIMyP`3Z{xExonPmQ!}-^Jt6>{f+gfqUla{wGf(R~ z|5qQPxsflBF?O6ZQWrb%vq71o_g#HTEWr8 z;w<`xkvl4AnXYK*BCI1k7Z&t4TZ-^21AJE1&~agme_ruQ%HA7V(!h}nzb6P2IU4^5 za7J0aY?z27_zs^FfyRmk=O=$k>3Sb>kntdoi4yL2dn8m@_wK=dYDlLN*z&^yQux@| zJ-<`upx{Zmeu8E*1^4mso~U5L9BL~Q*Ct-))jEjMJ>rY-*RTD+A)%;TPsl{47v|MA zg4>B`L6E+eTgJV+v8Ab1ry$Pz7nyL;r8VC2#8%wazzvP3FD12!2MGMmtS#{SNHL2# zt>)?9%Kw2Ye0>Wi=NK;0{eFvns<+7km&GZBCRprzxY1#!f!yF7TK)E4owwT$e5+&H+19;2E1c2< zQ`W7E--*YO24%=6=hnHjtrgR+<#?o;5w5(K5$MgHDu0!uZ#Jga8<;+ZfW;-uAtCm>hlP*zv< zXcNm&vr#y!E6NhoVs7{r7Y>Mxz>)izf2{3QMw9K*EAIVnqVNfm9GY&TJe~ze1Lx;? z!CIg~-zbum|Jg6}Rs^rl%9hiAe{}&>l*Ulz^z>-|T|jx%F>O>W$vScQ&k>UeZae_= zwzy(lL(5iKH<6TNL=c`m>!CT0Db{IbE+C}j5W>B|6lrQJVv!Dj>1GtOaC&Rz=r8zJ z$?`{yicyR@tRHvssO37!Gn0mC&shJRn0}XbDI)9^(&B>dvT|GVdps0bcch(YLOlnk zuqfG}X4^M~Dg`MF)_^2}Pursj1<4Coz7E9b_; z?#99tEhN@%t3W`k7QhAZwkN`J^Qe;i*zTGwpyg$ zy2YwZ_Ksg`5F6z;hP#Wt%g^^8fpC_=QL_cF(MNOf%low!WFs36yd9P+qz10Xje_QQ zA|vQeP~X;jybqp^A~t!h(ly_qWqX-&*e)Yf%(jFDpxcF5lHG?ClpQZl6Qhz2L|M|N zJ6kiHOTws1dKKQ?>E1~S>G`et5u?+kpaE_SVAEHbpfR7okr!o(ZG*|p6Z%loWz6fJ zr-`ssD%>&{2!97`U=fWj-9$FcSMPhXa8qs5_46o>WOypG++1KTuKhQ$+~BrgYe-`a zI|sPu34Ty}dhpC#=P#QXl%5>#HT7=4U7#NKien5(zx%OSaQM`T>t*TJJ3aTkr9|Eu z9^G}Lv9Mi!99Mw4CSGe59^e)XfeGw}yabmayxM`?`^38Eoa)b}S{$)tYnbFDut;_h z5zac{F8>%}Au7m?(PU-NLubMJ<-UllY407{-OHPb1#d8W|L!+fOMAr}pq+E=qTjsn z@U1z;LI%=7(}X!m{l{a$NaWy_pXUcpT`yT6a=Py!1be;2w!OH*%gB&{Bp9?LLo7Z_ zx_zDhrMNe#>8eGWfLs>{OJr6LujVRYpNw_4O_}cvmi&H(M?N(e*v!Z7B)TKlM+gjj z&725;6oHUf!8f=3>CTrWz%BU|+;Tnt8u3;$r5-v|Ncr=^992d>Y9?hdn^FKKQ1FU| z|8R$5$6n$B$q1_0R#*#upbH;wDYL5@cDJ`T#3mU3i~`sFvwQaSyWCc1gU_Dt zZcI>WssfrWjoS2XL4Z0b5&!P)zE-Bq!L_9V~EK3Hr!5zrzskKmb4?l7Z|M)GKrM}B3DJ6whl5eY~aX`XL|L3t2+e{LJ! zF67O=BNTfBe^w13h<%1lb2DiM<=88EfRsRwzE31D_=Ug`3kYKhujKJF3KD1y*0HEN zF+P0iSV+-b2oh;Tjxi*Efb)~)^(MpZ#kYP}T~fK(1N6OBYNSbS##O5oyKE-xP6qzP z{{S z_7X3MYMe?l1&0QIM+?Er&A=`CP%>fY(dZWtHN2>x;lcjkdwm`7Qc#h|ZtOO>>EgR1 z91;QAO?t0E^o)yUL1FUmn!t2$>FgZcZV`+$PwaVKBI_Y5i=B^Mn`hsY9-3(dheB!`wNLL;=jn zZ}F8ZxDwN6>&fqnuusz?!URdjMYm=q21||QD1c7TR~&h4w^12&Ob}{-kXKn-#|}VP z0BGdQ%z{6L{_VdvlSj>aUH#xozZGyJV{c#mM87>kD!*mW;bFgEGX1aHV7(z<{Xx3D zm!s&wDN`#sf}-Oq+cG(f zyB-iV$cwDlL^a))(6K80M$q*H@AcVN^RRkz*{j_8J|Gp6VA=!&_kN9wqeE+|OL!^6O{7G&gIlUVzDLzBfhX!=_ z02TT|JqHa1c*ly>xLQ&-lnNOeNxBI0w`ye}hOxgDkd=n8?6PFCZTjIZ#IXc(qd|(` zC0|}*fXxV5g4MM?RuXyt@(EJDQSHYCv?Bp5Q-Vv(*daXIwL#>Ik2cj0x8vKylLQsi zM6jQ%8xOK@~Op z>s&2Ylv$^ECyLrz6&MWni?~=2_KBzv)}S_VN674i!iLSolGK*9XdSbL>CN|UDUNc7 zS%s*zpd8o<1KlqP|H!2x9A@B>=mAI0eTW(i;U$l_TsAezrB~HS-|N-zfB9ODSg#|X z;7svG$e{lCv+4!7uTq51J?aQ_hv(Y2p@>qwP1 zpvPYCF+sffKD$L!*hSK@km1WR`lj3^HxWTD^)Try83cL9Boy*HZ&rJX&!AB2tzFhR zU0|nAV>~tllP9fM*#A>bXAW2ZGZ%A6rHE2PN1(#+Ov)lmWH-*1wQ4K$BL(trcFUQY zyPAZx@?6DNUT6Tz(^2A>75}Y<^pEm$OCjT(X}a`_ob%43`}f&QAc>kM)B-|a@I@0O z-+G*Fz1ot;Tw2tlwDmkYL+VMrT<&UKr(zA&u%kowpQzi{1<@->t zVrudF;d|3T#AZj)UPA+KgVdM+$iAO|DC$zFO{PU_UficEz#;JdA%Nu{fDTbbb*SNN zp;@Euv1v5IM}vME+>UIS*Ifkzo|L!AESV=K?_HYjfKSXptO?#r)?7K7Hrjbn+N^Am z9xJeFjpoKlFM-?HS36BlBw^E-(UP@XZ?XBomdGg zTrY2`6A(Z{aBlDd(UrG(+kEm~0l{ueEixi_gJowT5`VWUF@;F|C{qAx%LRO=ht*Th zBVDq!E4RZtO~AMUp^8itHP^`33$t^I#h`gzSTNautZU712O(F|H&^M~2?NzDFrqXE z-?=@R_zkL7OXQ{P*Ew1-?mv7+qw>rWnY9K5R#DhJj@@AGtyrMl9Ig=|GLBfn7IRT)Cip(=p={2Gn1K6vF0H7h@X;X>1`M3%caT{`~`2_xLNqgOZfJa|m)iy~c5W@OpV zJ-U?vFvDQ=o)E0x`vhpqJ5$YM#PIs-3U@}v*FWgqb}hWI7AmQ=el!>y-}^MzmVO5J znZy1tCd6PKJ;W=_?!LFLw`RG8e3!&L)Qbw8_W+$zNetKgP%I5D0$R|!rUo2 zN)^*eTiU&7bMNVy5JbFNB^T~L6je{R)jHHZ!3>hP6*9kI%M%}T83E$uZG0Njt(0Ao z$^`F?lCBqJWsv>L*+gY!GIAAs?s8L>>fxg(HDR@`z!AFDI$eE1Q)(mK{%u5G#`yL~ zO3l2)(vnkxN(4M&dc)^C^?GE&emWCcv!$K`?hSl;7zu7+UB2VbCPG&9DtA6p>)Qs?fdE<7ve0043o07AEx3*wJbcpyKHlR(qWc80g|ES?0LRQoYZy-5ecA@@Wl-i0VBfIrie-~@?wZcDMmRX z;jl#C1j5`dQTAXu8|3X<&^SnloTR(B);w2#ndieZhNJw=WEQ^mJ4qB<6}JkV zkW7x3(o`KZ@<+8Dy~i+!ptA?Y@kIkTm9!&hfqjb-KS<0vW9HNhX&a<`quN}LkwMC` z6Tf+?Bdg5}SfR#wM8}xlEIFtj870)hR$?4miA4{b%HEa}R{L>rf5SHUxx26Tlsgu&aXL5)&B2RFro^>e<{FJ=sb1LIL| z0$rg@lAJaH8*9ENv-+cW?;TDxp_$5y+0(VSy->SmhrH%9-T@6EOiU1OkV@zl+!pRT zBIWJU8sS{?GGLu;w#4NBz?dLL?_4#SaNBWK9Vy~N0euA5cI0yMaipSrhlXn1+7t>& z?{tOSy<@8{Mcy$0ReVHTXIcJ8uoKM}W4|PRDri>qPn*iH=7xUS8#qFN?Saiiq(W7A zkmk@(#u^p}c0;jK>JTqyD5#H>!D`U4$sJ(=D|qyM9nByw2hloFdEMW)YZUOm}DQ zG``LSLjVYXwG!M*I2d!b?tE*REJP9Q`B6g>)hYv68})lS zcKRbN@zeYx;AFF86OToQXoa#Oc3>#r3PV8(JM^LDRwAKZy4K7yYQnm7$0+y4J&_kx z#%6&R4J7|6ti9<-xgWC)V-&gqHbx?Et_lyYOPa<{9R+=l)K%OYt-Qrz5MpqMU?O0q z&7TMJ1yN?!>qZQ>>&>OOj}hD2)v-+`1c;Nj)u_C*cXV@|k-%OM#oEVpzaZOHI+wbGaz1yKCo9QzSI~uW)xF^3~ zU2k^F<4b1o(ySX{KpICt^)(o3%X*sda67k6%mKU)9?(~k5&fhDl?+gXM7-o--_Yds zJPwIqDHU1o22w$tP8_DF;$zen;)MEm50-S7+k=;#Q*nUoz!WAe3WGsvv7RUyN|Ae? z<)~F-V8hO*zG1;7t>BHOh+?j?g3ulH=XRS`4%j0-rnbAR{A9qpgDOJuS#CZbS`|J zgr-l(I;se!(uLIk4y^H7SJnwoW>T41I{Y!$q{c>pNb;%szt?aG9J%5{`f9OVU4;eL zeM%yItWb;MPKqAf(Lt$P6Lz_6cw&UQ?ehUdF8Cv#b`Lg-;;^K+!CSbvCiWFF(vp1@G8CUI)@k&_U2@lcC+bm! z)c(;%-Im;Kcd;Ff_=`3CxilYvB)>%6Hu%_Ue;@z@E|^iWSIq2;l!}JIuv^M^#N2yF zCSjTR*D2R7pThl5nnVc`nGOhLlq0{E-Zf5_nQD8X*?mJ4te!+>~m# z?>$6m0RFEaUxN@P1c|qwx#m4Gxm7>T1sAstWj$Lc6i%(Xc|9NtRAR--%B^yu5Uj^G z#wPRJC*lBHKE3w9;aa&;RTSA^bm@a{l-Cm??M%(Gs9opY$|fR29xhc89i*=OJa{lH zm>3d?yQ2w%*CNGYZw_%L4T^d{=JiQZ+LPM|cfm_j#FGtfa8q1LBw>z>pM8F{E>xH+H=RZ|F0w`d1tGM-;opHbf_-n$_?<_<*JNN=Hl0g*9^9Rso z;q>KP3;3a(fsil6!WiAFR(7q8orkUu)Sc42a0%{%EHpe42y95CNPX-P12fp7W+hG_ zk%5VW!-4MwACeQY2D#By79})GBUW#lkH2sImH+#2s7R2&T2J(PMGIqX2>eb<*-jL0*%S@{p-WE-&g9rdpU=_@WruwF(WE@5?xv6+3k#D=iv-XoS0H! zjFF5}CXH)Bdepzs=jJ#$IQjZ4f{xD|9Q&pHX3@al`b@Uu56<2~r7ovHV~3`w$T7;B z(Dy>q^(lYS0L8=sfLY&AlQVW6lu%>8Ak8TOf0!wiQk{vNh+*e0K?vNqyYro?`*Apc zQ|2Uy?7zmpspxljoJFpsZP||P#PUuNE4(Kcv>1-3c=}7ZMSth^TxtAI*77$^h~tVU zP|6W%Iy=a6?Q^{}4<8?+x1))u# zK)y4#8po2S<~?bAxihn9q7fl-VCYqr_l_Z6ppQKzLpQStKD{^S2q>76E z+rKY>_;#E`D%Y7V!r`ps$Q<1*XX#3P>qEA+C0xvVC;p;P0*FcOMN{Pt^X$H&xo_6d zwP4MI62GtIq;r1LBpeMCXrwIvI_NvPi#Plyt?+k@7C)dNXQ`H-({Ei&Cd{a)(C*cY za6_M7&?I|AZcO>Axc9RCCbSbgpm;C zHwNkFo^7s%@BZ&iy!Gi*exKfRrZdsZPrg31J#f&PCa~pcM6o6>0 zlc(#tk~xj!1Q>RUp^hBtT60?Bf6*Iyk^hWmt?^K#vyh%EIyH1HExEq1vssx5lYI;1 z#=P~Ti;@_nxg$KnIj%FDimrzDH`h z))D|ES6DE+IoBS;97#{?so04Yxy@$Z7-hp?z1ZMh*T0{TBDC7(YED80r^V0itT{Kb z-OQ#$=4|3VJXp+}MA6hpyo^}>TTH4L@}3i8R>~abkV&hm6ll9#TO5TFm8=lpQ+L-a zRe6cDRm-CYrEmCzc`UmTMHAn@1At>%Ct)Yw8y$)y$3XI;m=Dn|$N=z`#U@SD`#3Br zNPhI~bAoYU_Z}J zgr4r_)c$y<_ED!lWyMnDW&~aG*h`4qZ|@$Ga-9IFThdxIY_{U&dIQ1$5rBRGnr4t% z=Tp6iMd7EfL1tmK^;Hwez@01a&(~Tmo`gM4M}WLTAh(+8NYzk4?K!&mt^zG#Au^N; zEA?JNy?4n!VHLpK#QE*=Tl~;Dx#D7sV8G`-I_T`RzKOdNe-Dl}m2fYznYhQ}qDgk< z+3TA=9zW~sgHCJ%C9vs1qG*4lEBBPl#8vEx)`T4-berK5hRMzyv2ktGF~bjnteXcI zE;8tlSzh4MyJKO1EJ?pwp(!btrKJH${9=-X{%$c=a$}+vT7CuG4fA`SM80OGX1(kB zk&&bDYH9I|0rd&h?F^dpOV|yPf$962pW<0%{CNXUYn#De-iaL<3yB?kUkcZ)vjd%U zOj&c4{PVF(W8+6E@fH`;hc7ueJdA)0P3ksGjwOo?;DXAmKkE1brdxZuadPj*qB`s3()S?(#(_a#xTxJHhD zkKw-GN93>Mlk5fqB8BzmE_V=GdO!Z2jHm;+ilD{pkOQB{WEX3YESMSkMA6GjSlAg* z|I%iwrd(9Ry}L+>>zPiW9yZ(0GKfzl-h;&|IF}0DEAE{(tqq!F3_9Fo(Y`A zz(@7YBGFKDZxOY5Fz2G7g>S^VXGD=W6O%+u)bUMZUdfGE9KvNB6V^HyLsOg?-=SUT*1ElRdC4r!0Z$(kj12V5maX-kCfyj1;M(|3^(sZO{{s%w3or2|n ziH9-55wW{O=gmABpL}y9L{6f{6=JwiMjFcJ&vsy`qEr{SygK#$G)i6!iw|gZAj;<6mL>W3dnfbScH#RjI=bPf1adV-1A?+R_P3FqZWezp-dgcm~ z7bS$??qxEFvVqoIo~Q7-z3s4@Tnmf`Ww~qUB~tKp&>Z7a)`ndLJvjhNidqee1Ym7@ z=S*8F&&H$o7KBV3>ea6eq@gZNoRI&x=nv1~eZbV93@ranSIaU)Vw5!Ml_AmQaoFgJ zx!Z3<;Goj7|Fw*2$yTTL#}5mVKq;h3yeWM4AykdGv&$NI{~)5Mozyw2S5v8KYe~)27z^;GndA(rO44k$Th+&nbltY~{_9UU z$xVo1i?TGky@+zvs7lQxF2lWzIxdwe!IBrrIu(}+HKch&qoeu62oUnec9DD0tvc(w z*I$z)^JLg+LI$=Y0l4bzu0@0do8@vN~f zwdFTv?l8FtA{V7I3RsGyL2tEB;Bw-UKALTDe8-_r#*d@72oCy|GRwfzSuuUY2rzZ2 zKF`LsETyk)kO(vAE2m@yC5*MYTcKXm8hp-a^M9I=jYf-i4c5@@`yWWH^6!Aa3(@EF zWfSlbj{_f+BsP%l^)pvvcfS#`8emNQ*jpPj_`Jq?R$yVkr~DD!@OQe)>|^+?3;%0a zkxz^i!o53Ao!^FrZ-9xTp5DB}Z0nTSK?fRuTL9YWVU?X_^u!^PNQsZ){4o9A8;1$qwmGtNfF z9JKh2>gTE!w{HVUs{isM|7SaW65rsppwz3@Ubp~Eh;KF}n%6ws!2)12fwjr}gWA_& zmBu5gtx!-R&l&_+qTc<8ESxJYk&mG64uvAc+S2YXCRVc#!}^p%md!5{DGxmtFr10^#|U7ohAH?rcI*XIXZW8651`%?svnk-a zD6d*p{Cq1gz)pn#<8~XM{Kwzu7D5N>*IX3IJVfz~wu>_83(W{Fi`H6>`eY6ag#%>n z47}}`ww9~qF%Vag43#j>?gR`Vf@<$OuEvO^tqhL~oBM`=u3jkvqRhhG5#*NkRq~Xr z(?F6Y{>uM+5JUpSj57WXmF!88Y-eHA;kR{hW>kf(qCYm84AA%79A!SWnyU zUkdBII+<*(>3#+dPoHl)Yis}gTjlD)oKg}Jgz_^e=oN<`tXmByNqp@)0&Da;rp`2e zUQ}9YTI#Y|(m(#%DKRK0Kfb?9iCGQ`DxOp_VDdyGz(HdVZx(l4M|;O^@0!&Z5IFH8 zM~T6;=k50w?_3c~*C`|0oWuvK=~dfW_PCWgTe)~DB)2`32>gW|Eo~LpZltpQm_^x2 z{>yuJ3Fmg@b8no&iu8AUeATRO@QhafM#mpIykYTEdMhh7eL7_ziKxFwyX{ zHX7G-2OZ&M?uG#x@_AEu0kNM(0vuWL{@*D`Qp4O-smRj0KIp| zR#))|)2ve6s$Jc$|0{fXIe^VMmAr<`OhG}xX3&hGEougiCE><4AfEVhvLU=)-%(db zjk3m;FGWle*0f_n7yHF+yo0i*rXJ#D5zt-^%Qo?M8f;oFeV zZ_b}w*!(!W#Z#f;Z7kEiYd?jE0x*yyUzvm?&d~~Cn#1$$KHMuQ7Q0b*GD7sQ%m+kc z^YD*YM_}TA!6`kMipzqp=QNnJ2&QB~0&C?lMwyis;Tx0AaIV^3BXcEz+{_rEroVx3 zw9`j`)vA|X{?T=~#ayYq%z*cCneJ!Z-OX>PD8DDXrKOV&t+8181nfD3mV3SLZLS$( zT(YG>vH|ezc3&@xqS115`HitB!#P9y5)GnN5~V+c#G0}C(GqsRqg2Tp=@7%4Fss5N zt7cU`NyX>!Nr=s=9cg~zd2Ls`N2UHm-zNX*&+KWMKCR!If;A7XKC)krhL5~IA|n4h zMR(`cY`DFYp76fu32zqE0-k)6TN3MLVqHpDMX4O{8@@#asJs2oP7;Z@p;z6##HkhTL9!R_{^^yBwII?M-gDYbBbn@V1ajX_B>+# z9N&vBvFSa5fh8T5_tZ>%$JDB(@>AHmyjj`&MV*@%BQzEWs&C&SNg5jDQHt5rbl~Zk zgcU{*a?^-IVk6P?EUs@yheU%8SRMqp3{t>` zr5rwAKI04@rd2NNAOwdtMHFxHE1wWJNFGSVsL?vdFv^UgY5(!BC%h@V7;QlTKMiOo z0c+{v>DN?)K)5Q(bRw?0yB@qrc>F`b4EqHfD|w6~_?;CmJg9!EHiGeF>-^wD?|H+6 zFH%Ah&t$Si)W&2I%d=#-uPAIz&e^B1uk%dvAs?%xyZU6fi+RzFGsAlg&^9ez1XR-EXtQISbnL~a<)0*G^PL;)Y&}MY z(lqD`4&-aSpEFZ8C%+C7RF3?Rtk($yx*XxmHstYv*J3PG*d}QU#>a=19cFNw8`5L8 zpF~DFh+Ck(y>3Bt2a{>oARbO8-L}H3i!CQY+c8o0OxhWT*=&0Y)UBOo^E4RtzFH*NitDo^44I8)# z*Vx*a5cR|IKQ8NVy&Wk8hJ|Yc?ZeHea5E+27~Q{7fNMky_@;m%prcrdBuE5mE({r; z^-oiRYRgxqIDzU2EYB+r?~)AS znd|-7qy@H0EmhP`yu zw^t`+TFS#UCS4XO<0y?N_>h1@jxUir<{<`Ux@>48N@xVQ@ZH`;z9`L!piUm*tt$SP z%d+`gqb>vED{YY;Vq1h7C%PISxrAWkt9%ZXljnL6aT&o7fZxgzlD$);PyCAH+};k7 zHJRqwcVrfo#`>H~UFpxEqH|f8t;-#)+Xb7W_q!G2t6BbM#FZma$ifc1N$n;&Z6_M_ zt%`&LumPjhB9nmZxo5ZY(5TW=-}b2gNY_uc>5CrL#?oI*UhyS_G^`6h-de&YwGrzgl znmJpnO)c6Rtq%2Y!{hy9d`;4PWTN$JC-+n(@kgHVs{sv@+PjnA5+hdZD7xRY69uJ? zrs9GMnluwba1qjqNl5s`QemM+eq__G;I%{f>&8;m){aq!z8Gzxj_jWgcw9$L)4Drk zQ)@kzgOpUo4)BVCR?G;_ajGet;bkBY0>muQ2u;xYH*5qw%CFfmP8s)7LSlJTQa*x6 zaM={-D~PL0H6`i42e@j%evuoIsr#J6a5lx(Nf48)hW5icbEIAurziqwu`UHiAoweV zgDyR{q}SHqXv$EX_{N%Dp~NQPweft@@?6<;G&^Pn>B#+Ek@#@wn28+KRBA)9ekTmGJoegm;gzI`)|d)ersFAXp6 zUW^Apgt?R}Qd1M@5trmfb)k4IFx5^qX(|b(qHy;|ypt9opI`cLMbd@NuTI?cj3lrQ z&WDPYS(|%;gtf!zL^m?y&!`{t<;~k4!2lfHR%<13@S#7ry7hec~2)LJ&i5#u%K}OgAbEVbb4MF#gL6 zotl__qHV(!I3aovR9C^~acsWA@vqGx`UYV9Z2Hk-4~ra5L+{FpE!zTn-N(_o?=Y=xr zNKJ=7rF+TfX+{UmMZWeBfOPsW`0H9_zJjReQ)I~!0k=tgj}FH96^b<1DTg(AS2Ot58Z@5ZI7z)JzEXa+x4P6m;bq~S#87g z(h?M%W{u@AX48qXXEkBrCH~jAL`*YPNT4j|6AT;XUcanf&pG1fTE=890=TmGGxUr| zML+BbV!bo4t5v40*a7zWEW^GssXc^OKCuk~f$0nEy{m|VbFtiqxSf(!wrz(kcPkfr zy0&Y1z>DSX+}l6L>Wgv_9e2dV?J-&{+x%|~%u0Z!Q_rBj8&4K_pM*4tn{Q_9nD^Pe zgbO1?w=3tSL4U=Q4fO`f(*2N7K#hh zDI8EM!6~IE_Q2qfjNhom54utg$vERt-=`)y0~`Ux-EoaN*!a7)qp{2|lo=uUedvCi zj@kA(BHQl|G-Mo)mz{h3`GzWx zRl%<$k@&(vz0<2@rmVpHOHwi_h~rsxpF6OHA)Ub7C-jUUUBd+Py$bexR7rD0NMNGT zwy(zfB9);fXgXp=BuLfei`)t_oE_|s7^ebi`Z!(vUE@?S#~RneebYQybpJal;yKFgfZ6i-Xu3IWT>5yQC@P5as^+?zTJ* zcz|W9OZpqg7O%0V6h0ku*)meE>htR7CmD)&a#2+n#V~H_hB%d28?(XyjiHB3p|aTm zd&z;pr7Ac_YagOZBG2adYj;1$EVI}s&udHlv1->mgjxM<_o`aZ& z`5R=DWteQe+PY1&GI&G%n_M{cZK6ZB)sMF?v3<89bTJ1rwP?X7?| zaoH-gRJe*D;;OdNZ#J}>|3jf|K(hTZtFdwac=xvQBrsOOg)$ia=SAA+7^ikX^0Wk;eyzb<0h{ z8K3iLh_kA9@eO&n;PxCs)_)9;tJoNE1m>Z=*bbW!Kml9D-d8U1d*9bnsd5$v6F3Af zcMTRnR3OH?!Jwl*@xQSS5c5yCPR1FGpQu5+{>~aeyuD>c$O=^5r6Q~SIJ;M!v_RLc z)Uw4aMtq4pVc}S7dQpe^IrS*hoZuVK`oq#Tp_{3=39)gEgJ4+J#A+=0Xc`kbBQP;O+83FC>mLeukTIm_WpmO7(|lMeOle=$l-_c--_ygKZjp*@OhRQUZoa!498@pTVKHuv z2#ZFvA|b?5w%0J+)?HS7bA0Lxk85tN)2xx-*j2*AK~`;3eyZ6bM^`69%ahy0D9c3| zu${S4gl=m3$SJjgjn0|bAS9UauOz~Wlo3&N%nwmb6MG)hQi-1Dr+kg&tWy>gZJ40-WUHc)3|)k zk@C4RC7v#QZFM)T`PAtiZ~HG4dDS)knR)L>eL{vZeT0Oj#vue!IMbO<7=`y4*smK~ zn*h3}VMipUUCK516I|20TUO7()yW*_As9X>j#BTZqZfU8YML8=;vLxtuzs}r#rpA4 zu6@|$R-e$1qT2%$MaJ6l2V?>R1EDWhA)PbaH-2VD8AqJE!*u->Pwnpa+iU}{jF8l4 z0HzdM^3&+9EALCG=NW z?){%%pXtNxdv0#C0DO}E=MzndYf+18Zt;9+sSpshLeJqe%&f zjx6pm5DmIm%#|s(w6*R3@cM<+#B_!gsDMzTS*rRhMxs+qQ5E~DF80tjPfPxzX>on3 zx3tvAbY%!eLhv!ED3FVbiK%0-4veGgv#E8qzS=9*TM`hd@O^EItc2)CPIB3Xf_ zO$S_ehH=j>+9|yO&_rp|7Q+)+1Gdf)@f82-{@4VP|>dNav}Q+B3(yn zjg)MdVmXVFgaI=QCtbRae0;HB4lu?Q;1gXB*yyHryz zxLIaX@KOxyX`(KXF@M$|A0k%9D#Pa+I!QdmG4U?8RnjlM0kp~Dn@-}#-)5tJH+o(t zfsS+5I@oqvUtIG2CAoH|A&HdO74Zsjmp&Qer&bQ{x{r})letQa2=9@YroPlO>BhJi z)|%R1Z_k;rqbOY=xqXgM%IxKG#616TUx!UQ+SY)@0Kb7rA4JwUM(d2&Q({}f3L*6f z>tf-UP3MgzAHl6V_5tDJpU%P6viYY=em%_ZL8iYJ=UTJt{&@t_?eH#6f0D~B!rh%! zLnCDNGe_5n#-$xCOaTfM>TEAbwdKyxeZMHpYJ+(9C&K)tAKe9Z=FBH8*kqp~k!tgJ zlx@Y`Iw+_r?E35FuGHsS9LhP_)KMxqXO^@aWHz(Urw0-O3l##rl zEipszAjIgbd_lZgP@a9V(DyFW&pf(N@U=&legZq1rNF5$We6y7qlR(-yTnKygbF8V z3JhcSIO3g$+I>`jv03YkZsK5lJ-85?K-i7OG~TA$DyavtC)mYHpz)(>;=EWfNSlL6 z#7)9J4u;p+x=LUYFOvUBArr-m$|m$X*U-krPAN~(zqp<}CjqLoDW7|bsRn;h)E`Zx zjy4ou#)MRR^3{tvkgb|$aB3+c|MENFmQGiaZo~FKTa+N{R7u0mm}r2bqfeRF5OXrm zpSgaA7GgNb9pBfF%i}s zVw~HwJG~lXY26yY;DQRqeL7uSouN=^Mn;!N2A{6*ygKy-;Ab83Isg#p0Z!$9iZsv^ zz%+;c8o2RtkmK!_C4b!sYIxk0e<3#^1gbzWo>}0Ed6b4nggs-l`WVn&q44K;n`|-s z%XMsFO^pR<(VL_7+j2#!G)E<#vrj2p zOAL163yBmDnUwE@L(JcUl@svOjMdYi;g!%o-=cK&2X3=LdUtWH2^uwNZ|O1|?7jX* z$Gq!&LbJ=`3NPNU58UaHZVAW^Q1DlAv2FyctFj;1xK7i-{|>&T|}*;e2Y zvhY9(^U$m*>&_0ng1pYm6}mWhIzL0EA*_Yj1$`L=b6JICW1e5P93|Ww_als^f4)Wf zZIY%1)gykF;QAvi^N5eDl8Ow+=zIH=flX&enWZ|L9W`8n2`01YRfh zim`vhU@qX$d+C?O>ms&vMGkoVT@zsuVA4-XBk`+zVI*e28ueIUu zu^{x9JndxZcZThkS;e>W7Yu98vj5$QzYPZeCO(?6nM0!gp zWyN#E{Q@viMQV)%D1+aD5y9nw@|U{kL2ln(b9@$BXSN$v*h(xI#11~=i*8rv<&N56 zc!1F48iU*fXs6Z_>G)pfc_v8$UAqv2LMl_a0qJCIpqeZ$6JDr!hx%^-0K+V=1mb%o z1PBwXkbITf)Newl#zAxBSKg4+&s8EL1hsWw^UX9 zL;j5#tl`S3w+2nbR0_XW4)V5xHb{-GRmuc-6=@81$g~%8%*l(N59JOAK?F1~OH@7Z z6nKHhVTSfJ4B+hJ%YRg+?KNsghAuW_z5z(2%jY_LCq=#ndGeEeOuhs@VkyL&t*MMa zpgnbt6_0Hm2R;28_SP^wcEpU}80g@1jRp0LBjexO?g|!sAdT=>WJsWZx`M<4Q5A}M z(ZgL!<0qhE)p7u|&MVa5Y2a-W2e$FwI%V&HWotVZ;+|>zb#S}#7mY)JnH4ISJfEQ% zNa6GcRp@*X*YPnvGJF8`di+SeGa^aPrp39DU|s@kimXY}sJ3Qn%?%7U#Ba#j%rGG5 z({2a-Os`H<)_T+n#Ft)l_nf7zGF`#8Wc__5;5&eJ_>7qtE%B*zA>(S=*p&BL%7g#0 z!by%hth6u!9)MvYWXOZoQG2U?$|5FO9+2Vzf5n#2k9Luh4CTw?2~=R|LtINt`B199 z9h6{-e${DZMd#{ldys&O`+Et@Dkgq2)(g0xlC`Fb(d^8Rl<ys?p*mmBI-ARNR)z0vRhSshm{{lAXmTV{qKX_k7%$BVbUNn`vls`VNul7 z*&T){hSod97Vf#FckA@2e1c2Z)*k{t#1n@OVj z27LrYB)X7ssEgk2Nl^`q*TbV{0wK09;SvL0In9|$2IT2-Gsg`;@Z%{&@e8^1#^;wC z(pjy$EYIX3ohxRF6zmyZ#oX;N;UB1MO;4me7 z^1g?oPhofuocncl%cl(Z&~x^$0+hr&%|mhXv&(>69^x*=XQKtH>bHLk86FQr6g4=# z6fxIi4G$3T>1?upe;vS^An z67LEpNr&@F3=Z*z{IPxWYw`CVZL{5oPy7tWvq<3|Ai0%O_CRnG@*)W&cz2l$8xAbz zkld}WD;cV|JV zh5$hLumHXrf6Tboy23N1z+W)Hj>7=}_8M$B3`;$vK%3D4vJD6ZW@I2)vVP5WNyN^9 z+fM6$?YtG(dR0Q=PBJVq(F)S6nj}Ih_j{xp(;UDgp#}$Fl3l{w>dZZEsKpY9!)fW& zLnAg_GhGgi>ZJdd3ZRqyd#jj-UZV9A*QsxgMJ;_wCku$*VN#DkZ(i{I(`oBQvq0W7 zfbEHLT%W9)eH0?C0f%AP?rxo;=(0=-p{aBdK0bqN zhNJRPC#E0T-=X;_h^P=4cX=+C zek88x%yQi2mR!XEr>Bl(TKwuESB7Hl(FwBtH(Q1hQQV1X?zQInExX;b7y zl={R91!VON3X2G!93ScNWmvKWV9C_$boZEBAyrhUUmn{?f5OY87`}X5ZF5(?q0#5G zh8dwYf_zyzx9p@ZI6&J^5(%Zmj-`NBNxXwtUzO0te#I~esfc$16NAJ9-TLv6Vd%=b zpdHH$OK^cNIA);Jb{wHf?TPY{-W^4n-09t71SYY@2!922^ zHpddL4r~E9U(@C+D**uPm@OIn7dA)~YyohNxVhIX4|}c9!bAe`b7^1MXkkgTn0I;oi!v?|%EH@84-n(o_WgF6w_^^2J+P>4BL{=1 zjF3od29U}6*{}?i2a$ zd*y1s=jZ2dgX&G+7R&|qJEBk99vU59FKH+Ki7w)C@(j+5G}W}WuY0X>Ew>paIfhE& zZIh-neWY(dZz$Z{qxeu64nrCbLk17Bh85lli+A^HdoY=>R$(7iUJb(ziPS_7?}tk8 zKR9{>C`!&b_0Xp>#k@P1TU~}Px6gN(fFt@HSu|Wi>aBC<@1DE)lMw?stQB}^A<0~8p$5Eck-?|##xXK~o|XaaO>U{d>HeEA^K+0rWIXdJdx z+(>;rW>uS;^;O+1f$$5f z6N=wUDpLOA71GPr`fFBgG{h+3LkMme3q*)eC){}y$kWU(y7}o6g7?p7b=Z;c!J*|q z{XQvE#fW>>NjM#NM>bWPfTk9$ak^H1#jtu^t;=eoXHEj(5%8~T>FtehbuAb^WRG9w z@Q!T!Oy?@-Bzw8FuUH!De(Vb#!OR*^i>KJDmnr8KLw}r}MtaZogGxcpJ&?+s{7D05 zqi8aTf3ML58Ym1eNhoNIF#}m?Jhp86BP6JpE)&5=M{v#6vsB>WBn>wCMVTfb<6^y) zU$wS#bwb&BZ^KUT{0W913U>nzjp)#?*l+{ayw^@@MMAG|oQ=3|qaQtj0VtX311(T6 z<+G;8n#-_={K7yE9}G8f#ZaS>q1i7cd$5u}V0IXTxr@LOsSOgp!fV&^&5IIh!WJ=| zcD303{_qFW3>z(ZF0N9u19#~>Ww-1|jfORKHe|>fhUu&LIY&$YoMaHkSCZ%^ECyo! zZ;%P*vub3%BN1_#^VgJ@t~Ek#07ugK?9M4?xVD{C%d}PkmVV-UZ1zoZP}@@~Xe#5N*Hg>QmL~Z zIFu@YD>)^UfftHaBkiv~r)8AC>FV55+Qu1=yGY>*56yI3aqv;YUI&W&M*Lh&a7{I!R5<0)3w__oW?o!1GPA z%fHLD62vE_RPS1EmQWiPCsq+c^ERd{nkg1 zdnGr#A?7OmlkC&0H|LLU!m0VLRQ{P8>BqgD!w7CTOf?#NTRwqb=eKPOEOzDkP}r?G zs->6eh@LM#pI4<#At8@72x{#}+2W(_CEa`kKKS|(Yzz9n>ToW1r*&2+SBRHm!Rm)f z=ieyDYlY=JoK@B9A+n7k6Y)ySjH(0Gtr8donP9f^!dMTH?HGei5kQuA9f6W4i#Er^ z&Y0W+D>jYrhGgdH>I#&$8UoBLY2=(bT|M#i)YEM)dc<{h#|#bgM0a> z_XpX-fv#!ohQ*t^M@BLC*cW{v7P0u=Rri1560E2-|Bdao zB)6uYPJf&yK#s=T)k9#Gvd~q!oy9a*LSCVbg-3wXhtn%&vbb1+Zg6}<<;(SYHmvlw z-2~S%5R*i1TG}y_0tU1e?8x*2pi^6CKR}Kq2pl5FR-IU;i5I}UQ?VqwtQ2`TZ@_fb zLNc+Mjg%$vU~+E6uNhDqGZ~eRw;bJgh~;;dEDuRnwNzYwNHARwj~Xx|PyvpN5QchW z5+NYo8|qfww)K?wx&{Q}A*m`a3dm9&$b27(l@CVP_EomDC;oV6t|%a5lKy2mfPR2{ z@P+cz5dXtY5P>L@_^Dw0MC|Br9lovw;RXfV5jBN15guYQ3L$JI1mnQQT1>YQIEKO2 z{uk9{_%@gPAV9+H{->!f2lqx17=a-n7af^;yMuVbJ(Je=J38)3_uCe zKDx>Jz%fb*4rDm6q+WQ}o?Vud8euzgDYDsCq~zUu^(9=UP_tbAoVyB-8Uzps z@WaG+ESKSGzQX_*%}yV-rWGIsw@!s3?`i*G;sXY6$dTVqcb7FVr!E}tWNmZeTQ4_| zldGFL3&7Va!9!M#^QRA_(c zRKN~rgj;u<3*aTPlF0u5zS(T5pJR2bH3wq{TxykF{mf!H5r*tV+ta;sZz%^qc7DQv-1Ft`Qd;IPP^B8zDoPa!Z&v$+arv7%X z2D*nXfW{zxj1oN<8>N&)K@scVJ1&_f;@Aj2ehWam3idnP8c_OeR6*8`i}IylYAuYJR5ctuULwa18tIcIgez= zD}n~Y2U!wQlzFNIf>wBV8Y1s%MG=U70d`^JMyNtqNySdJuw-G!ELWROhi&%>R8S{q zx+mzI;3s_o0m_jD3_n^C3vNt3U03}t+InbWmc89NwJOOovp<<1gPFLbD{At~qrG71 zrU1PXSw^_aIy$rfr=b_u&_SA@T9p=`WA;$dc7RMi;5*7B?rb3_s>jP+j~3AfC%*^9_p_F-t_ObqjV(F`>$RqA*cZA7xe&s#4MD%S%9KYts(xVOZHYta}g+k?C5c-LtDaX z!I*TJupgkz}A(>FT%7!KR zV`XPG6h+%j9nLW>3l&Is^MCJd!qFxG5&|?*aQV&7?JJ4MkJ}71AAAVGF;ptC^h@*t zF1_IvZm`miz2K$X7fSfH=C9MN?xc~}F!yd@2g)YP@0da*m_ZR1EzaM^HX{#H2ucl3 zmMNgXHQxQ(K3ckib_e#Jth|mV4ZzvSp+%v80th|~H5qAW(oP?br{1hlQ5VEQF_ zDqICnGXX9uWZRGiXrq?u%Ap-lenKj;WKcA);EKaFI5@%eHJtmXD08hr0-|-Na9=8J z)O}?_*3_o4gS0tZArLNZvF|MLOehj*`amLjECu~mveyQVd3UNM8KGVUJIAsz?f3t% zR&vz~!<`&9a9_GVWEJMMR_OIS5dkUsfLm~t}G6iR!KwI>HzseWp|KNJiAfkWOw z;3%$4VzSt_XcbB7WN&`ZI2WiK3RtikPtm-oQcb>G4@?0@8WFs4YS^4*vHe9oL}8hd zl%lJA`fX2DyEgHco@SIT(IY86FK2hR5qqcVbh`H4LfwtfnS{4NA> zpSWm=9KF6rx^cA+#lRQ9xI?gd&vxe!d&^7^W{O6en2)$GGTC%dky{Cm79X(I&*}PjWCE z6p#?N=$!+HvGw*eyB08NEaS)$Zd|+U?&`x(kt&8I)Eb@un%al1M|h!`ZycLFOj;z3 z+(dc-G(5^D=(2_HGH+elhgik~7ww<2uB+heyx|;@yLx_o4FP z6;98_oD0uCNpukMjdZJtrvH4jTxtqG!AV=XpAi`31mn4QT=4 zrFM+9UzPci<`V9fLi;WB&yDujwA&tieT718{uq@JTmZCQnafU;+c^q39C0$BonWjo zNbVOy4VTjXU~6Xw*d9JVU@U0v+&vb}7_)JI+IdX`j>TR*-jNj$?eUnVmZX;7J>UH! zxs3N9@PEe+pQs6if?g?I1lgAl(mFe@H4%>YPt>b`>UFgW_+ViK??<|8ZYm;QXF$Xu z>FfJc52#OFZjM|D=6?MeXtJ76o2Ry(%(yZr+&L;OnSn&XC8D3;NifybD-7=~fzdb5 zD^+q0t1mrSZ0yh{VOzCUhhF<$mn#KiF(TWQjpJv89P7xI0bNNtv+0xdFwGPCR&JMC zJ;RB47L%s>&l?y$T1UU~(zRcDtkr%O^%WI|A{RY35f0D8i5aNGJTCLvy0`+dK^gjD zOb8zY7+Fp$C9^+KN<4pE1F$5-1JVn(G4Ys1s!Iq+XVrS&WwP@pkP`aXxo41X7~ism zuw{aK9E!&*9ApfTJFQtx=E1rq5nxlY@>uoDp z_f3onK>n%$Mh`X)6}Ltm31}K%CjeFw6%&h0Qa)uQT%%I>2WuvWBBPk=(12Tq&sh`~ z)oyfZ+9wA||A{(e5;bK~Z9&gYE>OL6 zhrlB8H%U^=qX*nTVdL(jXVpa;q3ljNauGPd+-d$mYa(Fy_glrph;)wCT`fe% z)<7NZr|{l>-SKjS3nmgZUfuqT=)Y+SM`E3Xdqn}-Vr$o|Pd`GqLUtCt+>}KE(BP?T z+P`y6{2$%JGez2z*4dC>S;+86b8gM1Wj>%pSX3KCa3ewx%Dx8YHAoe3eRlOLdz<*W zhN3rM=A=>{Kcv*&Q^Ah=C|_%Oa=quxF!NVk1lK%93GoM3x?bhCLvD%xqV~LA%Y55{ zgD4xp<%6gzC1r4?+oa(#YFm}A9H0^VrUX07Hhm!1Mvct?-OpxVp33Z*MaqIws zn}GxRHOtl#qXUMzRV7k4FZJw>{R(6^6C1Ste_m%9TX%Fq*<%M=#NEVvCJj=Sm51D?qoq&@_rru0v>k?Nq;p`zGzlFQ# z@caSPeafIstxks(s#hf*hcby|#W%zktd5_nWj4F3{lHZWzI+R0BXg`W24Z;QrLVQ z+7TN%{5AHG2r0d)78yylum$SCk~u|XTfoe}A)Lw_g=K#lwY1+V&W@@qM25AZ#upM=4%PlxFwF@UmU>U^I&EPhr4 z50K;g<5Ho8npXgk3bsUCL|zgO5MK0@xOix`vcT!AB;{sV26Iq;W3vd-6Zl-Gdp}DoO2v{d-K{0M# zZPpt{fb5)SiB=1$7<2#4=li)%g&v?V2s?7jri4mhK5YyViiE7E?Gk0^`OJvr!8dzc zIMnzwly#K@#WE=)B*OdP2PMRO2@lFe%|4m|1g1*a_1KP)BZ2}xE-O^RwLmHo30IXV z;Bh;0?;zLPq;QZOhY}c;lHS~ZT3R!8V0jwKQ7+@Ag`LGX2GeZUthKGHlV++M#WWZ~ zOxgn7Z`XRYru5w1w1Qr91%QrApVzdSBvRT7z8MJGxeV<~s@1M&LaW-KCXh%YDMe!m zI4sn1IYnN0Lh&IIOb-|x0RLfGenXVpDzsjq%oo~E#HH5i>Isk>w2cx0f)=E$=B?v_hKdCt`7}Oubu%Mr*tdW-6d-s)0{%OwjI{?LfFvw> zY|WX!2O%ZJ>k=0tWiPiD~kYm`JTFeRWA zayU*wjmQOd4i;8b65rFi)a7vFl4^D0vs~hTnwVTr=d#niNLeg#NGiLJA0BVluBRa% zuDPk1`8OMEB9uWq>QQ~F_d6auf}Njo{k%`l2*^ud`OKz#`ZA|F-XnnRau8wbji&~W zqm4wdqRGF1XX}9hhMrIVt`<{UP9O*?lwOe}*U_Z_#)sDV^ej!kn&g#D(d8R@m{wv{ zutgdGDSen?2#W*fV4vI)Z>W3jJ!eU*g1KZC8;$gJTrDCB34v6io9E#9^%t(_b)e0f%S_Y33omsTc&&PjOVMjRqZdd zE%}aYL>esGlZweE3zapD!QZUav67{DA~6qbk4WBVe|_X$Mk1-aE!Gk*4I`}3C1;bok`!|^&yOk#*^eEKD3nUXEzSN4Rn9LVtK+J$8+l;%QW{s z?N#Z}*$UkL=qp6TBzv`E+09f=9YDKQJJKZ_^h=5xFU1{`3Tbo0i>6xPS06{2hCW5N zV}s*&LkjebM(@MR;%y%_GDtEh#krF>-tjX~E<(&f?c!BwMzLOF@DEZxBAx#Lv@^=Wg8dd>Sd6mUy)o6w|Ui`MWxorLL z=kr*(YoP3%82wR(!~tb z-iEhweTv&yG1?G%SX*Q^`N0dcAlL8nUHKEVeNINuo6vq9!KI~HgN|1PH77^gl2k8Z zsqQ9sSF0`>Ht+oz0{Vlgt^?I9b22S}>Hw*gW4wy@7I+Air%7(gte$BEths>^dC;kg zgeud#kkd&PvtSWq=Z}j6=qjPFZZ-^s58=svv5T#QnheOhSeSaSO5bR_*d+4B543y{ zAKjm$g$aZTX~9?pdnG03>O~sSQ;C1II*9bRMJtmPKB_XdD5sb2#Bsv&X>5H=F^$0P z66i7TKARxc+-6BsED;`+1mXEtef(c7Ky!TJgato3HFeGsw3a?ftUc%zSO?Xs1N@-P zK!uv5`mRwLycFQ^)yy)1juLtiGBod#-i2}Y`I6(lt15ZELXPl{%Qr_ zZy#b?gn!p6N@obzQeQCdVV8J|kUr~zzUrwJm1dRiYSAVYV3PkUA0G*U#|`TEC*$;C z_hfN)wurW3HYKxaV|HUhWaLDksZorrP_8|%Kti|o(o_-ZIzj1gI5rVX*Xyg2LpJMl zxih-wi8$2@Sq3TccvaFu&TsN6x2nzUK}Y3lOU47H$V)q69P&+=J_fLRmC*+@UD@p2 zOrw#{wzj`MB?zaDCDSMLHCM`cZwB(Jiac2k!MhEy=$OO|$Jr>GlE1zxKy(Aq5VbCKe;EYk|&hOs0q|kv(QA!=5@aB3d_+$?+mNUWvYjGU?1OeZY=0Q zc+uawRQikXB4uvCP)P38ImxT{n?PoG#=7I(@-F zjnyuxPp{ZRI+T-iI}{XGloOl~NsYKpB7fLUEl=8*?yOX)Pm!KMy#}Y0!5*S&y{a0n zEVnNvBc)!av8TA#QSH*Q z{p`Y5crayHs{g@|dsrE7ly(6#(UBoLWZH6dTD}p{N4Bl|`UTnuzUNPg-j-Wt_h(1k z^8WmK2!BOr-Bdr353OzAu+hh#_0+&`fj-&K2na$DESGv+h7o|42r!&r?|rS|37t>YeW5N9udHkhQM#}`S9p)#+#dRfb%j)G z>5&{SgpPCAlrH)1zCJBJz{@}4Daqz+8r^6>aPMJdY1X#S$J$L4D#AUo3eDh@RcJX>w zj=~kS*+my=X>YFIXc65}GL9((+KM|Ae(I;6c63w~$86+-lG3dW6Wuqy>z_aFQl~$p z*eef?a64Ou7}1Gz;QEZT74tLAi6CVM_wLv31v`B5{F!oq5mbd{V|Aj~T^U&RBEDS> zwTa|;Qa-^^&haS@)-AIIeosAoMBd8D@bvr=VdlVF=8U>HC@8Ao-<;rMPIb67Ci*yM zNGTPIy~^RhURJw~rGNm*vwPcu%=4E>=MQaxi6)97JE*uTgVN99dnvDMo3vB%qp#OBguR_<`T~KMP5*!#S?xXR-KGqcBZ5+= z>4hTNVPudhzZ>8lIfh9{`ubE@+c$R1$B+>@KYo$T77g^Tjc9^(174q9#ryk_ezb!D z{24ID;-vUc@Q#AtR6Di)RIHTAePJ3h!n~I&)zkS&4mVFDtS5t<=+L`u^mq8^Z=44f zTVTF~|LoC)t&beqRPx(H0IsHeYm;*s=P?3cT9e}~fx+ncbTMP(Hz=6j?VZlF>Dv7B zmj^JIB$51LE~}V(x!pv-lUls9@_g+hb@SBP^?(J*b`#WR`=W^2fVlKp|4Ndy6NQgV zLMDIgp?f@`-lNWg5P)oM&R1A0D(HezIh0s6^q>{Zk~lGW<%;YgMpM}>WJ|QQp6!Ek zD9=xlIpNb-AXJg4WmTB%xlcuuVjrxs)#W15Y(i+EFnuyZB49zbLC)4<47t%y{sH*7 zzN{D-#9ILxeSAxAt2S^i28)mCKs+!9ndE5byIoaCJ(OX{s;W^f_PFpDS_M(aw8}3h z_d-MQ`Hnprz2y${Xd@ESe7Ueq@KT+K+c)lM)n7`^M9hnmRxvrn0wRQ9)@Z>)dm>{C z{Mvr6K`Ia%0w#w{i=Mwyom$=;{g!Z>SOfDM{#sRW7_Kk3S*_A9_S;kmrax#_n>&V_ zLgLoJZ!|8NP=6RZVn9bA!BIIhbR*N^(@hP{=l_PiR>cJr4%xGXx27a{okUAZ@elfB z7Y=mALi`E4fl+hSA}1jZMdaeLm_LCqakG#`cTeI&yoTV{>js8=%{}JrusrSar?^UB zOOavj!G%r7x5Vxz1;0RBRewHrL=H~LzX={weYlcdM4FOpQP+vN)ZY4|rXl-c{wa2B z5^9;+Q^X05XqbPJ%oX0eSb>cG-X~DI(+Uc?*C3UZD3NE2Nxf+Mk<7qH^VuRIc=#ou?mSJ1+#UJ{ClegGweQvoKmVg zVIaJFYP0Q?4VX)Rmy1W4XI9E4=EMZSzV2x!PEPY#2@5)|0fLWM0 zv1rlno;m_^nmRVOn?bFE?N1NpF*i{4s3;p0*FGXU&)Y>fVRWZMP+KExX*tbp%h$&} z+5)Q=2OB}O9L~K#P3~1ayV9&qOI@DTi?kV3J+~U3FLT8H?O?48xptEago|i+tMnjy z!1H+8;{8>SlXTHh=+vthw(kl}(&3Z#GLdU{!wYy90ps-;Zwu`4M}p+q+S&#N26i_^ ziySiA&bH3Z`8%GZ%X$?4EGfTb)OE@Odb|(hI~T*d?~uYO8w*IX9y+{_^JYQhYEIt( z8@5)>_vL2cFeE6_KUh{1b@Diesn=xTlTv9DS<}cp`G`UImq(99#rYp2&>(nK<9g?D z@3lwQCS!9-@M4ch;{reMB#{CH-{j`VloxM42X(X9z21oyAp~&4D<_D#6|DjDvj3il znoWv3>rA)>sDrw5puua$D$}AKM2)5lYFzc2F+X7-Zf5>lRso|R*sz)B?|yozI$}L; z8r=W%nwdYCuDoa@54i~uk521ha21Y6zd}Q-9xwZJ+D6^Ea^e?T$&ELPOR>SA3h@w) zMQDEWdhFs+_(>M}+P%PVt4S$_Fjccg{aoe|YKBDRaIaX{d^Mx-2UMp-1(qbgQ@XuZ z_+N~8HoA@%aCZ`+|>bkcHk(dXO8oE)sTT+znu5mzz zZp4v}Q4kamq)S2x0cq)!7!i~~i4j3zgrSBKq(Oe0=Y8Mn`ab@EfA-#I?{yYy-Rr*B zIR{FiLkDvcI8LnBsA0Ynh?hg0`y-wGgT3eJ(Pv4!WGIakzp&}Et5X66PQlxBlm3~C=H-Vb^|~286$~~|<;=VrxrY3>9SeT6p=&>X0P&1Z8C-?!q-XV0JOoy-bq%0>7<>S<6P6L zbnMyZ48B~SUg@pxEv^Winh_3geG3jK31W*2$|2?)mev`V@otW3Mu+oP)k0oxOlVx- z4`z%J$IXy$>aBf0ex41ZGfTQLgxo|SCdlG21DTq%dT|_egl5Lcv$mUy)Q?TldPwK! zaftv|3?)hZn3&=>*~bRRZe!DTG!!d7gxyJ#!UHgddPTfR#>sg2olwZ$dDD5gbMMB_ zB&F*@_GIskN7UnHAQM|8L}u2Z)^BJ#komLOeb35=8; z6-|h?(WTx`oylF)oA;}@=XaIGb=l=%f>!HWm)OmPsaD^F%O#)7!wqBf_V!M{+cTG0 z+i}~x0imOkBEZVnCq$PJ6dC%s^}#(q-P-;jtrermz!!N7?bTgo@^Z5N*%U#qW;s`< z2qH&u@lvsM8Z}NgdgXd&UNR{XUp864833U!?I_j@oxuIWEgjVqIa?iIfcsvtqc6)% z>y%0Lp=2#Y^lP@d-8-cKJVKHU~^`gQ92b8Af{>AsAA2S&$j#rVhg z=XwJkXu4I`l{li7H{0X>sno^3V#lmLh)!1&Y?Zx+PO-hsfo3j9#UYxrhYOqRd?EaD zN*5T+a&|EIx~CS{ni?b7)hIdz`_77EYACA5Kf|m@+T{^DE?q6cSB>2- zwO-HobtjT*m)02Y7cWb*MJB56@UquLgiA)|drJ(mmww$znNpUJbj*N6{}z704P!0j z!DLoFSz20pjCwpGH)pF5d3reTN-H6>v!-9H`L8!4;M1N^(zgz5l@AKM4NOm1s{TT% z3;^ekf-2u=i_2>vmgrqRC)CVBmiY|BD*5-NYAn86%~9UF3}ls=Z;ND2kz;bf3+{VSHdJv=;KDhB+T2H(g-RTE&E7_}2o2$T42 zD;kgqYI8K2Iqzqfa$!m63AkV@`Dd+Bz>QP{M`(R%c|wQvBLXXygqmvFcI;&Zv4)=W z8fHt7@NeXK|CS+ZLQ`(?8EBF={R=L_ze>>U7x->EeQ7?X=dp!V1)+9Xr!>Eu-M)NS zd4jT0 zB-|>)RIymbK+dF1i?l)Mr=Y;e*?Pi`Pde$PsV8YFw8m>%{WjlZE`m)J*mE+Go)dJe z>RKzOl25k-ihz1P#wzyFiUaPECob`U760AV^a}l5syY&Ug4#C_=?nWPyZGN}mj~Y| zXK?^aBrf<aC^SloV}2H;OBU{22*+V?!A>P0eW z`yjd^_~E$si}n$`XpUKqJ{L%SHR8M3> zEJBtU5%RLTi9OId)vJ71q(1s>yaIT|Sy87$#(`9;|6jgWhB}9Kl?73XNm=hw+}?mD z-}aFY+y3U0kJd()k*_CBhZOnFemH}F^Q7CB=?2?8RE5IW{DsTeG$m`~hpV^b<&^nD|2vn<$EPk2|j+=3Lqn! z-wC{i7sL{W$psN`_*@0nbjONq()k8JH@t)GPBj$2Mu$K03C=^5jB%{$%5=$@y9?4J z-B}4fnoyat<+hP>Q&}d>72drkKjXMW;zX+ETls`+qv~d8T@uuHx=#e_WH9GfLhrwN zV(Xrn32aKp7nUeixz?9>AI>);XJfv$aN9}3W4?XLx+zLWTzH9MDk)?nfX?^ur1AB_ zd7WR$S`go}xw#K4_qUXFb}s zkkoK9gG@M|X>&>mpFhKZA#h!~rStLOgHtZ(kd^QGZ*P)N)8mtjMo=_#n%$uNe)Siw zgwuTU$m`~@UYFsSL(8(z!|;|5GGMgda^QYs?6%wd#E|EY+F7~7xnU1pZ|ycO(Vw!v zo_slO=|6|BH2(={*vP6tdn1>RbHkT83`A4BqJ`DTuMV>3hYvipJ z)=WIoWfK=8<}eskOVKRRZB4?1`)ywF#%VnZ{_NZ8VVidSkgF^fn$RJ+qKF&GMCS}E z#LdG*bGxse+opNb;+<(nse%a0U2ooJdjdaz+-ATrtu4?iZ@p3$YOtQ$(h~Zj-NxBU z#RIai&cCBvP%u8rBc)-fu##4?Lk=PPu1XhkQa2(3qjd~@XtWKI*}?~GDQ028ci!k6 zdW8vpLKWC)@AV2<`Oo1=4(RjHmj-O(rWOaj?lrGLurSb7Kje&$4!z*8Y{`@%u9y47>av&a6cCRC; zeH*NdJcpiEA^U>4FbV$VvfS!_@+grbx!Te&%}V(f*`meK?s zYzkX$2|50z4kgh8*^dYkv-AXG{WVVb6cjQnJkMZe-~S`DGOLN%q5_yMkwULf60wpK zBowzBt%?>pUk>mXctmG)NZgn4FX^v}wqymCbW@;joo9m&;x6J>ZYkhi5q(mIAyYRbBn7Xtw%PAf;nz_zDM16T-z-esO%808m)hrLa zlPZMknhEox4$2+Zrj#rSNX1QYZ$rHPX!upmSYct)I9W+@ zJh6^$%+w0Qf1$P4#6IUHadSf99pB#UiC)Iu1*Cr1wfuRuub|uyYYyz}yB=WchZO=s z2uYhZI5|Wvd zG`?yr5TPGa7?9Ou_t*=Bn!>fKEnK*vMOqmnmolGp?B(m!{w$efba{ z)W27zs1pPK9pI5;!1gj8&4y=3jbDwtYW#KbUkoOS(Emu%_C$ zF8Xg=>dCS6q1Iki-+K@i^y^$Z%-mxyE0R?f@tl#o+sa1uC0}dZL9%>eNgBrkqlDFM z=uXAa9pAk``L@s@L^MU!Rka;FW4m8j#D!FnPS$%KgO%(_#50xzR{lYg>~N4jH~nVh z6sTD2^8$JNu+~ea%oI%QHIN8Y*tU;QO`6{K@=G@&NiYQunM|DxTf)t50Dz~`OZ(~* zDJwEsT{|_jxk<`Uu5!iEC@BmO;5?F7A;aa38`uWTAd|^Pt@%~=XqI^QHc$4iv$L~S zV-P~nu5w(ye~RB$#KFBY8iiI^rc}+&Q8-(s_?^(fZOmkdRicoDnKds=&9CeE7AX63 z_PszbeA15O?5pk5>ywJlY&0gKJz8J-bdZ2#2S%-3oN^bK&`f#n70eDzG|QLy+)3n16c#4kn4`ej7cy_;k~h^Bl< zan~py;WXnRWI+2j6bc~GVv*_!)@$}m=m{z?T|0J$Of8LoYzOYI0iM)5JL@_v8o;y2 zl-Y47ON|n>5N{n4%-C}XUayEl^fPMt!bN7Q`D&`Y6NL)Mc9_SNEFvK)IK{RWF`{2d zU!VGmXf9`AR~-y2;qU)HWVX5#Toww>V-&=_7_l(W8fknv|Cl(^UN5Wf>3?t*k%id$ zlm2kHf<1L?qRiL1s;6gHKPHpye0#vQy}2ZJJa^RjujVO9p3MpGZ!s{>kwRpHEigdp zD1&d{7ayh#vBBBW$x*we;=aafUp8%)3vfE={mBzg{^nOVz4$wan}PUnCCa)MFCdj?hx{p4+@R>6_Ns_fzTYxrJj~(O_vVm&GnQ+@ORypRBl!Y5QAJ^-t)7D0J{P9*b z>c4o(ukOWn($(r0fDv|I*Zjb?fn41Z%R0#I7Q-qvY$$i)f9+$-$9!VDm&3a`2kSIA zU&{{q^u90lRTbP~N_ewymG-@jy2e|u=IWg2>sW_ozXDiK{nrDwResp98h(XzS*Dz= z3#l+?(H43JPf`N;M`|s@rj;q!I0nPGbNu}JQF$K|DhJ1ZzU+$}6#5_Xs$sW*FUsgt ztbLT-bnjtgG&kYt@o4)@5|a4+C?-WbR)XP%wkY?(oBL3Iv%r?iFi{B!#Bak$rAO*m zrLR#hC2Xjt?I~g-BcA!_F^-Ug{1Z5T9d&>YYZ~oI9uA;V*T2k+)nGo%b3B~(sA_uua_xTB-zwL# zztuCl49bzk3vG5f$4`4Sm%syPDY%j zuv_#&*V?lF0oA7;?q@UJ0>$@#WU84opGi+5Nu$c(RtB&xF!aqQ9!3zfvF3pzJXvd1SX8hmKp>$nrUku z++!yRikUwVY@wQ^GhQL~op95C zot}ly>9gf#V^>!oK2iCB5lG-PydBm|Zyrq7TIEu`Y4s-?ok$BEdUDZ-;7!K_a_a>z z#;8Wxsg!Zgt|kG;CNnjy@QhdkcYQuaX#}aDfF@83$#aDF?Irr?_~)=8SS<*mDbz&B zZ5gLz)dT*OsqEj{)6qLFF||7Fdk3)?e2B`YnB|$wze>uQ^0j%5u%J9ilp7-y{dk97;e+p;TI9^JE%9lPzEWkQ z+28f0L-Yg*fhP|OGBY+>991`iXfe(p-av>y_JZ>>@$dQgV(uC?HEPKF73q`v>+)A{ z1%#~wPW1<%*}m7lec1v(co=pCQ3>SzkjKHVy@?{X1a}RjA_28#L2xIzetgmz@iUae z@mWY>g*J4^mH#D)Ks(atemgL5u0Ac1+WOXltAg*ed>Pc1JMWGzhdSB*H!le_t4gIC zZo_`G&zbI`$Gcz_pLPl_f}nF_!iwxshh~GNPXbSU^z7?xCEBI9wA0q~Ko$#X(Ui~e z;remC;M;KRQ9{d4$(&;a3(31#H>X7Om9nHVMoFdy;LWd>3pH%8&OC z6|7j!3ROc0XOK0pm;q8mrwyKQgkRZ0KW>0!#0xG1K04nV<7RlRK|`KJNuMEmHs48G zX(>TLUtk*<1G)7h)KzIowk#E#AQ6y2Qu9n#!kb`$=tuXPs2rJaU;WLaOlv}tDlS2X zu8YKaU3CTR0|oa#v(OCjq9liva53V!jj%I(?hLbp9e3W_eZP6*c{{7&WByfl(;K%B zRjy74k_6?q!{;nVkCJ{rB5U|q32KHSQL;XK_h%*66o-MkmA$x#h*>rObA^{r(dl{M zBpEWyLw-AZJ4g3196qT@LU>(`?Op#sbGM9+%ZOpn9Fyp|d~dJi+5AUD_6;^X=5OS4 z5}jMtFeSUPy?j$2 z$@C(EQW8rjk9aVeqVBteW1d&}{kv;o*PBvck6FS?8chwX<@Pty_Y(X^@$Jrj4 zAnOz_EMJZ3DLUoNA9K0rulTp)0eEm{O#9xwn6Z7%pIy5w;fy?As|DWpvur<{|M2}o z=|z_f7Ri!E1948v8oCjoEL1?!%|ShMua>}41I`)*cj^{qB2qJ}vBp)}n!>{)3NxX5 zb+;{CEcY_^_xF|XxfrlvvDC3aDwG~|XA3ZY@EsGNs?ELHrbg8gBYW>vEP$@uqc8)5 z1kSMadcy*hX@ay-Y{$uFN65}cff3fBeNmY-h4SZIABkT0bcI7(rwO57H&l4lwgx6c zr-Ql5iRSnRJ&I${O()*hO$t7x3t4oEk6X5W&Qr*WFjlT`+kqBdcR)GNj@B%?;eL$q ztJW96+B^C?*j-Q>(F!v^ux0mw_dF7W{Sz*j&p(e8du<2U-rq%{yIcL_i+(-7+u0G) zz=O%2lH+M(<$CSl*wm``2Tg;4_kk67(G>b<~tqb4AZtU*X0 zFwhjsl{>3Lo~mC7p|k&$qaPbI)#aV(w{6C#}z?+KB;cu#b*&#l>Kl(7XelNsawld?IZIw zN~cl?8zAE|vg~DRw80E-W$j zmgnw>vYwVd0aPps@A_cO5b3TYJGruEnjnC-xvq2)>dTK)MB62Ap84vsamW6?pfC`pX1TrC+3^S zv#uy_7@ln&Hh=Cj^ZqFu`|FA48CslCB2sYid#IkDoh2XGcjbQ04tWuMDH24`Eu`vX zC2Qo>^w(%}$Avo{z$%1+yF8NhzT|WJ?V0yV&xiB>E6i@~2bZ!2z6;RFlQ|3B_HMGe zrR%`WhSkbjWJx!$JTeZ>us$Ohc)jO0PFj-Uv%2d%BVmy=4R|v--wE5HIhn~^pHc5Z zgY)k;x7hkgrqc&Dhm)gwDhm_3Y6i1C@1nf*@0q3jq0ATBKGM}Z$6m-vkB{|iY?=)@UTttG3T^izS zaX*cT(~Y5Ai0b5|yqPbiQ>XOjW~;{VE3xB)Tm3 zl{VZ5(~bCxnS{et@e5<%I~zI@o}g2w;xxg`XwY=h;rqKEzm)I8V&M(n(&GgQX=?(JlkxlrWC`Hj;L1CMrI0Ts={_hF2;u;$Ez5Ic5P;xOU2 z?to|bS4IM^C9M5Uui!TXyk4wq%?`O18j*G}!x&tFQ2>xvwL+WP)8DIPFMujh5 z64x_XhG8nq;aWDw%j;1Gz&!e&?V)A7TIC~KD8!}xDPsBCQ)?$(prz0p_&B2oG+q7Z zM2Qt|XB6NFxS{Qf86UxnU!NUn7YLzGE4M>Xu_r!@eL$M-tQlc$0pX&O)_4UQJ%Z{W z#D;+0EE-TNUzEOOm7h%3Xw~qpu|LdmLCas(g-8emw+(3wx(?7Mt#sMtV_zhDTP_IL zkpDEx$y0MGh~G#*?*j(uT!XRM=mv1+E`<66DV_Oft{O-p%NhDh9{881jgw z7#UFr`~k14?8Wsq{EZyFBk%Axx7#r=aQA)hdwdPXvi$eL2LY&aJb1ZdTuYF-P7f^6c+r^xv=E>KUX58mwGfC4vwtD)pq=lD zK`eG3{&ejknamJ~>e|rU_dbjU_LHFl_zw{m@9BrRQad7fu?X<(t00;&TL4=meMH5t z@4V>l8Vi8DoZC>+ISH?rdp)xNJwfg~dO0EE%E0?*t;WFlpYv1QnZOqqf_7Cg^Q{GE zHcV2;th9aCYGDw8VCe~5@DsBPgLB)POl~&clHA=83>;*bGL2Oor`4#@sqaG*mj#!w z>o3p`cCq`gIYcwYt6_dhFVx_IqP^kF}cOlO--3@e0H4^3>c7|ESRy-N#4TfQ-OWK5~x zn77K~b~w4zK)$v;HKgm4>Pdm9<8wx6XH?Lv?JETH2+)iu!Hai8&C+bPx&VQKUUYir zw}P8#eCf`%!4H#Ca7lb;qJ~_Su`b@?oAa4o`n23M*=G;^ubrjJG(ow6Fa&C+JUW{S z1kXe%MgV@85yCNK4N_=JijFJOiAt)fs(S`m;(P7?SiBDn3scR(0(d5u44}u)=8#?2 tT7smNhLz)f`(+SM(9Hk)b$R}rRJycfOVRPyXCm;Ur)7M*M$_rh{{hQM2ZaCt literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch-members.html new file mode 100644 index 0000000..c9bd847 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch-members.html @@ -0,0 +1,113 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html new file mode 100644 index 0000000..5e967b7 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html @@ -0,0 +1,415 @@ + + + + + + + +SinricPro Library: SinricProDimSwitch + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Device which supports on / off and dimming commands. + More...

+ +

#include <SinricProDimSwitch.h>

+
+Inheritance diagram for SinricProDimSwitch:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
void onPowerState (PowerStateCallback cb)
 Set callback function for powerState request.
 
bool sendPowerStateEvent (bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setPowerState event to SinricPro Server indicating actual power state.
 
void onPowerLevel (SetPowerLevelCallback cb)
 Set callback function for setPowerLevel request.
 
void onAdjustPowerLevel (AdjustPowerLevelCallback cb)
 Set callback function for adjustPowerLevel request.
 
bool sendPowerLevelEvent (int powerLevel, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setPowerLevel event to SinricPro Server indicating actual power level.
 
+

Detailed Description

+

Device which supports on / off and dimming commands.

+

Member Function Documentation

+ +

◆ onAdjustPowerLevel()

+ +
+
+ + + + + +
+ + + + + + + + +
void onAdjustPowerLevel (AdjustPowerLevelCallback cb)
+
+inherited
+
+ +

Set callback function for adjustPowerLevel request.

+
Parameters
+ + +
cbFunction pointer to a AdjustPowerLevelCallback function
+
+
+
See also
AdjustPowerLevelCallback
+ +
+
+ +

◆ onPowerLevel()

+ +
+
+ + + + + +
+ + + + + + + + +
void onPowerLevel (SetPowerLevelCallback cb)
+
+inherited
+
+ +

Set callback function for setPowerLevel request.

+
Parameters
+ + +
cbFunction pointer to a SetPowerLevelCallback function
+
+
+
See also
SetPowerLevelCallback
+ +
+
+ +

◆ onPowerState()

+ +
+
+ + + + + +
+ + + + + + + + +
void onPowerState (PowerStateCallback cb)
+
+inherited
+
+ +

Set callback function for powerState request.

+
Parameters
+ + +
cbFunction pointer to a PowerStateCallback function
+
+
+
Returns
void
+
See also
PowerStateCallback
+ +
+
+ +

◆ sendPowerLevelEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendPowerLevelEvent (int powerLevel,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setPowerLevel event to SinricPro Server indicating actual power level.

+
Parameters
+ + + +
powerLevelinteger 0..100 report the powerlevel that the device have been set to
cause(optional) Reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPowerStateEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendPowerStateEvent (bool state,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setPowerState event to SinricPro Server indicating actual power state.

+
Parameters
+ + + +
statetrue = device turned on
+ false = device turned off
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPushNotification()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+inherited
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.js new file mode 100644 index 0000000..fc8d30b --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.js @@ -0,0 +1,9 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch = +[ + [ "onAdjustPowerLevel", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html#a13b10bdb1844babe4de320fff9172d96", null ], + [ "onPowerLevel", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html#a0685d34694badb4442fed6b69b69b366", null ], + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "sendPowerLevelEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html#a2f1f88c7b4d9503bfcfe5557c5e55ed4", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html#a04266791a4b23e9614b8773edb5f67b6", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch__inherit__graph.map new file mode 100644 index 0000000..7f488b4 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch__inherit__graph.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch__inherit__graph.md5 new file mode 100644 index 0000000..4f99db7 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch__inherit__graph.md5 @@ -0,0 +1 @@ +412d9a16e4164a0e53f5d30f2e0b99ca \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..14a7b068b0d2870a0c578d837822e8a4d1260d2d GIT binary patch literal 12074 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 literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell-members.html new file mode 100644 index 0000000..f85cba3 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell-members.html @@ -0,0 +1,111 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SinricProDoorbell Member List
+
+
+ +

This is the complete list of members for SinricProDoorbell, including all inherited members.

+ + + + + +
onPowerState(PowerStateCallback cb)PowerStateController< SinricProDoorbell >
sendDoorbellEvent(String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)Doorbell< SinricProDoorbell >
sendPowerStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)PowerStateController< SinricProDoorbell >
sendPushNotification(String notification)PushNotification< SinricProDoorbell >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html new file mode 100644 index 0000000..11a1459 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html @@ -0,0 +1,328 @@ + + + + + + + +SinricPro Library: SinricProDoorbell + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Device to report doorbell events. + More...

+ +

#include <SinricProDoorbell.h>

+
+Inheritance diagram for SinricProDoorbell:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
void onPowerState (PowerStateCallback cb)
 Set callback function for powerState request.
 
bool sendPowerStateEvent (bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setPowerState event to SinricPro Server indicating actual power state.
 
bool sendDoorbellEvent (String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send Doorbell event to SinricPro Server indicating someone pressed the doorbell button.
 
+

Detailed Description

+

Device to report doorbell events.

+

Member Function Documentation

+ +

◆ onPowerState()

+ +
+
+ + + + + +
+ + + + + + + + +
void onPowerState (PowerStateCallback cb)
+
+inherited
+
+ +

Set callback function for powerState request.

+
Parameters
+ + +
cbFunction pointer to a PowerStateCallback function
+
+
+
Returns
void
+
See also
PowerStateCallback
+ +
+
+ +

◆ sendDoorbellEvent()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendDoorbellEvent (String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION)
+
+inherited
+
+ +

Send Doorbell event to SinricPro Server indicating someone pressed the doorbell button.

+
Parameters
+ + +
causeString (optional) Reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPowerStateEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendPowerStateEvent (bool state,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setPowerState event to SinricPro Server indicating actual power state.

+
Parameters
+ + + +
statetrue = device turned on
+ false = device turned off
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPushNotification()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+inherited
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.js new file mode 100644 index 0000000..fe69281 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.js @@ -0,0 +1,7 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell = +[ + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "sendDoorbellEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html#a168f5a4ddcbf381fd548bf10ee05b272", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html#a04266791a4b23e9614b8773edb5f67b6", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell__inherit__graph.map new file mode 100644 index 0000000..a31f187 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell__inherit__graph.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell__inherit__graph.md5 new file mode 100644 index 0000000..01b00d5 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell__inherit__graph.md5 @@ -0,0 +1 @@ +d64c7f3487e4580b7ade6d4e03fa9c1b \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2e68a4aadd264454e3d846c1ff079c4d4e295b87 GIT binary patch literal 11754 zcma)i2QXakyT1~VL=d9aZ-gLPbXH45?;+8^=rw=Go_<#4XBKc89(6L4_;!BLib@!BhMXTcY0@+R%-V7NNL^u0r56bFkJ zZb+cd3qwLJ#erDWQQ4NLT63d+pQztMknZ&tA!!m11Y$s5!K~{2IP$h5uZYyO&5L3l z7u|BE7=e7kpE%U1`t$jDM&{Aq%lG(UW3Dr(Z5Tp2We;=QU(z?@TXwwtaN7IpVQI|^ zx&P^cd+U$lhKDQdY;A5Drn}uISATHJ$k*4`NfSg8r!b!GhQq?5jTziNhg<#oestpx zaeF)*`M_3ArAS_mHL<*$cWpQ)$BjlibaBzNr>7^LC=(rVPUBnNa3(Q{ZdX2uC|-) z`NUW*J&fFrjI20)J3e-McxXG|mhh3jN7JClDr;@SdDN&`E4sU!b8z|kcF7(xo!MtUg*xRYN6hj>o1V34^^bnvhrR_rpcIp#uuy`bM-k%hhdc$VbKy;zj zTz!R(+)6%Hl}|tGkEUcjOLi?C5nJW`8#!uLb=2RItldK$x2c2O3|6IB69E^C7FK60 zEaZV$`N_!Q?);ZkOr(MP>2XaaZVw4#2?y2a1%m@@a9tU!=>~Du;A4_p %-^J?L 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 literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan-members.html new file mode 100644 index 0000000..391dfcc --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan-members.html @@ -0,0 +1,113 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SinricProFan Member List
+
+
+ +

This is the complete list of members for SinricProFan, including all inherited members.

+ + + + + + + +
onAdjustPowerLevel(AdjustPowerLevelCallback cb)PowerLevelController< SinricProFan >
onPowerLevel(SetPowerLevelCallback cb)PowerLevelController< SinricProFan >
onPowerState(PowerStateCallback cb)PowerStateController< SinricProFan >
sendPowerLevelEvent(int powerLevel, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)PowerLevelController< SinricProFan >
sendPowerStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)PowerStateController< SinricProFan >
sendPushNotification(String notification)PushNotification< SinricProFan >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html new file mode 100644 index 0000000..794b90e --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html @@ -0,0 +1,415 @@ + + + + + + + +SinricPro Library: SinricProFan + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Device to turn on / off a fan and change it's speed by using powerlevel. + More...

+ +

#include <SinricProFan.h>

+
+Inheritance diagram for SinricProFan:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
void onPowerState (PowerStateCallback cb)
 Set callback function for powerState request.
 
bool sendPowerStateEvent (bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setPowerState event to SinricPro Server indicating actual power state.
 
void onPowerLevel (SetPowerLevelCallback cb)
 Set callback function for setPowerLevel request.
 
void onAdjustPowerLevel (AdjustPowerLevelCallback cb)
 Set callback function for adjustPowerLevel request.
 
bool sendPowerLevelEvent (int powerLevel, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setPowerLevel event to SinricPro Server indicating actual power level.
 
+

Detailed Description

+

Device to turn on / off a fan and change it's speed by using powerlevel.

+

Member Function Documentation

+ +

◆ onAdjustPowerLevel()

+ +
+
+ + + + + +
+ + + + + + + + +
void onAdjustPowerLevel (AdjustPowerLevelCallback cb)
+
+inherited
+
+ +

Set callback function for adjustPowerLevel request.

+
Parameters
+ + +
cbFunction pointer to a AdjustPowerLevelCallback function
+
+
+
See also
AdjustPowerLevelCallback
+ +
+
+ +

◆ onPowerLevel()

+ +
+
+ + + + + +
+ + + + + + + + +
void onPowerLevel (SetPowerLevelCallback cb)
+
+inherited
+
+ +

Set callback function for setPowerLevel request.

+
Parameters
+ + +
cbFunction pointer to a SetPowerLevelCallback function
+
+
+
See also
SetPowerLevelCallback
+ +
+
+ +

◆ onPowerState()

+ +
+
+ + + + + +
+ + + + + + + + +
void onPowerState (PowerStateCallback cb)
+
+inherited
+
+ +

Set callback function for powerState request.

+
Parameters
+ + +
cbFunction pointer to a PowerStateCallback function
+
+
+
Returns
void
+
See also
PowerStateCallback
+ +
+
+ +

◆ sendPowerLevelEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendPowerLevelEvent (int powerLevel,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setPowerLevel event to SinricPro Server indicating actual power level.

+
Parameters
+ + + +
powerLevelinteger 0..100 report the powerlevel that the device have been set to
cause(optional) Reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPowerStateEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendPowerStateEvent (bool state,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setPowerState event to SinricPro Server indicating actual power state.

+
Parameters
+ + + +
statetrue = device turned on
+ false = device turned off
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPushNotification()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+inherited
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.js new file mode 100644 index 0000000..1204241 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.js @@ -0,0 +1,9 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan = +[ + [ "onAdjustPowerLevel", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html#a13b10bdb1844babe4de320fff9172d96", null ], + [ "onPowerLevel", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html#a0685d34694badb4442fed6b69b69b366", null ], + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "sendPowerLevelEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html#a2f1f88c7b4d9503bfcfe5557c5e55ed4", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html#a04266791a4b23e9614b8773edb5f67b6", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan__inherit__graph.map new file mode 100644 index 0000000..2ea7523 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan__inherit__graph.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan__inherit__graph.md5 new file mode 100644 index 0000000..e8b5121 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan__inherit__graph.md5 @@ -0,0 +1 @@ +40aebefe191dc232dae40c0c94d051eb \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3b9795b5700a8e11da273f8e78f395254d24f08e GIT binary patch literal 11256 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 + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SinricProFanUS Member List
+
+
+ +

This is the complete list of members for SinricProFanUS, including all inherited members.

+ + + + + + + + + +
onAdjustRangeValue(AdjustRangeValueCallback cb)RangeController< SinricProFanUS >
onPowerState(PowerStateCallback cb)PowerStateController< SinricProFanUS >
onRangeValue(SetRangeValueCallback cb)RangeController< SinricProFanUS >
onRangeValue(const String &instance, GenericSetRangeValueCallback_int cb)RangeController< SinricProFanUS >
sendPowerStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)PowerStateController< SinricProFanUS >
sendPushNotification(String notification)PushNotification< SinricProFanUS >
sendRangeValueEvent(int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)RangeController< SinricProFanUS >
sendRangeValueEvent(const String &instance, int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)RangeController< SinricProFanUS >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html new file mode 100644 index 0000000..db2dfa5 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html @@ -0,0 +1,527 @@ + + + + + + + +SinricPro Library: SinricProFanUS + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Device to control a fan with on / off commands and its speed by a range value. + More...

+ +

#include <SinricProFanUS.h>

+
+Inheritance diagram for SinricProFanUS:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
void onPowerState (PowerStateCallback cb)
 Set callback function for powerState request.
 
bool sendPowerStateEvent (bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setPowerState event to SinricPro Server indicating actual power state.
 
void onRangeValue (SetRangeValueCallback cb)
 Set callback function for setRangeValue request.
 
void onRangeValue (const String &instance, GenericSetRangeValueCallback_int cb)
 Set callback function for setRangeValue request on a specific instance (custom device)
 
void onAdjustRangeValue (AdjustRangeValueCallback cb)
 Set callback function for adjustRangeValue request.
 
bool sendRangeValueEvent (int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send rangeValue event to report curent rangeValue to SinricPro server.
 
bool sendRangeValueEvent (const String &instance, int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send rangeValue event to report curent rangeValue to SinricPro server for a specific instance (custom device)
 
+

Detailed Description

+

Device to control a fan with on / off commands and its speed by a range value.

+

Member Function Documentation

+ +

◆ onAdjustRangeValue()

+ +
+
+ + + + + +
+ + + + + + + + +
void onAdjustRangeValue (AdjustRangeValueCallback cb)
+
+inherited
+
+ +

Set callback function for adjustRangeValue request.

+
Parameters
+ + +
cbFunction pointer to a AdjustRangeValueCallback function
+
+
+
See also
AdjustRangeValueCallback
+ +
+
+ +

◆ onPowerState()

+ +
+
+ + + + + +
+ + + + + + + + +
void onPowerState (PowerStateCallback cb)
+
+inherited
+
+ +

Set callback function for powerState request.

+
Parameters
+ + +
cbFunction pointer to a PowerStateCallback function
+
+
+
Returns
void
+
See also
PowerStateCallback
+ +
+
+ +

◆ onRangeValue() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void onRangeValue (const String & instance,
GenericSetRangeValueCallback_int cb 
)
+
+inherited
+
+ +

Set callback function for setRangeValue request on a specific instance (custom device)

+
Parameters
+ + + +
instanceString instance name (custom device)
cbFunction pointer to a GenericSetRangeValueCallback function
+
+
+
See also
GenericSetRangeValueCallback
+ +
+
+ +

◆ onRangeValue() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void onRangeValue (SetRangeValueCallback cb)
+
+inherited
+
+ +

Set callback function for setRangeValue request.

+
Parameters
+ + +
cbFunction pointer to a SetRangeValueCallback function
+
+
+
See also
SetRangeValueCallback
+ +
+
+ +

◆ sendPowerStateEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendPowerStateEvent (bool state,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setPowerState event to SinricPro Server indicating actual power state.

+
Parameters
+ + + +
statetrue = device turned on
+ false = device turned off
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPushNotification()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+inherited
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendRangeValueEvent() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sendRangeValueEvent (const String & instance,
int rangeValue,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send rangeValue event to report curent rangeValue to SinricPro server for a specific instance (custom device)

+
Parameters
+ + + + +
instanceString instance name
rangeValueValue between 0..3
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendRangeValueEvent() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendRangeValueEvent (int rangeValue,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send rangeValue event to report curent rangeValue to SinricPro server.

+
Parameters
+ + + +
rangeValueValue between 0..3
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.js new file mode 100644 index 0000000..1d64c48 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.js @@ -0,0 +1,11 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s = +[ + [ "onAdjustRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#ae85696d55112ae7343f9807faee6e064", null ], + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#a6d6d8070b49c8b5272460836a1120b33", null ], + [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#a94adbcdf6ce61cb6552a5f9915e705ae", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#a04266791a4b23e9614b8773edb5f67b6", null ], + [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#aaf84aa417e2246843a27e819898e64b5", null ], + [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#a1d726751c416fe6dd408e5dd19f6b53b", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s__inherit__graph.map new file mode 100644 index 0000000..e7d1cf3 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s__inherit__graph.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s__inherit__graph.md5 new file mode 100644 index 0000000..5e5742d --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s__inherit__graph.md5 @@ -0,0 +1 @@ +8396651cb2a8d6155972479fc8a73eb6 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a9f4c36195440898fa88909f954235dc09ba00ac GIT binary patch literal 11744 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 bT#;74Il4m1rwKT+O`xu#qYQas^X7j5(lueG literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door-members.html new file mode 100644 index 0000000..23a5147 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door-members.html @@ -0,0 +1,110 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SinricProGarageDoor Member List
+
+
+ +

This is the complete list of members for SinricProGarageDoor, including all inherited members.

+ + + + +
onDoorState(DoorCallback cb)DoorController< SinricProGarageDoor >
sendDoorStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)DoorController< SinricProGarageDoor >
sendPushNotification(String notification)PushNotification< SinricProGarageDoor >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html new file mode 100644 index 0000000..71dd3a9 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html @@ -0,0 +1,282 @@ + + + + + + + +SinricPro Library: SinricProGarageDoor + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Device to control a garage door. + More...

+ +

#include <SinricProGarageDoor.h>

+
+Inheritance diagram for SinricProGarageDoor:
+
+
Inheritance graph
+ + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
void onDoorState (DoorCallback cb)
 Set callback function for onDoorState request.
 
bool sendDoorStateEvent (bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send DoorState event to update actual door state on SinricPro Server.
 
+

Detailed Description

+

Device to control a garage door.

+

Supporting

    +
  • open / close
  • +
+

Member Function Documentation

+ +

◆ onDoorState()

+ +
+
+ + + + + +
+ + + + + + + + +
void onDoorState (DoorCallback cb)
+
+inherited
+
+ +

Set callback function for onDoorState request.

+
Parameters
+ + +
cbFunction pointer to a onDoorState function
+
+
+
Returns
void
+
See also
DoorStateCallback
+ +
+
+ +

◆ sendDoorStateEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendDoorStateEvent (bool state,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send DoorState event to update actual door state on SinricPro Server.

+
Parameters
+ + + +
statebool true = close
+ false = open
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPushNotification()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+inherited
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.js new file mode 100644 index 0000000..54a4b5c --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.js @@ -0,0 +1,6 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door = +[ + [ "onDoorState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html#a6b536531ab89b39f1a48cb107e22185e", null ], + [ "sendDoorStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html#a375cda2b0bc05e1a66e3bc29d059d9a7", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html#a04266791a4b23e9614b8773edb5f67b6", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door__inherit__graph.map new file mode 100644 index 0000000..d2ca3c0 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door__inherit__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door__inherit__graph.md5 new file mode 100644 index 0000000..467a092 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door__inherit__graph.md5 @@ -0,0 +1 @@ +756c262870e6311443e2684a0e2c429b \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ec60255604e43f13f577b0c3fe46cc7713f857e2 GIT binary patch literal 7684 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 literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light-members.html new file mode 100644 index 0000000..f7932d2 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light-members.html @@ -0,0 +1,119 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SinricProLight Member List
+
+
+ +

This is the complete list of members for SinricProLight, including all inherited members.

+ + + + + + + + + + + + + +
onAdjustBrightness(AdjustBrightnessCallback cb)BrightnessController< SinricProLight >
onBrightness(BrightnessCallback cb)BrightnessController< SinricProLight >
onColor(ColorCallback cb)ColorController< SinricProLight >
onColorTemperature(ColorTemperatureCallback cb)ColorTemperatureController< SinricProLight >
onDecreaseColorTemperature(DecreaseColorTemperatureCallback cb)ColorTemperatureController< SinricProLight >
onIncreaseColorTemperature(IncreaseColorTemperatureCallback cb)ColorTemperatureController< SinricProLight >
onPowerState(PowerStateCallback cb)PowerStateController< SinricProLight >
sendBrightnessEvent(int brightness, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)BrightnessController< SinricProLight >
sendColorEvent(byte r, byte g, byte b, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)ColorController< SinricProLight >
sendColorTemperatureEvent(int colorTemperature, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)ColorTemperatureController< SinricProLight >
sendPowerStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)PowerStateController< SinricProLight >
sendPushNotification(String notification)PushNotification< SinricProLight >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html new file mode 100644 index 0000000..891d311 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html @@ -0,0 +1,718 @@ + + + + + + + +SinricPro Library: SinricProLight + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Device to control a light. + More...

+ +

#include <SinricProLight.h>

+
+Inheritance diagram for SinricProLight:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
void onPowerState (PowerStateCallback cb)
 Set callback function for powerState request.
 
bool sendPowerStateEvent (bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setPowerState event to SinricPro Server indicating actual power state.
 
void onBrightness (BrightnessCallback cb)
 Set callback function for setBrightness request.
 
void onAdjustBrightness (AdjustBrightnessCallback cb)
 Set callback function for adjustBrightness request.
 
bool sendBrightnessEvent (int brightness, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setBrightness event to SinricPro Server indicating actual brightness.
 
void onColor (ColorCallback cb)
 Set callback function for setColor request.
 
bool sendColorEvent (byte r, byte g, byte b, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setColor event to SinricPro Server indicating actual color.
 
void onColorTemperature (ColorTemperatureCallback cb)
 Set callback function for setColorTemperature request.
 
void onIncreaseColorTemperature (IncreaseColorTemperatureCallback cb)
 Set callback function for increaseColorTemperature request.
 
void onDecreaseColorTemperature (DecreaseColorTemperatureCallback cb)
 Set callback function for decreaseColorTemperature request.
 
bool sendColorTemperatureEvent (int colorTemperature, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setColorTemperature event to SinricPro Server indicating actual color temperature.
 
+

Detailed Description

+

Device to control a light.

+

Supporting

    +
  • On / Off
  • +
  • Brightness (0..100)
  • +
  • Color (RGB)
  • +
  • Color temperature
  • +
+

Member Function Documentation

+ +

◆ onAdjustBrightness()

+ +
+
+ + + + + +
+ + + + + + + + +
void onAdjustBrightness (AdjustBrightnessCallback cb)
+
+inherited
+
+ +

Set callback function for adjustBrightness request.

+
Parameters
+ + +
cbFunction pointer to a AdjustBrightnessCallback function
+
+
+
Returns
void
+
See also
AdjustBrightnessCallback
+ +
+
+ +

◆ onBrightness()

+ +
+
+ + + + + +
+ + + + + + + + +
void onBrightness (BrightnessCallback cb)
+
+inherited
+
+ +

Set callback function for setBrightness request.

+
Parameters
+ + +
cbFunction pointer to a BrightnessCallback function
+
+
+
Returns
void
+
See also
BrightnessCallback
+ +
+
+ +

◆ onColor()

+ +
+
+ + + + + +
+ + + + + + + + +
void onColor (ColorCallback cb)
+
+inherited
+
+ +

Set callback function for setColor request.

+
Parameters
+ + +
cbFunction pointer to a ColorCallback function
+
+
+
Returns
void
+
See also
ColorCallback
+ +
+
+ +

◆ onColorTemperature()

+ +
+
+ + + + + +
+ + + + + + + + +
void onColorTemperature (ColorTemperatureCallback cb)
+
+inherited
+
+ +

Set callback function for setColorTemperature request.

+
Parameters
+ + +
cbFunction pointer to a ColorTemperatureCallback function
+
+
+
Returns
void
+
See also
ColorTemperatureCallback
+ +
+
+ +

◆ onDecreaseColorTemperature()

+ +
+
+ + + + + +
+ + + + + + + + +
void onDecreaseColorTemperature (DecreaseColorTemperatureCallback cb)
+
+inherited
+
+ +

Set callback function for decreaseColorTemperature request.

+
Parameters
+ + +
cbFunction pointer to a DecreaseColorTemperatureCallback function
+
+
+
Returns
void
+
See also
DecreaseColorTemperatureCallback
+ +
+
+ +

◆ onIncreaseColorTemperature()

+ +
+
+ + + + + +
+ + + + + + + + +
void onIncreaseColorTemperature (IncreaseColorTemperatureCallback cb)
+
+inherited
+
+ +

Set callback function for increaseColorTemperature request.

+
Parameters
+ + +
cbFunction pointer to a IncreaseColorTemperatureCallback function
+
+
+
Returns
void
+
See also
IncreaseColorTemperatureCallback
+ +
+
+ +

◆ onPowerState()

+ +
+
+ + + + + +
+ + + + + + + + +
void onPowerState (PowerStateCallback cb)
+
+inherited
+
+ +

Set callback function for powerState request.

+
Parameters
+ + +
cbFunction pointer to a PowerStateCallback function
+
+
+
Returns
void
+
See also
PowerStateCallback
+ +
+
+ +

◆ sendBrightnessEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendBrightnessEvent (int brightness,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setBrightness event to SinricPro Server indicating actual brightness.

+
Parameters
+ + + +
brightnessInteger value with actual brightness the device is set to
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendColorEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool sendColorEvent (byte r,
byte g,
byte b,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setColor event to SinricPro Server indicating actual color.

+
Parameters
+ + + + + +
rByte value for red
gByte value for green
bByte value for blue
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendColorTemperatureEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendColorTemperatureEvent (int colorTemperature,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setColorTemperature event to SinricPro Server indicating actual color temperature.

+
Parameters
+ + + +
colorTemperatureInteger with new color temperature the device is set to
+ 2200 = warm white
+ 2700 = soft white
+ 4000 = white
+ 5500 = daylight white
+ 7000 = cool white
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPowerStateEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendPowerStateEvent (bool state,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setPowerState event to SinricPro Server indicating actual power state.

+
Parameters
+ + + +
statetrue = device turned on
+ false = device turned off
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPushNotification()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+inherited
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.js new file mode 100644 index 0000000..873841e --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.js @@ -0,0 +1,15 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light = +[ + [ "onAdjustBrightness", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a0633e5fa2981189f4a093bab00a8c7f1", null ], + [ "onBrightness", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#abbaab3067b1fcdcc5928451b818a4420", null ], + [ "onColor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a059ff103149869b7c49cdb8911875b7b", null ], + [ "onColorTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a8535c44fd2517ed09ebe6a203cc25b67", null ], + [ "onDecreaseColorTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a7468976e7fffeee14cc869b7236cbb50", null ], + [ "onIncreaseColorTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a7ea9fd9861a5668a41d06267bfbec82a", null ], + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "sendBrightnessEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a2a96c414210f61de3ce53a4ca8c963b3", null ], + [ "sendColorEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a3599a6d00eb0f9127a7c1188885c5bc0", null ], + [ "sendColorTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a0f90d7f5a5b365116f97beca7630ccc9", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a04266791a4b23e9614b8773edb5f67b6", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light__inherit__graph.map new file mode 100644 index 0000000..7833f72 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light__inherit__graph.map @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light__inherit__graph.md5 new file mode 100644 index 0000000..c490d0c --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light__inherit__graph.md5 @@ -0,0 +1 @@ +2334aaa5bb7588bd780bb654f1f1dfd9 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..aa329cb4ef15bb767450bb1e7df5bd4a00b456cc GIT binary patch literal 21209 zcmaI8by$>P(>{!p3W$Pq3JOSr)Y5{Kgh)u|BA_%Z%>p9QEz%`j(y)}2w7}B2bgguE zefPriyuai93jW}L-Mz1xnQP8-&LQaiJK0A#6gX&TXpi2?NvWctp|_%;-Ge;92L6I5 z#w-ASV1pH8rO<9r-#;62qtVcwp}m!oPEM?e?ijX(5)x8v#8C>vFWCLcEkmx`h8USmbv5HuRwrAi!qX)hSiHTcLKUJ&M@j?Ov1LbB^ zx!F*Ea8hV51%3}4VgK(NDytF$1Eo4P{nD0o3uQzMZgN>yJmR8Ux&yYqQ;byew)G= zbzYUw@UuoyEY@9rpU;mddu@s>r$KQXS(p3FlQc;oi{^9UH`HUD+Ias_&2=BB=F(y& zI7e;$F1>g(q|rETUe6zTL6k4c;x8@r;?|zV&99Twqv6Uj8bf*Oy6A%PRi8h597F-mMBh|9VbY3$7yO2GdnOhrt zJ>oWe2B+g#jt>-(eGWW;Fi251+)uPlyGybGJf+Z(>v#}>+ZVkxRl1{=WspZkLJ-xp z%rc=G(jXabx{*5|ZP8vCxA9wYhav4+dRZ`$k?#L}kNzPvLd^tQU9n~0=YKI)+C z(AF)mqR;*r1w8LzAA9xmADA^F1F)WnGLufjrfu6QTIaA+?o=bPC9a>$<44#__>|`) zQzqHH%!K@?y(PqPX<86yI#U|q&U#R$wK>*Za-nP0IjIXB`}guDXxQJ>TR_m5mkjTR zShifvVap1z6W>)XbZkG_tV+)7QT3<`)*Kv;cnY2txJ;z=P`uBQLmjHri`;O!oltVk zi`l7kx|Q7;U&_snn(~JnO?BPLGyuKCy072ByffZs-Q73R9z*YOrD1e&wx6A zP8yBYK=umw>%|i*>040eLlD(0#D8H4UcwW6io1b#f_Z`mn@qYlHGVEOoLe#S6pFrN z6zV0wK_${n6Ar4A)47`jr>MZi;U11<2k9jexMhThS#{Y(DE z>7N3u<4?T#(nD&uzT{?Uxbf&>tFuWrw4#H;wSC>~*wz0aM==eq>f-KW25E#vKn7P1 ztSf&9{r4kS8#H@Mnw1kb%R)P$1m1f@NIf30HTb)E6O1BQIv#;^`JJ1Z4%fCk&W=*B zoAOEb$3!0X30S{pk5aiE*3@NH#@qZ2MqE7v)PXdc{%hLM5F02IH$r>s(S$*>?6WnH z9}yTxlj+agLg&hrH(|i5q<638XH#A(J>tgZ4tGQz1YCYo;FD)t$v}k^Df;pHc1jnq z9wu)1eOSj5+aSM{D*o;EWPu&6_9tWK-HmSI2g@?rZGwfOM{ccxUR6cN=J3jjLUWO= z<4mSiB6(Z@(UAdXsCs)FXVkOc#^M+?Lkpx!CTuzl12m{lrfQAc1ICjYBL7rnIg?<` z)sP=lUng_fmdEpU>u!<6mZg1OYnfC?xP}YAGyX+w%|?p#!?5dDK|n0~@Q-4T#--73 zufboGZAu?5m<2Ok6bt}b?K0;)XcI-89(2lxSNWn|)7<+Fywz&2Rj zZ9~p4i;4@%dFt1{^Mh!QtPWd&rN-P{86(M!8Xj5QuB5wCA{~$G13b+}60%<1d1s=d zQ^*yaSWIp6)x(->lZgn_aH+uvrHtHMD6$plc~0kl^FJSb;*rzvl!%LaGvc+hWvpR_r%b#8CPoB`Z>f)e-;Z~dww*< z75qo?oF(p=xCl{VAqmdH+YORQo-NC(hQ2;%5+NQwSv zqZ_7np>X11kt!M7?r2RiWRRn{7M@Mh|Ks^6urI#`E`G`6OY79_FnOESH4aE}>La2J z%{|y=1Z&Gz5t_yP(ItJ(H_@HAo1RUMKt#KS!J9Vg3b>;~ww?`hl&6q7H=R|IW;JyqSv3vwx5kDmgFmjVuA7~U z>9+_73Q>J5=vY3PEN0GXki1|yzGe#PdnRqS{?a|t^6Ru=qt4$*XkD4I%oe^a_R~I- z)7;c3aOlN=yWBG#fPEzz@}ps0{w?oh9U?jksYpu>JTTmzo-XTFCPPJgp|~GFkcguA zt~Wx=BbqVYu3JSCTs!io%Z?jMneKUP!c<`0E(@~q%QCVkevKez_xFc7AcA!B2)J9a zb!aG*W?NRI4T$%9(K>N3bM}#wylovHnjb$X&w~)rpKV?09cXNr8d%mc^p6*>N`mmB zhaVQWN$BlY209SOb@yu*Ba3v>#^uW#8n5iFLZj^{Jd>4DTD@KaZuHwCgX~@E0PX7X zwO$Ctegk7#qkOF#T`(zJ(OV|wkbXP-?1&0EzNd7&>tUolk`NrFMtqgXmk8j^27dP!kGB{_l2ZWZ%9mN?9lAg`rW-%fI*-ZW{FZn9>x~5z4I(? zgMKBeaulGL4Q+I)(6alV0);fS9QyViy)qOC#XI8|Va;jy35kr(*DJa=&hZRxX8~M-{U&0o(K=8OEd3? zSX9!RYaE-awux#7tUg4kaS4}(2k!b}xR+mHQCnh`+GM!-uc&)q@x_srIG=^nusr=>Dw_?M zF&pPU6L1^SbhszXnl`D9v6^GAj+f*ME~zCS<}l{G#fkd4c~b9XL^?opGtIiX&wmh?!wuMHqP@(`d^J^uyB`x{@n@$yW{H+Yi%hy)TqK3w*d^moA@o5H;^L zdm|s26O_L6d}-s;+x~!i7V}r1tKPU~+Yx!Li2B=WXooDx1U&JP4tzsBN z0>V4REcM)x;7wP}3jWsM;zsAuL+YNY9^n+SNv^zW@N8iTYUuG~JhhJ5KU$Vk&G46M zgdg`fNUr{@@spV)=b2VcyUQ6&JCMsI`X!%k?~WCB+$1<0Gn}!-6cn-jsCnf3{U=cw z3{B59{<@s}nR=yKF#PxIxKk_nta)LN5!-&8*6dM!5Ezu!z{R7)Aa~-bbzx+-!KsOm zKqy%ARE2@3dXGKnGE#L@!r50jgi|1Ad?oZP56Lv6=J)a-L2_5`%k(BS*h&o-lF@&c zSUyEcr^xm*UpU$5;_t#!Mtb}qAz6Sk;p9N6V! z|2(RkWT$Suew(aNFMF9v%u zD&L~xM?4yg$s7IC|74|7WP@{2IbnfD9hPHu{A|qI$Td?xm~K%$<*4r-GnA}GfMls& zq5AY1aD&BLTvQNab5EcB!Nv1!2ED@7sftIt5oVi|lq=$harZaC_;$Am28)!|MWMpl zQPtG*Aj~anNMe$p__~NH=r%LK!hulu2G6haOqf-J*)YV0Z__YYoJ`bI)@35E<{+Md zvc;Y=72O&lg%66~VX!-gwZ?4YIX=GV%{!30X0frXlAD=~JL= ziiDIrliXf>KYF#*7MA`G&93W1)hi0azp_ga_KN6ZsoaaU4Y2l9AZfwWv~S-%Jv|j{ zKFov29Z}NKdcRu7qgVB)ELBoH>VuUPhc$MYOiwQVLVFkTpSK4Sv&v+^0oeWh?Ru;^ zODNV)??%xH?nQ;(+I&cxz~jmZqmhIcWWa?%K+vsLWWB<;KxS1&H&2+%S|@O(n*o1* zhg=9Ac8BIe@lUnsTc+A68wA%yz9-!#piz;B@Txu6Wa(zFVelbf4i0w!gfQa+?xqS4 z3C7M2#a=3~0nWF3EG0QM2fo3Awx{&)de@ZuoeT;B(0I_@-Mw;3fqrFM;Fnfe20$gO z3^k5X<|rd$za5l!aGM>mSLOmf%BgOzTNo55_qk?c37ic&USBeZ0WCHth=}q3J^dHm zmNwH@p}Ykv%XQ|dvm{j(zy7$`J-1^saWrq!kxHS^AVw0h75dEiBXGH&em`og$qzDY zOFE^na~?@p_TxpFAia-M_~}Csr4OlaTc2Fb@F!+IKl1(;^UBx}3nJ(u!3SDup$f$| zW#UrNVibTKi}^Z{?T~*eI|6JC`5)-DMzN=jpVT)wj?vh&InP~lGmkh$%o-^C5HiVL zqdFdaZ7Bjz(qu1{&4fSiAG}4~-3s0z)|OwEsAxJ}TO0!&d*9X^RJpT#yO;BB#cIA= z3!~6(+~_0L9sY3Juq?X>Jm4o3!Muk9URo37E@t*D|LeG-cY(_tOVPVQwd#wS&K>0Z zipN$u*Z!31{$=7O)?SUUrXB*U9K)<5O#$lm3biNb$W{{Xb{y?KMyi-_>^}G1`_XCw zb2$kTrfx)31*N&*yLmK_v^PMkMQqsa86c*6-8CbA%gIcclgi zsWueUr*!}jFU#@V3^5U!R!Wvh8z>0nI|8n^dh?&7v2F7&=im9Zq;&2dgc}>8Eb(ue z5W1NdzYOVa`Kp2Dy$~{QqN_0Q&S>-y1pGGw!?Pu>_QX!);teq9y zzRDC@ws}m~29q)2C4UqT7g83zgVDss87~{j%*9ISqUNV#4z_0VATcAev=shd-ni^6 zk}1W#6jzFV0&oVwTm#?}yvhmmWVdEk6YlM8z=VJ!>&b*`yfPCLlgVxANlH4C9I;=I zl0lIcS&N6q?p8>ID{Y6SkM9@TvzMg!jh)W2DMduQ`t(9~SPFdf>x8sD33UH7l)T=D zQ|#;oM(rw{W=hr?VNgC*gGI3@rBjxBI*?)m?pX$qEyEZ^&i1Wj0ZjA4+j@i3y_|La zP_L0mNz+vl^MsZ{3YjxKUq|bj4EOo0Grx|o6W&EC@CD~GsC+^l-9)!5CdfY@fVnz0~Rfjc|p(d>qA;H~# z6!1(~Bt1_3!`_*8UsfWSwR9xvBLs%|;Nz>#lo0`YrDoO#>6T30BA zVg8stIf|d@>zfXH5;1v*vNOSnheBLCnzu)#$xzuK+F3&`y zfBx+;S80~XgeE1luw`PFZ_zNAx+~kW!kTRzD#1riOAWbpar|-M69LSIWDQFh;NUFQ zNAmY3E6g`;u)BL&AB$5teGA3bwT1wY6LR1MrCK`J>jY(6w$-2OTIr5Veyss0FM!QM z-qU2CnJ?5}FRjmnt6TD#qxRThs!kea{bOAtUcv)^g78yTlf};2#COP!-Bgf&v#ZAmv1zfxH>egy@(xBQ z?l=MQUTEp4M(0wmV@<1(8nU#+pnURisE`i-6+7%vCT&e6(kzX}DOKk#Ag#jzChVV4 zQkBW?&QR}96v$LKoo$4WrUu;nONVQ6zbtij>|JE6;~M~PbmrP+3D0$&I(L?q>`eW; z5A1)6kH$qbc^cMrwq@5G74Tq{a^hC=6sIvyfapHTwlK_62iS1VlE(9O0jZQXQc{0S zM)f?C;I93DG6)R-gTPxWdvXJ*Q(Wndp7#FH z-}-{*!ZLihWW^74gaD*c`yIr&aOf1idtG)k+u)uqO5_B43pmI>ntcdihjq&HWFfS1 z*_8aL7)Q=-&Bpzh-c-^0ANqmc)}v%;7Pjj*%yByvr49F&{7C%H^x|0GX#M%5?6;4b z&03tnQupde_mf2Yj%QXX?byLjdKeTHADTP+srIV4k%>8sFqg2?+AH=kQeaTlsZH~g zRxvca>5ADVfhcX9EWuWKK91q8!XN&rJLfUQMouT8nMl=14cLUT^VZ_0c?*}~b*jBb z)Jc~yD#*l?~Oi%X~l2E~oL;3a*1qWaB|? zoSxt-(OBi;pW5q_b<)SZuM0haU_JjEPB=Zvy}1)2M7nwPQE0xW4O9*BrKNC6waAH> zCd%iImez`-cP+P5xE7PUh(>0UAS811KMHehdL4Y`l=F`6*DP*SMHHQUCT@R6-R0!D zf0F;aEJ4P?w=%B3HoGRyO7K-ml5%nBPEqV5;AYsa8H_N-G2}7PM+VMujWyrb?62s| z?5(mSo%>{y(*xFfkW6D5Ymo!i%JL^tCCZ`1f{)3hcb2EbSrQnES(DNq1$-?%?@|9f zo+wHBi-FWF!Rs--eoIm!yRL4G`tC|}_DC)3np-}m?@rlFbNM#ijSc#FQb%pBNmtw> z*yKs(-%6XPtu=~$Bj-waMxTtk&GGZj&a(n?0e}{*68js#7`#%xVOz1|{OE$6%&_$e zWL*_24kViogKX0WOEUXPkTowMFPc))EN2T=t72vLp<6nf-+D|P>YA5J6mgihzvn*3 zq#lGLFXcHv2Mwf?g*#Fn4yApug1>1$Rpno1m~`EU6^J}M#pJ3td73L7lb-lNojX}1 zswvVBZRIb~hntvZh{ZV7Bh4UhPR3djFH!HEaeJ)Cd$OTnFF=gzdb^hypmnx<7Iw9G zH+4)TlastuBr{?5*Smh ztyNVT25Vn!o_Rx4-t?7beQ*+E`V|XLnqkDn2aR8QOOPDFj0)l!sa{udmzg z1c!A{l2a_}=LpZSdP&k+Q{mX{X)9@?#smlb=(P>-)MEz`#KDs>2vJswRfK{WfY9sA z+q@I)#$2DfIN@L9-q+bGcQ|UY@DZKjUNq!6J=A_K#-);_fJV%xM4xAMA%T6?IN?cL zWoYW|CsGoP3^@8De1`Ex%l71qkLsW0zrBsxFzoI7jUBU+WT~v*vT;64sXrpf_wrva)ugE-}1{K6s@c$I9EuHFbqV=Q@lB^Kz2W$Qpd?l@9IxQy~go~tkK z*Ts1HXo-A~B;*$BzJcGYOGjb6yt|AL{-la@lQvFa^Gs!Sr>1(BGW1jNWX_nn5*-!$ z=dCL*8FAUezj7q@xL8OOb(t5)0+fi_!7`##ZE2X$S;)8fr(vrP@4i?lesVRsefd@W zq_DYb^E+hl*H>vR8b+3M)KD5a9Do-f#wZ;beW>(s59$M{p<$Q0g@L*$z+b0%^h0dk*8W!_g8(_ zQpzA=6jIwu0(tRp7X4Cqx2tWT!EbLCxMWnnIS#L=MvzX~q+gL9P{eFaL0`RfqD(e# zO5yf%iH8J{djbq+>kxaRcm8=uJBSpN4w=wZ7?mx`s{@1Fc*`OexzaY&`uiM}>gf5^ z5D9Q47q7C;itgh-I&$^Km$l#0^~BjG$S zNda23nv{-+O-He|LeK+qG45@k@+QZiwx?m>-pH!#9de~f-=fmoV0P&;9(i(n?Ea5W zn;yuDGVA&G8cPwy48Uk1>O4t3H7W4O6n_%dz$}&C#>IT$p)4=zj}ZrsowzCJQN?|d zQ$0VJXUayF5*)HvM$hq>;V6#DhlB(z&2EWDIKtF*4cpr--t(7^k&7@Ck%F6f8voBC z9YvJLv!qEE<*OBcg{6IFc>`m%Y=7q?XCvHu{7OG<+qKSxZkTx`!<6}J!sE&*Q*PuI zC_sSMPP3CyoVk~Skh>9$>bSWgnZ~TXN(xoM`=Lk|qN5h_7kuo}Z+@;{{%k{9UeJlP zi?>-4!9IFv&O9B=e=+$3RMB@zt58~I+2w)ad&sOygu1UEYnjT}3LXm<%b);J*2iG# zu+Re6o+^VZ9b%pj(()Sx(Odmj?8nO3wDwECuZ~UB#?8F7$*h?|Iqz|L2+6pRZH?aM zr>d%Fq5BqX<-C8Uz4he_n?{SDwd|QueJ4Yb0>GwZf?pFh@y@rbtz-2&ra3*JuY zIVQ%f0m5^6bcS{R<{Rhnu};PSf9I0k^h8&=ze?Q~TR*bu^_WUBuhWHq+N)!P!la*E z9u4qY-t)kb-+B<}F!5JoQi$=EK2>GIvy&fnTpV-y%;nZC(JZPCv!oFp32s8k$AbojU_d zxK4YA*k_wiz|mp3;6phWL=zD)W8XJSfW%*r_ubf)*|hfc zbWBlG`?(PR8Fj4DRy@SxB+%PPI^;^3&YDli@GaR)m;R6nWN{LDV~5|QC%)O4dT@`B$~sp4kb)a>+->g$O~X9-A!N!&A<}JQSU!1E%nV=u zcHj#)zL|cFYuL_K(!}LibS&3d`j`S*=UMdlm+nUo`Iy?oPxn%QsxOw@j7cp8u8GIL z?HP=s@86wkL3@d7YA9Of;2?FC{Np>rK)O27a^f}51}{#SpB3A~$dK57Zhc@2D|T7kc@ zx%>qrimMRMUp^sU;&!TO&3`Z&I}MImpa_Cj0Mx{*`DH#a-jTvtH%RVVb8%o1DHCdW zUuUy3`tjlP=5S}HTQqsa7j68VcESFR&j9?^2f28JT60gN%GvFNq@;}w^M(}aZa!|% z{cVbTNg7{PZqgNjXh?#5?Zwy@9;5+2VTmU;T;E=@mSVZI(xsPwD_oK5M)9?;T{;;J z-+g7Bi5D%q?3v#EtaN$lhD`gUj4qydiuL+JC#~F@rzEVE4cuFfSrIsB-65t-X#(8T z-p%|*Nx}$<&e}}dbW#1rdbW}v`eU_}H(qh%SA7@U6(-S~fJr#)Jf%QNQk)|1r>-~} zeaNrSc;z_~5g3RzFg!ern4Z3zRC^~Vjlu9ejw#jktJB8V!nSO&RvFl%_`t(M^mxAP zvZ9rt*@sLRTj$r$HPjmS(p3y-1GLF1z;FWmPPF@IOU)%*Fx{^nq8%`Q(dnt`0UFk< z68SNnMcY8(xqJA31f72N*>pPrXY?3tCz(4&VC3LmDT+b4cTCc{sh`iG8u_z*Hwz$V z-4gd~$v7!LRWTTwtxYVK@XiUlCv%yRUsCUu2en3ktU?44A{{Vno%H8@)zYci}$_=G!Y^` zh^IBKZ|4F$FW7qD#GO?UAQ0$3giDecfjPEXo6oyDQ>)+i$D6`M=35^I0^D5)U6V)o z>u_>J8uWX;FPp0HW@)RuD^u+y4Zi4$)3y6D2~|+%&55XE`#ZXzdWd~Q*dt`8-u!Wi zGKlAe-*e@0_){HY_j< zyIIq>47PzNke|G}(=VjrRB>+aJgF?S4H9jt8r#Kj@8(%7$M^=(A*1i4o>Ue8TkG~e zI;>=rtSTyyT^F{A6~PYZHrzU+oBDHSo{eX3i1WSCx>}9SAGkiad-w~IPF!}J zgIW$v|I%-R2Jy9bIxDI5*gJ|I=f`bX-n1vS!N~p1e%Z*z_mXa2cKW3MRh-WxyOW3! zrUN=Z@siRW7cuMgA3p#0a{8~>uWziayqc2&7x4`LE0hxuVk+r;PBEyGs8#a;0=f zaH>kY3i}NR-rO^RWDNKsz_HveB$BzcB{}MXN_vq3k^he92r*@%zG;;Fs z1$V3^y|j=?o1qBt?7Xno<%x6Wdft+HSZS^ektAvczhD1H*yt444i=8%H1x6@5&Ubq zCu5sRvh;{dmg0AdF(aJP-eAk<_xUL|?4~KtL?b4z+VPg-=QJ{#3m5WL50Ij_#~7di zjFf$5@j_sGVfP!)@ce^-gjFh^J&R}l6`c#?WQacPtx{35>7Em~+tZ-3n?Ru^%-aIi z(E9ea*`0I-2L?TJ07xJbr_c=OE~9t1*3%Lm^Fl0347hP}8cIJ`;jJ4C5w2qinSje=~TI zBf9$vWBRP3#g=*-i(i?f!FLCI-;72h93>4h=3`(02noQ0<%=!b9z&4yE+qGsu$Rbe zvzoy*CecmbF=fem9p^5DJCaVCy}a4oQ#_uQ&V(jW!G^nR?;|H|-!zor0nV!uZj;*i zSdgS6wS(qNy7a(s-@;wkX39??S|g;a#R6(@C}V=L zP@2mG&$^zptXrMuy@y`bAIn5Kl z#z-(f7VrDp9xjG>jLHYV|FM1sdT9yGKd>|Qi<<(s(tm1A@o@NrFm@e z{9lbgKb4;!B-4`<>3%83*x5=bZ9duKGs1r&(65bo6GKjUuDiAR-LH@iwRdi8NHjyI zniQFEnl6aMe8Tf&wJ~g?r`2UTRP+Lvxo>pa3{#x-$^vpHKB)^lV zD*93j#{Wko_ML@K^4htg8)QZ|z4ohFcYwI#_|jF8^Wy75YNN2<(+g6e2VX{;`zJ3R z+SDvGS8S$`;=RUGY`3#Xc{BSC!{y%n4)E`)rapJvvuBav#@@6Ydk>eMG6ZT@RVICt z3rk@8^OdM2+D~`?L}DsUgtKY_|J4>f!p-<3N!dfF3%R~F;n8@sl&3wKzOQ`j{F zQ~5#y-(+sh2ucq9)864!QcUkpIjOTh3t39`aI-Xq6nNO2izOTVUuFJM-k2|bC6tmj7_417?uv%fmKBn z!Li7!!<=p{B8{x&@~Ew3M^S9HaqI+0qo3R1KWZ4J7yxut!Ax2~Jlng)EhGq4MUNoy zeTh)=)cLm3S7SJUzw^DQ&0{rlm#Ph^)?p{wu>M#>@ey%EKOFvKGWq*E$E5bgJzM@Y5u5Q8M12^_&wPS}XP>XR*fETPz1pWHSc-wMS$J2P@-b$0S zPL-6G%RKwrU}y?c36Xad`+nwN(AJ2OwRD{QVqZwj<54PDuKvdgP?aGwEL*b$Dz!2k zzKyVzDVkz+-NKkRe5OUFPt(Ru+~!4$dM3zjN>RMO3__IhYPV)j1p?OxWQ`9p`*hTz z+POY8{Z*U`7`0(2JiJkd3M&1MCjlq>9~dNiqJ7E`nEJT3lDI_qvC)Q%d|y9LQ_({L z`HU%Ie)Udng_Hz!q1P#X&!u0k=hGe-50cE4Tux+E+1#`GO0;-ZscWewW+5>i*)$pU zp?Slnzpo}t0cVn#K6;OAj_Xuu^I0)YAux@yc019(Fhf)JMxzgE={pT=uGF1Nl_tsI z5HvX101?#k>@Sg{`8P)-wrFfo+Ru6e%m$7$EH4Q}mvdUV=71zy+Kz8>oNbaHM`(|e zw;v7X>g-pT?!N=J>`|0hIDFqefOGMZZMIogBjw`_sTr;QbFU0xCXdkA#z}q>GelLE z#R>VCSIlU=;mY!val`Jr>*n{t)f!jsX6F>{ZtP91XLKFfp!z0Y}7Skjw_QiH~MctA5C8WQU7?YYS47nqU*EGrsS`T zRXS1*K*qD?m#mLwF`>re9E~tQ4hJ#N`U0r2SDMZ3ICOxrWL!psjw*0qd;v8uS$OP0!CBLjaLKt^K|!cmHXZO6fm<(d^jpaK~q> z6eLI(0Q9M|f`4E4y1t=rX#z6;aRok#%W*M4tN+%Hr9&L0DN&fzEXq3rYh8SZRTe`~ zu0Xti?0RPVv(i(&S2IgxrS`%xuzC``Yc2fu(jJk~`yirs971{G5(I&fbWO>^SCdpsl-k zEnZ_I7&BW1zCU!JPb0ctL6=mQhgCNY^(iMQYF&vQk2&P zuF*OV;9M~>-)FPKu=53EhVO^mjOa&;<7=;KVUddC&iiGG!vjNAw1)<&2)3*SE8X{I zQ-nOVSIeR^5T%wLrnu!?NSkt?@Kv*fS+b}dAuAW_MzpnE`kUYBQMi96ZQ1j>!8K#f zR*`?rLtIg^rx=zr$zPGmMzUhA_Nz7L|xxEQf~G(F#-yV%QQCyC9-lOPn4L8dd4YZ(391XF0X&xxQGlwE zsXT9O-=NrQovuaCB_@l11+UdivGNXQ>G$m%^n)GqWSPCYQgFY>_QsC`Iw@k)oYbT1p&Cefs{l4qSK?w?0n4@sP`^}V|IqzGTsZW~ zFM-L;tBh#1*I3*P`Lg<+Avbb}l)+VP#EPy@ySQdtySV;wM9_d@AA5{|nf#)jC%ij03ie3b8< zFcJ3Z1FY2(r($)WP~ko=5~^HcQFQ@~j9dBT9iXC+ROE0}qti1;d2?Mn@zMny88u(X zDR1Y} z#Qq(Be8sI&CspTGhB#EW6017^i~rsiPA!}f9yts&K+T!U3X(281qt`Mj=#o&y6e41 z!Jp6rCnGoS!YeL7_#$_UhriU%?Iz7#G6D?+Sb(~rNX1+(7qIfjG(F-G;SN46A$HeA z3)#>LTUeNM3OlXR67(qjvr!w&r?N#WH^{xbgZ+*VxqQukp#}(QQgYq`q=MY&8r7a3h!i7W3CbfDhO60E z#gqa6@C)U0u1`gRb-WCjxpQeKev z-OJ$?BXEj!zoTSW43L4e51}-*T+Zno~p9j@Hnr^hI;!aAUHs#P|g`+*_cc@`zG>W~pzg=^b{E!B z>iMAHCMg=NHJ8~@)r2Qt4Vn}vp=y*}jV|(mVao{zIs{~Q?!|^)oFtNMQqklOqHWPO zgJ6ktoP|%fQY@+9F+kIom{d#g?_)+Ims|~`|8)}e zDBrTJ^U~Ai&&^k6P(J5ptQTeotsk|ScE==hfO<;U$MA6_SCfWIS02gTEHWxfj+py~ zYf~|A0!0M|R-d%GLOM%tCKf>R96VxnyG77yfL|ey2_O0QQWJf6$sVpwMM4kaJoUY{}?S71NT1?(Yr%^{nP_J!iZ`m!7^AT zG_EbIexvaT&2bY}Y|=r|H9z8s6U`*+jItfd4Yi#BRaxSmiErkY94lmERA9^f9-<=p zl#0Pz^qYs%H_JBg5TOW>J63l&+q`Yg$R2htpx&JG+r8<}e+272i+0rfU5VGomk8&N zw%H1*Q+QYaT|4UZewjq~hqo4yc}HhHp}~-`KSr}Ra)!--h?8lI$qxb;fR=3KKK3wWhpXkBq=(SD;=Uy6CL%5w{AbtK4hIzUE z(GIHsa(WFwA6q2$tJ9OrK{O#f4LJ`Y3cN8YwXR;NRfY#qplb%J1OnQ&* zXyI=^Arsk3jone9Vhof zjKm2)9}2X?ZuG=)Ht_-d+4QQ0b^I4Sfe>HeB>dViTtJR{mVXKcMalJYRh-a5dbw3( zqi~!%sa+!FUX0yi@js|^+R#w;w1OuK#zIBTE}&D79Q5n1)p)**+KMIMY&A_Kh`J!Q zKi_FhGY=?#klvh@d2cM%6 zGB*Wt`ZEEW$+rGLwdL?6lk5LMWwVq1&Bs!!4Q^IF(uLFW<0b4fiW~g9T88Ks99)qEG`ckKYosyQA0q^&CJ`K}|sd(2w1sNMbAzJm39?{p{k|mU3#Gj@A7H z=RWgLCNwlcXVm`%xa~IY%WZger6gupdoFKXt&#Hq6R6K`{DuN;ep5-8?hcNE`YI`( zIqV|!&SnuG?a7wC)MVRy;d^~2UVq|aRW}c`wonoFA+o;NduyuQ99VlhYVH63U2Gfr z6Mm{?2ga@HRx0tfbo&2?=CAs<$=#fiST8I__BJCcO{er85SGPAU6R!H} zKRNM;Dgo7~?rhAZh6mmAL5bi+`9|}}4WDZJ^p;DhuTM4CpRQWSC~^K|b(Hij!$o7U zrjw|{BF*0B94?Vx)cth0@#$crHkSMPLGlx)94>}_`!FGe0{I>yv()9YcH=5-{55C0 zm$LRGADWE2&41LWx^(BYDaPcPOpqqn)7TvYx&~jMb-~rb`J>i_sZ8#7Qq>w0z0SF( zOX@VM>PFs#p~k$@DMjl4lUDzq-ZWXegP9omVNrEmf@HRF^x~hmzxVYYkZ3fmee`(5 zk~IS^UltNqE7J=W9BZF`laDBrqJHC*+``w)fKfC?>qPTVQ;DQ?^0c-dXm|6M=oF!3x(ZaP_z}R z8KiGX-evY9L0n-x?v$;AM|bD<6Guh;_fh9skr&Lzv%%U=zP~FAQG5lf2k49w^cfHj z_whWcKaQa%TlGG#p^lWp8bJSrwPGjFZ3WpUidoe1kAC1zR=hBcb#Cf~u2giruoS*& zVGXKyu!J{HmdyS0p>LKXsI~p~%=kwTQ%A{``gX7DTGb^xcQ||kR$NlEp_VK2`ygE~ z1o~)e^t(9XNZ`r_L4Zh2jVlu*=q>`(cQ0q#PV6a)f}%@O%$226-pXg%ge;W)0CQ-n zdzxD|>8XhZPs;z>;=EYFBh(And&fu`u*yR^ar&{t+6XY}7c0RJ-}P{3YvcS`GPbxFK=Q-o0Tk9X}&(i3;( zsRp0}x_O*Pn1#Zzjc;>s0({Q0>{ZS_^1#wvitah`?D$@()#R(`s~^Oy8o!P#U5Uef z(`w;eQb!;7LOe>?S37tM?6%}o`PwhC6%TY7`HDAS?pnG*8fOhrrpuh9K((waD zKqJeF2UmRII&PFSL*YcjT$DJg!~Q`X(W$-<YV>X8F4YU~(chEaMLs)(o7%!8j8HwC=d~~+93T>Hxj%xe{{KakLBR8Ii zEhY~l);u8`>0vN&l@q(`VHXI(|kro|`ov|lXkoYkns3j^gI ze%m|Gl&s|k9taiC5Yii%v(N zzIl0byv-p~Tpqr3x|6Wx95UqKGy3{THU<5Hq!Npr#LsNL84?_o;r;SJ<7(Z=M6!lw zdoluyj1(nuzMpcdFcFxf+zT07Hfxe^(J)}DPcs;&C=ArWG5lZT>xB_4b*mKEws6Vq0vFmEqskx1RgQ_263!$L}Gj2cXksJTN`ndLZCi^yiFNHVjTyl7t z4pttuba1Fi$RW$2h#Y!MBjmL4Fp>yKAvvFBSPU`eS&PMb(n}7TY?vH#oU>vmYkBYW z$NSg&d4GTY4)=Y1uj~7}uIux;ult%hvB0_Ic>UVOT)t8L`Oow4lxxcV>*(7^wL^*4I8A)hv15xPpghhh=5mev z+>qtd5a7lYeT+JGX_fSAK_!>P4Ya(8yi@c9QLG4S>}p5~GFN%={wd~s2%1wK%!?S) zUTN3@R96vS5*Bl-6ST~!$qxSh4&OdLSf_&^s`p=p;zk-pcoc{l0=#;?Sh#2F__E@N zOWvmt{qF&e4m6hr;niV{m-nZSLx6Yk3)o#-N0+nvTrwyX?(hbiJT88~So-}}V>z&0 zPg>0kiji-_JgLg+mNX{MeXHkznGIky=Gm4XKke!Qg z!*XjI-HVox+;w^-K4s=sw0`1ncBKRW2wJ26y!~ck%R=IeCcoBIs6a<75pGxz+LZx7595f~o)U2LDJkO&-oAFSiap;;)5RQE1)fX8-$YzFqTzoUh3r&hgE zW;M9@c-kTz)VrrM>kI&>q*lu-+L(7Di*2Kc>HDIR;P1iN>9`#?1Bd%+eFOuSf7Bx6 z@?I+;xoRCALbwcVqu6UuS7?7sa@Ufc6abvly68dURdkIf8#`EJfC$+SWTw7(2y4lX z$rY&{-YpL6cBh{>fAMt#1-ZLOqpTi7&E;?-34(F9Pqv#km7JlB2*5iU?Kal+`@P5W zVZUZ;_q55ODe_!4LR50=rU8dFRlC|`KE%Z5Xs0<9${C7vo0#>@LovxCVNlApAV(d? znM;m_=U{09TF%_y`5!hh`oB4sm6`eaWHv{J9e{S1OIJ=Yp)^K~rh^*J}5J?;3sC3K2U8LBSxl6d#T#G!Z(p1uRg_uMS=FNm<16(ZRXA5GRVMXR9E{eb#7Aq%*R&x>avUC(B^W*!F$KVune1v z7gSMq2g&PsQ>j$s1Hrvv*E{dTcjqWLUj){)@Es+04~#ZF zT{#Vrc-HF)Hsg}B6I%y>o)R+&kdzfO5Rixyb2K~xZ=n?fj(B#R)08Fj2HY*stDq~h zjjdpbGg}sjl4lO8`viDi#DNLW503W7< zRe8Sr2CYGc$A2r`pUN;W?>$nS=kJPW-=HE-yFOw?lvTOOy}H0WU-{A49*wKKbJs1x z9hao@Lgo|bj7j-BVVCatbvg&CrA+_YTyme-%y|p`YZYO0NspHkQ}nhu_8c~`ss%ocZ_BT!q5($D z17{@;aCc%bSA4bK;KN{UKi9&BFxnk8aU>BZSF7zlX3C3+ZkU>d(aYLZ-=iy*Xik0Y zE0)b3Qm2^svM{f|3fQBx^3Wp9MTI$X`{A)mQcOZhZ(47))Uu(Rq^h!oiU29|hr02g zkG^oVK1Qvr&o5xJ;BfhmpYMev)JbSCLdhhA&2A}_AKQ?ZF6cduww2>bJsJ@| z8>MODaB3#-&j)hYlgsdp{GQY)7S<>P8}_z0Q5N9~FFCP@oFs{AIQ9neFH959^=z*# zl#QOTl~)p}Qf(%d4h)o2CIT2!8me5Yo`7pbm@IPYFR-?ET+yuotDs@nV5!!6AHzEw zl>1M7f7<({i>XJX>3I75Y!9b>$^FE97-}v?`_?-0OO<~>!e|fTrS=Eoauy}J_C;I< zX(Yn0*?c7v5{!aFLqxv+t{ae@QK%iaN+;nGX18nLDP}>adb6U7D1#-R?keSy<2Unm zTK2J}(Zc89lWGIAe1tX}BlO$uzXDv~_Vi=w=`ClR|eFQP_jhc;^X zYe#(i6!C-WqYMFwn7;9%bDaJryim6AmF|~sK={{dJoBS0>LW}`ytaF#si)uS3g>2O zT}{PF)bw?vyG=$q6v>9#?$f0J`6`ZbFCxRzCin3rQ%`Mvg=dZT1f@4F7;C_1UQ*Lh z(;eqxNYo~a<6H@>bwYEg(84EXwejhiaDRx$g{l>EwFBk8S9_CzcE2 z4wdlWI)`T>s8|yCJKyY^2++F-Y!LDK$W9LJ0LY+!**jPA z33rFrGVOioGYMGhltl|fN&t-rOVy_S;?AThm!#ct(I7n}`tu(K;1aa4VDZ+5qE!@A z@g2z&4mDNUTDkU=M;Ih6SgxBoTpz5i=Ruz4G~u3WR_<1uI_S&c>9o%6x4upEOMy|# zdQ;q6<7bV6o;DV4t2eQrbaSvM+`cDgUm-Wo_W#&ZtZhzzWt$u6X=19t#7Vd5ohvz= zGQDbWXn*+l|6$7I()`>5L5e-8f>d&`cjclN^N>H=6_TaGJy5FpWmPiLW*%IxpgpT%Bm8|}Hk3-kG6m~iEc?Oz4m+n{?vM}GLG zWuzSuzQ^wY@x($GENEC|{7F`)ntD+CaDFDI*QmK=A;l7|{1CVApI#b>$|Qg@V4>*UgyqaP8ssjGhjx0Z|5^Fr>rM@ANji%)wau-;gC15_tDcoGw{^0DI?wIkw5fL~BZLMmPlY rs^PJjIXOM^^WMX*;GzF9J`QX`EQ?muW2y-0;$@VPg<-{&JCXkZMtm + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SinricProLock Member List
+
+
+ +

This is the complete list of members for SinricProLock, including all inherited members.

+ + + + +
onLockState(LockStateCallback cb)LockController< SinricProLock >
sendLockStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)LockController< SinricProLock >
sendPushNotification(String notification)PushNotification< SinricProLock >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html new file mode 100644 index 0000000..3cfb770 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html @@ -0,0 +1,283 @@ + + + + + + + +SinricPro Library: SinricProLock + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Device to control a smart lock. + More...

+ +

#include <SinricProLock.h>

+
+Inheritance diagram for SinricProLock:
+
+
Inheritance graph
+ + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
void onLockState (LockStateCallback cb)
 Set callback function for setLockState request.
 
bool sendLockStateEvent (bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send lockState event to SinricPro Server indicating actual lock state.
 
+

Detailed Description

+

Device to control a smart lock.

+

Supporting

    +
  • on / off
  • +
  • lock / unlock
  • +
+

Member Function Documentation

+ +

◆ onLockState()

+ +
+
+ + + + + +
+ + + + + + + + +
void onLockState (LockStateCallback cb)
+
+inherited
+
+ +

Set callback function for setLockState request.

+
Parameters
+ + +
cbFunction pointer to a LockStateCallback function
+
+
+
Returns
void
+
See also
LockStateCallback
+ +
+
+ +

◆ sendLockStateEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendLockStateEvent (bool state,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send lockState event to SinricPro Server indicating actual lock state.

+
Parameters
+ + + +
statetrue = device is locked
+ false = device is unlocked
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPushNotification()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+inherited
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.js new file mode 100644 index 0000000..2bc900a --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.js @@ -0,0 +1,6 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock = +[ + [ "onLockState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html#aee42cc397234a454fd353ca6bc12a859", null ], + [ "sendLockStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html#a8fb3fec204da21e69d05f89a9ecb4739", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html#a04266791a4b23e9614b8773edb5f67b6", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock__inherit__graph.map new file mode 100644 index 0000000..a18b677 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock__inherit__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock__inherit__graph.md5 new file mode 100644 index 0000000..5318ecc --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock__inherit__graph.md5 @@ -0,0 +1 @@ +60d3b19b1d61b91152588c9f2d7744f4 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0a6adcf9d05f71d00c33db8a1c13e9acd49874f7 GIT binary patch literal 7669 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 IfBWHo0T|X53jhEB literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor-members.html new file mode 100644 index 0000000..8f1301f --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor-members.html @@ -0,0 +1,109 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SinricProMotionsensor Member List
+
+
+ +

This is the complete list of members for SinricProMotionsensor, including all inherited members.

+ + + +
sendMotionEvent(bool detected, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)MotionSensor< SinricProMotionsensor >
sendPushNotification(String notification)PushNotification< SinricProMotionsensor >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.html new file mode 100644 index 0000000..073b461 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.html @@ -0,0 +1,240 @@ + + + + + + + +SinricPro Library: SinricProMotionsensor + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SinricProMotionsensor
+
+
+ +

Device to report motion detection events. + More...

+ +

#include <SinricProMotionsensor.h>

+
+Inheritance diagram for SinricProMotionsensor:
+
+
Inheritance graph
+ + + + + + + + + + + + + +
[legend]
+ + + + + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
bool sendMotionEvent (bool detected, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Sending motion detection state to SinricPro server.
 
+

Detailed Description

+

Device to report motion detection events.

+

Member Function Documentation

+ +

◆ sendMotionEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendMotionEvent (bool detected,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Sending motion detection state to SinricPro server.

+
Parameters
+ + + +
detectedbool true if motion has been detected
+ 'false' if no motion has been detected
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPushNotification()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+inherited
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.js new file mode 100644 index 0000000..fca4a11 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.js @@ -0,0 +1,5 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor = +[ + [ "sendMotionEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.html#a9be024aa2bb70f0146a02dd1b79d3faa", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.html#a04266791a4b23e9614b8773edb5f67b6", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor__inherit__graph.map new file mode 100644 index 0000000..58dcdb1 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor__inherit__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor__inherit__graph.md5 new file mode 100644 index 0000000..ca921c0 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor__inherit__graph.md5 @@ -0,0 +1 @@ +e99657b83de54768a6215faa5d533cd6 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..cf90154ab40b2e751f5648c192265e4df024c374 GIT binary patch literal 7954 zcmZu$2{e@L+kd3eOH$dQP%;!D`%*G(G}i24kgSs}duS|guY@ew%@|n**@hTm7)oVd zXE0fYvX3!j8Or+2c>n+No%5aVnRDiO&Uxjkn zsW$3WQ%X`VIg%D?ImR=estIT(3f#{0mmJhM|^!@{WUx z93%w+z~&Q~8h?`IlRMa+705^}DatcD80(Ig#ymX_4r^ITX#UryweUw{Vzt}=foX3cxJJvR#h`Us zhH<;|*a7Xz>CQ;o*|2;pOL!x5MctBgE#c82uNwtQW^b;#0&A}s%k3X>UN(>Id`ihmcDYuOs0m=XO$L}4|1Z{zg#j10Jjt`Z zA>tcdgbix{`R!?%TX}}REwJ{I8Ht%Y{;N}UnfXl^vF>MkCz zFca_aO{-_Ejhr|3su5Qo?-cQXwIQ@PG<1i6;pke_bD0uXq1GD8Y14{FsL0t{x z%%E~qQK)dY@wXuc<;aS9MJK}kpzqOs@46s{f36i@*d%H(wP9o23(0fAdcZmUl{Dp7$X@8K7%$6gCQU~_AXhXhVzVN}0o&ayD25U(% zQdY}zjN)<(Q=x-1!WjP%ya16e79+;@lrB{#VMDw5pXziuS~-HGtHAtq)N>H84mzC6 zG_kb*GOv~eWyR5axx*qF{-0HK-k?o{ALEt|04nJDj z&?b2B+}#~~#fAcE9^;h6*VA|lLpgs1zi52v8Sl-9xu%0Afi@l$1=UIbL5q>jfRD$5 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 O0J(2)4|C`7-~R*mIF<$g literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor-members.html new file mode 100644 index 0000000..beb6774 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor-members.html @@ -0,0 +1,109 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SinricProPowerSensor Member List
+
+
+ +

This is the complete list of members for SinricProPowerSensor, including all inherited members.

+ + + +
sendPowerSensorEvent(float voltage, float current, float power=-1.0f, float apparentPower=-1.0f, float reactivePower=-1.0f, float factor=-1.0f, String cause=FSTR_SINRICPRO_PERIODIC_POLL)PowerSensor< SinricProPowerSensor >
sendPushNotification(String notification)PushNotification< SinricProPowerSensor >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.html new file mode 100644 index 0000000..30b02bf --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.html @@ -0,0 +1,275 @@ + + + + + + + +SinricPro Library: SinricProPowerSensor + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SinricProPowerSensor
+
+
+ +

Device to report power usage. + More...

+ +

#include <SinricProPowerSensor.h>

+
+Inheritance diagram for SinricProPowerSensor:
+
+
Inheritance graph
+ + + + + + + + + + + + + +
[legend]
+ + + + + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
bool sendPowerSensorEvent (float voltage, float current, float power=-1.0f, float apparentPower=-1.0f, float reactivePower=-1.0f, float factor=-1.0f, String cause=FSTR_SINRICPRO_PERIODIC_POLL)
 Send PowerSensor event to SinricPro Server.
 
+

Detailed Description

+

Device to report power usage.

+

Member Function Documentation

+ +

◆ sendPowerSensorEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool sendPowerSensorEvent (float voltage,
float current,
float power = -1.0f,
float apparentPower = -1.0f,
float reactivePower = -1.0f,
float factor = -1.0f,
String cause = FSTR_SINRICPRO_PERIODIC_POLL 
)
+
+inherited
+
+ +

Send PowerSensor event to SinricPro Server.

+
Parameters
+ + + + + + + + +
voltagefloat voltage
currentfloat current
powerfloat (optional) if not provided, it is calculated automaticly (power = voltage * current)
apparentPowerfloat (optional) if not provided it is set to -1
reactivePowerfloat (optional) if not provided it is set to -1
factorfloat (optional) if not provided it is set to -1
+ if apparentPower is provided, factor is calculated automaticly (factor = power / apparentPower)
causeString (optional) Reason why event is sent (default = "PERIODIC_POLL")
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPushNotification()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+inherited
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.js new file mode 100644 index 0000000..c90c227 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.js @@ -0,0 +1,5 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor = +[ + [ "sendPowerSensorEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.html#aec04692842ae1953973503f6be6d9afc", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.html#a04266791a4b23e9614b8773edb5f67b6", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor__inherit__graph.map new file mode 100644 index 0000000..2ddf627 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor__inherit__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor__inherit__graph.md5 new file mode 100644 index 0000000..b0cbf10 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor__inherit__graph.md5 @@ -0,0 +1 @@ +6f6c47a0385ee774b61f8a54dd079e85 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..88fdade4035c67e08b7ff365a9052287a483dd56 GIT binary patch literal 7483 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 Wv9?Zul(j&?JlGs^t@_Ge|NIvfF7Ooq literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker-members.html new file mode 100644 index 0000000..3b130e4 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker-members.html @@ -0,0 +1,127 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SinricProSpeaker Member List
+
+
+ +

This is the complete list of members for SinricProSpeaker, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
onAdjustBands(AdjustBandsCallback cb)EqualizerController< SinricProSpeaker >
onAdjustVolume(AdjustVolumeCallback cb)VolumeController< SinricProSpeaker >
onMediaControl(MediaControlCallback cb)MediaController< SinricProSpeaker >
onMute(MuteCallback cb)MuteController< SinricProSpeaker >
onPowerState(PowerStateCallback cb)PowerStateController< SinricProSpeaker >
onResetBands(ResetBandsCallback cb)EqualizerController< SinricProSpeaker >
onSelectInput(SelectInputCallback cb)InputController< SinricProSpeaker >
onSetBands(SetBandsCallback cb)EqualizerController< SinricProSpeaker >
onSetMode(ModeCallback cb)ModeController< SinricProSpeaker >
onSetMode(const String &instance, GenericModeCallback cb)ModeController< SinricProSpeaker >
onSetVolume(SetVolumeCallback cb)VolumeController< SinricProSpeaker >
sendBandsEvent(String bands, int level, String cause="PHYSICAL_INTERACTION")EqualizerController< SinricProSpeaker >
sendMediaControlEvent(String mediaControl, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)MediaController< SinricProSpeaker >
sendModeEvent(String mode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)ModeController< SinricProSpeaker >
sendModeEvent(String instance, String mode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)ModeController< SinricProSpeaker >
sendMuteEvent(bool mute, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)MuteController< SinricProSpeaker >
sendPowerStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)PowerStateController< SinricProSpeaker >
sendPushNotification(String notification)PushNotification< SinricProSpeaker >
sendSelectInputEvent(String intput, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)InputController< SinricProSpeaker >
sendVolumeEvent(int volume, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)VolumeController< SinricProSpeaker >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html new file mode 100644 index 0000000..cc765a3 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html @@ -0,0 +1,1133 @@ + + + + + + + +SinricPro Library: SinricProSpeaker + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Device to control a smart speaker. + More...

+ +

#include <SinricProSpeaker.h>

+
+Inheritance diagram for SinricProSpeaker:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
void onPowerState (PowerStateCallback cb)
 Set callback function for powerState request.
 
bool sendPowerStateEvent (bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setPowerState event to SinricPro Server indicating actual power state.
 
void onMute (MuteCallback cb)
 Set callback function for setMute request.
 
bool sendMuteEvent (bool mute, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setMute event to SinricPro Server indicating actual mute state.
 
void onSetVolume (SetVolumeCallback cb)
 Set callback function for setVolume request.
 
void onAdjustVolume (AdjustVolumeCallback cb)
 Set callback function for adjustVolume request.
 
bool sendVolumeEvent (int volume, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setVolume event to SinricPro Server indicating actual volume has changed.
 
void onMediaControl (MediaControlCallback cb)
 Set callback function for mediaControl request.
 
bool sendMediaControlEvent (String mediaControl, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send mediaControl event to SinricPro Server indicating devices media control state.
 
void onSelectInput (SelectInputCallback cb)
 Set callback function for selectInput request.
 
bool sendSelectInputEvent (String intput, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send selectInput event to SinricPro Server to report selected input.
 
void onSetBands (SetBandsCallback cb)
 Set callback function for setBands request.
 
void onAdjustBands (AdjustBandsCallback cb)
 Set callback function for adjustBands request.
 
void onResetBands (ResetBandsCallback cb)
 Set callback function for resetBands request.
 
bool sendBandsEvent (String bands, int level, String cause="PHYSICAL_INTERACTION")
 Send setBands event to SinricPro Server indicating bands level has changed.
 
void onSetMode (ModeCallback cb)
 Set callback function for setMode request.
 
void onSetMode (const String &instance, GenericModeCallback cb)
 Set callback function for setMode request on a specific instance.
 
bool sendModeEvent (String mode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setMode event to SinricPro Server indicating the mode has changed.
 
bool sendModeEvent (String instance, String mode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setMode event to SinricPro Server indicating the mode on a specific instance has changed.
 
+

Detailed Description

+

Device to control a smart speaker.

+

Supporting:

    +
  • setVolume / adjustVolume
  • +
  • set / adjust / reset bands (BASS, MIDRANGE, TREBBLE)
  • +
  • mute / unmute
  • +
  • media controls:
      +
    • FastForward
    • +
    • Next
    • +
    • Pause
    • +
    • Play
    • +
    • Previous
    • +
    • Rewind
    • +
    • StartOver
    • +
    • Stop
    • +
    +
  • +
  • set mode (TV, MOVIE, ...)
  • +
+

Member Function Documentation

+ +

◆ onAdjustBands()

+ +
+
+ + + + + +
+ + + + + + + + +
void onAdjustBands (AdjustBandsCallback cb)
+
+inherited
+
+ +

Set callback function for adjustBands request.

+
Parameters
+ + +
cbFunction pointer to a AdjustBandsCallback function
+
+
+
Returns
void
+
See also
AdjustBandsCallback
+ +
+
+ +

◆ onAdjustVolume()

+ +
+
+ + + + + +
+ + + + + + + + +
void onAdjustVolume (AdjustVolumeCallback cb)
+
+inherited
+
+ +

Set callback function for adjustVolume request.

+
Parameters
+ + +
cbFunction pointer to a AdjustVolumeCallback function
+
+
+
Returns
void
+
See also
AdjustVolumeCallback
+ +
+
+ +

◆ onMediaControl()

+ +
+
+ + + + + +
+ + + + + + + + +
void onMediaControl (MediaControlCallback cb)
+
+inherited
+
+ +

Set callback function for mediaControl request.

+
Parameters
+ + +
cbFunction pointer to a MediaControlCallback function
+
+
+
Returns
void
+
See also
MediaControlCallback
+ +
+
+ +

◆ onMute()

+ +
+
+ + + + + +
+ + + + + + + + +
void onMute (MuteCallback cb)
+
+inherited
+
+ +

Set callback function for setMute request.

+
Parameters
+ + +
cbFunction pointer to a MuteCallback function
+
+
+
Returns
void
+
See also
MuteCallback
+ +
+
+ +

◆ onPowerState()

+ +
+
+ + + + + +
+ + + + + + + + +
void onPowerState (PowerStateCallback cb)
+
+inherited
+
+ +

Set callback function for powerState request.

+
Parameters
+ + +
cbFunction pointer to a PowerStateCallback function
+
+
+
Returns
void
+
See also
PowerStateCallback
+ +
+
+ +

◆ onResetBands()

+ +
+
+ + + + + +
+ + + + + + + + +
void onResetBands (ResetBandsCallback cb)
+
+inherited
+
+ +

Set callback function for resetBands request.

+
Parameters
+ + +
cbFunction pointer to a ResetBandsCallback function
+
+
+
Returns
void
+
See also
ResetBandsCallback
+ +
+
+ +

◆ onSelectInput()

+ +
+
+ + + + + +
+ + + + + + + + +
void onSelectInput (SelectInputCallback cb)
+
+inherited
+
+ +

Set callback function for selectInput request.

+
Parameters
+ + +
cbFunction pointer to a SelectInputCallback function
+
+
+
Returns
void
+
See also
SelectInputCallback
+ +
+
+ +

◆ onSetBands()

+ +
+
+ + + + + +
+ + + + + + + + +
void onSetBands (SetBandsCallback cb)
+
+inherited
+
+ +

Set callback function for setBands request.

+
Parameters
+ + +
cbFunction pointer to a SetBandsCallback function
+
+
+
Returns
void
+
See also
SetBandsCallback
+ +
+
+ +

◆ onSetMode() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void onSetMode (const String & instance,
GenericModeCallback cb 
)
+
+inherited
+
+ +

Set callback function for setMode request on a specific instance.

+
Parameters
+ + + +
instanceString with instance name
cbFunction pointer to a ModeCallback function
+
+
+
Returns
void
+
See also
ModeCallback
+ +
+
+ +

◆ onSetMode() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void onSetMode (ModeCallback cb)
+
+inherited
+
+ +

Set callback function for setMode request.

+
Parameters
+ + +
cbFunction pointer to a ModeCallback function
+
+
+
Returns
void
+
See also
ModeCallback
+ +
+
+ +

◆ onSetVolume()

+ +
+
+ + + + + +
+ + + + + + + + +
void onSetVolume (SetVolumeCallback cb)
+
+inherited
+
+ +

Set callback function for setVolume request.

+
Parameters
+ + +
cbFunction pointer to a SetVolumeCallback function
+
+
+
Returns
void
+
See also
SetVolumeCallback
+ +
+
+ +

◆ sendBandsEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sendBandsEvent (String bands,
int level,
String cause = "PHYSICAL_INTERACTION" 
)
+
+inherited
+
+ +

Send setBands event to SinricPro Server indicating bands level has changed.

+
Parameters
+ + + + +
bandsString which bands has changed
+ BASS, MIDRANGE, TREBBLE
levelInteger with changed bands level
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendMediaControlEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendMediaControlEvent (String mediaControl,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send mediaControl event to SinricPro Server indicating devices media control state.

+
Parameters
+ + + +
mediaControlString with actual media control
+ FastForward, Next, Pause, Play, Previous, Rewind, StartOver, Stop
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendModeEvent() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sendModeEvent (String instance,
String mode,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setMode event to SinricPro Server indicating the mode on a specific instance has changed.

+
Parameters
+ + + + +
instanceString instance name
modeString with actual mode device is set to
+ MOVIE, MUSIC, NIGHT, SPORT, TV
cause(optional) String reason why event is sent (default = FSTR_SINRICPRO_PHYSICAL_INTERACTION)
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendModeEvent() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendModeEvent (String mode,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setMode event to SinricPro Server indicating the mode has changed.

+
Parameters
+ + + +
modeString with actual mode device is set to
+ MOVIE, MUSIC, NIGHT, SPORT, TV
cause(optional) String reason why event is sent (default = FSTR_SINRICPRO_PHYSICAL_INTERACTION)
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendMuteEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendMuteEvent (bool mute,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setMute event to SinricPro Server indicating actual mute state.

+
Parameters
+ + + +
mutetrue = device is muted on
+ false = device is unmuted
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPowerStateEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendPowerStateEvent (bool state,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setPowerState event to SinricPro Server indicating actual power state.

+
Parameters
+ + + +
statetrue = device turned on
+ false = device turned off
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPushNotification()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+inherited
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendSelectInputEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendSelectInputEvent (String input,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send selectInput event to SinricPro Server to report selected input.

+
Parameters
+ + + +
inputString with actual media control
+ AUX 1..AUX 7, BLURAY, CABLE, CD, COAX 1,COAX 2, COMPOSITE 1, DVD, GAME, HD RADIO, HDMI 1.. HDMI 10, HDMI ARC, INPUT 1..INPUT 10, IPOD, LINE 1..LINE 7, MEDIA PLAYER, OPTICAL 1, OPTICAL 2, PHONO, PLAYSTATION, PLAYSTATION 3, PLAYSTATION 4, SATELLITE, SMARTCAST, TUNER, TV, USB DAC, VIDEO 1..VIDEO 3, XBOX
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendVolumeEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendVolumeEvent (int volume,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setVolume event to SinricPro Server indicating actual volume has changed.

+
Parameters
+ + + +
volumeInteger reporting the volume that the device have been set to
cause(optional) Reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.js new file mode 100644 index 0000000..e7e4d66 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.js @@ -0,0 +1,23 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker = +[ + [ "onAdjustBands", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a41a5c1506545c44c2408054a8675c7a8", null ], + [ "onAdjustVolume", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a2c868c87f96e3924c8b309e1bcfb507e", null ], + [ "onMediaControl", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#afc2620621377fff928737b5a8a537020", null ], + [ "onMute", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#ab5fc79cc8903c3ccc1c106abf61d7cfd", null ], + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "onResetBands", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#aa6c3aabc2b442d82ac5456ccaac3f60d", null ], + [ "onSelectInput", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a18f8f71ecf0d7292a63d9486f94e5180", null ], + [ "onSetBands", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a4aaa7a29394560be7537a86b0304d199", null ], + [ "onSetMode", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a6b15ba168b3a673b98da43ac5e4ef76c", null ], + [ "onSetMode", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#ada087c948c3ab923bdb7818daa6b2b79", null ], + [ "onSetVolume", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a5db8c85f222debbece54c794015f9402", null ], + [ "sendBandsEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a4ad5674e36d96a73147388251b794c82", null ], + [ "sendMediaControlEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a7af593cbf79d38f6b90efb5afee45077", null ], + [ "sendModeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a7c84d5c26f2ded88e4941313015f7f4c", null ], + [ "sendModeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a41f8465e89d147c08ab8cbc6839d34da", null ], + [ "sendMuteEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a4717d892b64a14052712152924bd5b29", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a04266791a4b23e9614b8773edb5f67b6", null ], + [ "sendSelectInputEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a973241ac912a18b142d236dda7f80e97", null ], + [ "sendVolumeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#aa2d3dbea5b07e4c5f39d3d20aa2167a4", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker__inherit__graph.map new file mode 100644 index 0000000..2410188 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker__inherit__graph.map @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker__inherit__graph.md5 new file mode 100644 index 0000000..5a3072f --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker__inherit__graph.md5 @@ -0,0 +1 @@ +7620d4cd03d4d8283258192fa4f31f94 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7e52b190f137eb3467eccd32bf145eaa097cb30f GIT binary patch literal 37058 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 P00000NkvXXu0mjfC_Qi0 literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch-members.html new file mode 100644 index 0000000..c9e4528 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch-members.html @@ -0,0 +1,110 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html new file mode 100644 index 0000000..82004de --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html @@ -0,0 +1,279 @@ + + + + + + + +SinricPro Library: SinricProSwitch + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Device suporting basic on / off command. + More...

+ +

#include <SinricProSwitch.h>

+
+Inheritance diagram for SinricProSwitch:
+
+
Inheritance graph
+ + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
void onPowerState (PowerStateCallback cb)
 Set callback function for powerState request.
 
bool sendPowerStateEvent (bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setPowerState event to SinricPro Server indicating actual power state.
 
+

Detailed Description

+

Device suporting basic on / off command.

+

Member Function Documentation

+ +

◆ onPowerState()

+ +
+
+ + + + + +
+ + + + + + + + +
void onPowerState (PowerStateCallback cb)
+
+inherited
+
+ +

Set callback function for powerState request.

+
Parameters
+ + +
cbFunction pointer to a PowerStateCallback function
+
+
+
Returns
void
+
See also
PowerStateCallback
+ +
+
+ +

◆ sendPowerStateEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendPowerStateEvent (bool state,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setPowerState event to SinricPro Server indicating actual power state.

+
Parameters
+ + + +
statetrue = device turned on
+ false = device turned off
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPushNotification()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+inherited
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.js new file mode 100644 index 0000000..a717515 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.js @@ -0,0 +1,6 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch = +[ + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html#a04266791a4b23e9614b8773edb5f67b6", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch__inherit__graph.map new file mode 100644 index 0000000..5dbb985 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch__inherit__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch__inherit__graph.md5 new file mode 100644 index 0000000..2608aa9 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch__inherit__graph.md5 @@ -0,0 +1 @@ +b525385e89d086dac5e0c95ae7d60218 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..206a8e34b58a035046b61bcfe8f85684decd8893 GIT binary patch literal 7123 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 xZAa({J?7gcOP<>H1BRrJ9`HKrKd + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SinricProTV Member List
+
+
+ +

This is the complete list of members for SinricProTV, including all inherited members.

+ + + + + + + + + + + + + + + + + +
onAdjustVolume(AdjustVolumeCallback cb)VolumeController< SinricProTV >
onChangeChannel(ChangeChannelCallback cb)ChannelController< SinricProTV >
onChangeChannelNumber(ChangeChannelNumberCallback cb)ChannelController< SinricProTV >
onMediaControl(MediaControlCallback cb)MediaController< SinricProTV >
onMute(MuteCallback cb)MuteController< SinricProTV >
onPowerState(PowerStateCallback cb)PowerStateController< SinricProTV >
onSelectInput(SelectInputCallback cb)InputController< SinricProTV >
onSetVolume(SetVolumeCallback cb)VolumeController< SinricProTV >
onSkipChannels(SkipChannelsCallback cb)ChannelController< SinricProTV >
sendChangeChannelEvent(String channelName, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)ChannelController< SinricProTV >
sendMediaControlEvent(String mediaControl, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)MediaController< SinricProTV >
sendMuteEvent(bool mute, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)MuteController< SinricProTV >
sendPowerStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)PowerStateController< SinricProTV >
sendPushNotification(String notification)PushNotification< SinricProTV >
sendSelectInputEvent(String intput, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)InputController< SinricProTV >
sendVolumeEvent(int volume, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)VolumeController< SinricProTV >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html new file mode 100644 index 0000000..c5cc0b9 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html @@ -0,0 +1,909 @@ + + + + + + + +SinricPro Library: SinricProTV + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Device to control a TV. + More...

+ +

#include <SinricProTV.h>

+
+Inheritance diagram for SinricProTV:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
void onPowerState (PowerStateCallback cb)
 Set callback function for powerState request.
 
bool sendPowerStateEvent (bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setPowerState event to SinricPro Server indicating actual power state.
 
void onSetVolume (SetVolumeCallback cb)
 Set callback function for setVolume request.
 
void onAdjustVolume (AdjustVolumeCallback cb)
 Set callback function for adjustVolume request.
 
bool sendVolumeEvent (int volume, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setVolume event to SinricPro Server indicating actual volume has changed.
 
void onMute (MuteCallback cb)
 Set callback function for setMute request.
 
bool sendMuteEvent (bool mute, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setMute event to SinricPro Server indicating actual mute state.
 
void onMediaControl (MediaControlCallback cb)
 Set callback function for mediaControl request.
 
bool sendMediaControlEvent (String mediaControl, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send mediaControl event to SinricPro Server indicating devices media control state.
 
void onSelectInput (SelectInputCallback cb)
 Set callback function for selectInput request.
 
bool sendSelectInputEvent (String intput, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send selectInput event to SinricPro Server to report selected input.
 
void onChangeChannel (ChangeChannelCallback cb)
 Set callback function for changeChannel request.
 
void onChangeChannelNumber (ChangeChannelNumberCallback cb)
 Set callback function for changeChannel request.
 
void onSkipChannels (SkipChannelsCallback cb)
 Set callback function for skipChannels request.
 
bool sendChangeChannelEvent (String channelName, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send changeChannel event to SinricPro Server to report selected channel.
 
+

Detailed Description

+

Device to control a TV.

+

Supporting:

    +
  • setVolume / adjustVolume
  • +
  • mute / unmute
  • +
  • media controls:
      +
    • FastForward, Next, Pause, Play, Previous, Rewind, StartOver, Stop
    • +
    +
  • +
  • select input
      +
    • AUX 1..AUX 7, BLURAY, CABLE, CD, COAX 1,COAX 2, COMPOSITE 1, DVD, GAME, HD RADIO, HDMI 1.. HDMI 10, HDMI ARC, INPUT 1..INPUT 10, IPOD, LINE 1..LINE 7, MEDIA PLAYER, OPTICAL 1, OPTICAL 2, PHONO, PLAYSTATION, PLAYSTATION 3, PLAYSTATION 4, SATELLITE, SMARTCAST, TUNER, TV, USB DAC, VIDEO 1..VIDEO 3, XBOX
    • +
    +
  • +
  • Change channel by number
  • +
  • Change channel by name
  • +
  • Skip channels
  • +
+

Member Function Documentation

+ +

◆ onAdjustVolume()

+ +
+
+ + + + + +
+ + + + + + + + +
void onAdjustVolume (AdjustVolumeCallback cb)
+
+inherited
+
+ +

Set callback function for adjustVolume request.

+
Parameters
+ + +
cbFunction pointer to a AdjustVolumeCallback function
+
+
+
Returns
void
+
See also
AdjustVolumeCallback
+ +
+
+ +

◆ onChangeChannel()

+ +
+
+ + + + + +
+ + + + + + + + +
void onChangeChannel (ChangeChannelCallback cb)
+
+inherited
+
+ +

Set callback function for changeChannel request.

+
Parameters
+ + +
cbFunction pointer to a ChangeChannelCallback function
+
+
+
Returns
void
+
See also
ChangeChannelCallback
+ +
+
+ +

◆ onChangeChannelNumber()

+ +
+
+ + + + + +
+ + + + + + + + +
void onChangeChannelNumber (ChangeChannelNumberCallback cb)
+
+inherited
+
+ +

Set callback function for changeChannel request.

+
Parameters
+ + +
cbFunction pointer to a ChangeChannelNumberCallback function
+
+
+
Returns
void
+
See also
ChangeChannelNumberCallback
+ +
+
+ +

◆ onMediaControl()

+ +
+
+ + + + + +
+ + + + + + + + +
void onMediaControl (MediaControlCallback cb)
+
+inherited
+
+ +

Set callback function for mediaControl request.

+
Parameters
+ + +
cbFunction pointer to a MediaControlCallback function
+
+
+
Returns
void
+
See also
MediaControlCallback
+ +
+
+ +

◆ onMute()

+ +
+
+ + + + + +
+ + + + + + + + +
void onMute (MuteCallback cb)
+
+inherited
+
+ +

Set callback function for setMute request.

+
Parameters
+ + +
cbFunction pointer to a MuteCallback function
+
+
+
Returns
void
+
See also
MuteCallback
+ +
+
+ +

◆ onPowerState()

+ +
+
+ + + + + +
+ + + + + + + + +
void onPowerState (PowerStateCallback cb)
+
+inherited
+
+ +

Set callback function for powerState request.

+
Parameters
+ + +
cbFunction pointer to a PowerStateCallback function
+
+
+
Returns
void
+
See also
PowerStateCallback
+ +
+
+ +

◆ onSelectInput()

+ +
+
+ + + + + +
+ + + + + + + + +
void onSelectInput (SelectInputCallback cb)
+
+inherited
+
+ +

Set callback function for selectInput request.

+
Parameters
+ + +
cbFunction pointer to a SelectInputCallback function
+
+
+
Returns
void
+
See also
SelectInputCallback
+ +
+
+ +

◆ onSetVolume()

+ +
+
+ + + + + +
+ + + + + + + + +
void onSetVolume (SetVolumeCallback cb)
+
+inherited
+
+ +

Set callback function for setVolume request.

+
Parameters
+ + +
cbFunction pointer to a SetVolumeCallback function
+
+
+
Returns
void
+
See also
SetVolumeCallback
+ +
+
+ +

◆ onSkipChannels()

+ +
+
+ + + + + +
+ + + + + + + + +
void onSkipChannels (SkipChannelsCallback cb)
+
+inherited
+
+ +

Set callback function for skipChannels request.

+
Parameters
+ + +
cbFunction pointer to a SkipChannelsCallback function
+
+
+
Returns
void
+
See also
SkipChannelsCallback
+ +
+
+ +

◆ sendChangeChannelEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendChangeChannelEvent (String channelName,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send changeChannel event to SinricPro Server to report selected channel.

+
Parameters
+ + + +
channelNameString with actual channel
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendMediaControlEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendMediaControlEvent (String mediaControl,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send mediaControl event to SinricPro Server indicating devices media control state.

+
Parameters
+ + + +
mediaControlString with actual media control
+ FastForward, Next, Pause, Play, Previous, Rewind, StartOver, Stop
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendMuteEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendMuteEvent (bool mute,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setMute event to SinricPro Server indicating actual mute state.

+
Parameters
+ + + +
mutetrue = device is muted on
+ false = device is unmuted
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPowerStateEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendPowerStateEvent (bool state,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setPowerState event to SinricPro Server indicating actual power state.

+
Parameters
+ + + +
statetrue = device turned on
+ false = device turned off
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPushNotification()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+inherited
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendSelectInputEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendSelectInputEvent (String input,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send selectInput event to SinricPro Server to report selected input.

+
Parameters
+ + + +
inputString with actual media control
+ AUX 1..AUX 7, BLURAY, CABLE, CD, COAX 1,COAX 2, COMPOSITE 1, DVD, GAME, HD RADIO, HDMI 1.. HDMI 10, HDMI ARC, INPUT 1..INPUT 10, IPOD, LINE 1..LINE 7, MEDIA PLAYER, OPTICAL 1, OPTICAL 2, PHONO, PLAYSTATION, PLAYSTATION 3, PLAYSTATION 4, SATELLITE, SMARTCAST, TUNER, TV, USB DAC, VIDEO 1..VIDEO 3, XBOX
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendVolumeEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendVolumeEvent (int volume,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setVolume event to SinricPro Server indicating actual volume has changed.

+
Parameters
+ + + +
volumeInteger reporting the volume that the device have been set to
cause(optional) Reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.js new file mode 100644 index 0000000..d1a6edb --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.js @@ -0,0 +1,19 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v = +[ + [ "onAdjustVolume", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a2c868c87f96e3924c8b309e1bcfb507e", null ], + [ "onChangeChannel", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a92f3b83744b5bb82d32628eef39c1eb9", null ], + [ "onChangeChannelNumber", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#afd8aee20590bfadec181c6ee515125ec", null ], + [ "onMediaControl", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#afc2620621377fff928737b5a8a537020", null ], + [ "onMute", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#ab5fc79cc8903c3ccc1c106abf61d7cfd", null ], + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "onSelectInput", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a18f8f71ecf0d7292a63d9486f94e5180", null ], + [ "onSetVolume", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a5db8c85f222debbece54c794015f9402", null ], + [ "onSkipChannels", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#ab1123d03d471fad4896eb2960ed41855", null ], + [ "sendChangeChannelEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#aff5839c3020c3006af1a2a8c37cc858e", null ], + [ "sendMediaControlEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a7af593cbf79d38f6b90efb5afee45077", null ], + [ "sendMuteEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a4717d892b64a14052712152924bd5b29", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a04266791a4b23e9614b8773edb5f67b6", null ], + [ "sendSelectInputEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a973241ac912a18b142d236dda7f80e97", null ], + [ "sendVolumeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#aa2d3dbea5b07e4c5f39d3d20aa2167a4", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v__inherit__graph.map new file mode 100644 index 0000000..404b0ab --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v__inherit__graph.map @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v__inherit__graph.md5 new file mode 100644 index 0000000..57aa5c1 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v__inherit__graph.md5 @@ -0,0 +1 @@ +3be6aa0984066c3caf7df4ee19a5adfa \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..53b7b843a03f981bcd0097bf09ebbad55e5ec5f6 GIT binary patch literal 28389 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 cxF+tzijQi1^dbiM-8u{ + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SinricProTemperaturesensor Member List
+
+
+ +

This is the complete list of members for SinricProTemperaturesensor, including all inherited members.

+ + + +
sendPushNotification(String notification)PushNotification< SinricProTemperaturesensor >
sendTemperatureEvent(float temperature, float humidity=-1, String cause=FSTR_SINRICPRO_PERIODIC_POLL)TemperatureSensor< SinricProTemperaturesensor >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.html new file mode 100644 index 0000000..fa75b8e --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.html @@ -0,0 +1,246 @@ + + + + + + + +SinricPro Library: SinricProTemperaturesensor + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SinricProTemperaturesensor
+
+
+ +

Device to report actual temperature and humidity. + More...

+ +

#include <SinricProTemperaturesensor.h>

+
+Inheritance diagram for SinricProTemperaturesensor:
+
+
Inheritance graph
+ + + + + + + + + + + + + +
[legend]
+ + + + + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
bool sendTemperatureEvent (float temperature, float humidity=-1, String cause=FSTR_SINRICPRO_PERIODIC_POLL)
 Send currentTemperature event to report actual temperature (measured by a sensor)
 
+

Detailed Description

+

Device to report actual temperature and humidity.

+

Member Function Documentation

+ +

◆ sendPushNotification()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+inherited
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendTemperatureEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sendTemperatureEvent (float temperature,
float humidity = -1,
String cause = FSTR_SINRICPRO_PERIODIC_POLL 
)
+
+inherited
+
+ +

Send currentTemperature event to report actual temperature (measured by a sensor)

+
Parameters
+ + + + +
temperaturefloat actual temperature measured by a sensor
humidityfloat (optional) actual humidity measured by a sensor (default=-1.0f means not supported)
cause(optional) String reason why event is sent (default = "PERIODIC_POLL")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.js new file mode 100644 index 0000000..db8437e --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.js @@ -0,0 +1,5 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor = +[ + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.html#a04266791a4b23e9614b8773edb5f67b6", null ], + [ "sendTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.html#a75956fe7aff6e595a9b57519316ff789", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor__inherit__graph.map new file mode 100644 index 0000000..c8f31bd --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor__inherit__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor__inherit__graph.md5 new file mode 100644 index 0000000..fda578a --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor__inherit__graph.md5 @@ -0,0 +1 @@ +35e8354d38188915c755e262b8c7cf1f \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0b51dc62ab911b2209386def1d11c77b1b950ddb GIT binary patch literal 8244 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 CXUwVq literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat-members.html new file mode 100644 index 0000000..32823a3 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat-members.html @@ -0,0 +1,116 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SinricProThermostat Member List
+
+
+ +

This is the complete list of members for SinricProThermostat, including all inherited members.

+ + + + + + + + + + +
onAdjustTargetTemperature(AdjustTargetTemperatureCallback cb)ThermostatController< SinricProThermostat >
onPowerState(PowerStateCallback cb)PowerStateController< SinricProThermostat >
onTargetTemperature(SetTargetTemperatureCallback cb)ThermostatController< SinricProThermostat >
onThermostatMode(ThermostatModeCallback cb)ThermostatController< SinricProThermostat >
sendPowerStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)PowerStateController< SinricProThermostat >
sendPushNotification(String notification)PushNotification< SinricProThermostat >
sendTargetTemperatureEvent(float temperature, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)ThermostatController< SinricProThermostat >
sendTemperatureEvent(float temperature, float humidity=-1, String cause=FSTR_SINRICPRO_PERIODIC_POLL)TemperatureSensor< SinricProThermostat >
sendThermostatModeEvent(String thermostatMode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)ThermostatController< SinricProThermostat >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html new file mode 100644 index 0000000..313425d --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html @@ -0,0 +1,585 @@ + + + + + + + +SinricPro Library: SinricProThermostat + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Device to control Thermostat. + More...

+ +

#include <SinricProThermostat.h>

+
+Inheritance diagram for SinricProThermostat:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
void onPowerState (PowerStateCallback cb)
 Set callback function for powerState request.
 
bool sendPowerStateEvent (bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setPowerState event to SinricPro Server indicating actual power state.
 
void onThermostatMode (ThermostatModeCallback cb)
 Set callback function for setThermostatMode request.
 
void onTargetTemperature (SetTargetTemperatureCallback cb)
 Set callback function for targetTemperature request.
 
void onAdjustTargetTemperature (AdjustTargetTemperatureCallback cb)
 Set callback function for adjustTargetTemperature request.
 
bool sendThermostatModeEvent (String thermostatMode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send thermostatMode event to report a the new mode the device has been set to.
 
bool sendTargetTemperatureEvent (float temperature, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send targetTemperature event to report target temperature change.
 
bool sendTemperatureEvent (float temperature, float humidity=-1, String cause=FSTR_SINRICPRO_PERIODIC_POLL)
 Send currentTemperature event to report actual temperature (measured by a sensor)
 
+

Detailed Description

+

Device to control Thermostat.

+

Support

    +
  • Set / adjust target temperature
  • +
  • Report target temperature
  • +
  • Report actual temperature
  • +
  • Set thermostat mode AUTO, COOL, HEAT
  • +
+

Member Function Documentation

+ +

◆ onAdjustTargetTemperature()

+ +
+
+ + + + + +
+ + + + + + + + +
void onAdjustTargetTemperature (AdjustTargetTemperatureCallback cb)
+
+inherited
+
+ +

Set callback function for adjustTargetTemperature request.

+
Parameters
+ + +
cbFunction pointer to a AdjustTargetTemperatureCallback function
+
+
+
Returns
void
+
See also
AdjustTargetTemperatureCallback
+ +
+
+ +

◆ onPowerState()

+ +
+
+ + + + + +
+ + + + + + + + +
void onPowerState (PowerStateCallback cb)
+
+inherited
+
+ +

Set callback function for powerState request.

+
Parameters
+ + +
cbFunction pointer to a PowerStateCallback function
+
+
+
Returns
void
+
See also
PowerStateCallback
+ +
+
+ +

◆ onTargetTemperature()

+ +
+
+ + + + + +
+ + + + + + + + +
void onTargetTemperature (SetTargetTemperatureCallback cb)
+
+inherited
+
+ +

Set callback function for targetTemperature request.

+
Parameters
+ + +
cbFunction pointer to a SetTargetTemperatureCallback function
+
+
+
Returns
void
+
See also
SetTargetTemperatureCallback
+ +
+
+ +

◆ onThermostatMode()

+ +
+
+ + + + + +
+ + + + + + + + +
void onThermostatMode (ThermostatModeCallback cb)
+
+inherited
+
+ +

Set callback function for setThermostatMode request.

+
Parameters
+ + +
cbFunction pointer to a ThermostatModeCallback function
+
+
+
Returns
void
+
See also
ThermostatModeCallback
+ +
+
+ +

◆ sendPowerStateEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendPowerStateEvent (bool state,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setPowerState event to SinricPro Server indicating actual power state.

+
Parameters
+ + + +
statetrue = device turned on
+ false = device turned off
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPushNotification()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+inherited
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendTargetTemperatureEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendTargetTemperatureEvent (float temperature,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send targetTemperature event to report target temperature change.

+
Parameters
+ + + +
temperatureFloat with actual target temperature the device is set to
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendTemperatureEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sendTemperatureEvent (float temperature,
float humidity = -1,
String cause = FSTR_SINRICPRO_PERIODIC_POLL 
)
+
+inherited
+
+ +

Send currentTemperature event to report actual temperature (measured by a sensor)

+
Parameters
+ + + + +
temperaturefloat actual temperature measured by a sensor
humidityfloat (optional) actual humidity measured by a sensor (default=-1.0f means not supported)
cause(optional) String reason why event is sent (default = "PERIODIC_POLL")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendThermostatModeEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendThermostatModeEvent (String thermostatMode,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send thermostatMode event to report a the new mode the device has been set to.

+
Parameters
+ + + +
thermostatModeString with actual mode (AUTO, COOL, HEAT) the device is set to
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.js new file mode 100644 index 0000000..6687c1b --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.js @@ -0,0 +1,12 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat = +[ + [ "onAdjustTargetTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#ac51f6fecfdf4c7bc8e0712e2da47bbf4", null ], + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "onTargetTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#a1c73725f1f3fbb1c5b72208aae5c2bf2", null ], + [ "onThermostatMode", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#a2ef31536973b20815dd6c80a28e19c9f", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#a04266791a4b23e9614b8773edb5f67b6", null ], + [ "sendTargetTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#ab8b7fdd977a0a38413f2279b50274890", null ], + [ "sendTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#a75956fe7aff6e595a9b57519316ff789", null ], + [ "sendThermostatModeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#ae7273cd094f64a93494ae99501fc83e8", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat__inherit__graph.map new file mode 100644 index 0000000..b79a6b0 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat__inherit__graph.map @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat__inherit__graph.md5 new file mode 100644 index 0000000..94482fe --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat__inherit__graph.md5 @@ -0,0 +1 @@ +f10c4f1f5ac81f2424d99f0b04056e74 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..952f9044229c5cbc592adfa714bc10b4a42cf755 GIT binary patch literal 16018 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 + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SinricProWindowAC Member List
+
+
+ +

This is the complete list of members for SinricProWindowAC, including all inherited members.

+ + + + + + + + + + + + + + +
onAdjustRangeValue(AdjustRangeValueCallback cb)RangeController< SinricProWindowAC >
onAdjustTargetTemperature(AdjustTargetTemperatureCallback cb)ThermostatController< SinricProWindowAC >
onPowerState(PowerStateCallback cb)PowerStateController< SinricProWindowAC >
onRangeValue(SetRangeValueCallback cb)RangeController< SinricProWindowAC >
onRangeValue(const String &instance, GenericSetRangeValueCallback_int cb)RangeController< SinricProWindowAC >
onTargetTemperature(SetTargetTemperatureCallback cb)ThermostatController< SinricProWindowAC >
onThermostatMode(ThermostatModeCallback cb)ThermostatController< SinricProWindowAC >
sendPowerStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)PowerStateController< SinricProWindowAC >
sendPushNotification(String notification)PushNotification< SinricProWindowAC >
sendRangeValueEvent(int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)RangeController< SinricProWindowAC >
sendRangeValueEvent(const String &instance, int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)RangeController< SinricProWindowAC >
sendTargetTemperatureEvent(float temperature, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)ThermostatController< SinricProWindowAC >
sendThermostatModeEvent(String thermostatMode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)ThermostatController< SinricProWindowAC >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html new file mode 100644 index 0000000..e6595ef --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html @@ -0,0 +1,767 @@ + + + + + + + +SinricPro Library: SinricProWindowAC + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Device to control Window Air Conditioner. + More...

+ +

#include <SinricProWindowAC.h>

+
+Inheritance diagram for SinricProWindowAC:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool sendPushNotification (String notification)
 Sending push notifications to SinricPro App.
 
void onPowerState (PowerStateCallback cb)
 Set callback function for powerState request.
 
bool sendPowerStateEvent (bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setPowerState event to SinricPro Server indicating actual power state.
 
void onRangeValue (SetRangeValueCallback cb)
 Set callback function for setRangeValue request.
 
void onRangeValue (const String &instance, GenericSetRangeValueCallback_int cb)
 Set callback function for setRangeValue request on a specific instance (custom device)
 
void onAdjustRangeValue (AdjustRangeValueCallback cb)
 Set callback function for adjustRangeValue request.
 
bool sendRangeValueEvent (int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send rangeValue event to report curent rangeValue to SinricPro server.
 
bool sendRangeValueEvent (const String &instance, int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send rangeValue event to report curent rangeValue to SinricPro server for a specific instance (custom device)
 
void onThermostatMode (ThermostatModeCallback cb)
 Set callback function for setThermostatMode request.
 
void onTargetTemperature (SetTargetTemperatureCallback cb)
 Set callback function for targetTemperature request.
 
void onAdjustTargetTemperature (AdjustTargetTemperatureCallback cb)
 Set callback function for adjustTargetTemperature request.
 
bool sendThermostatModeEvent (String thermostatMode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send thermostatMode event to report a the new mode the device has been set to.
 
bool sendTargetTemperatureEvent (float temperature, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send targetTemperature event to report target temperature change.
 
+

Detailed Description

+

Device to control Window Air Conditioner.

+

Support

    +
  • Set / adjust target temperature
  • +
  • Set mode AUTO, COOL, HEAT
  • +
  • Set range value
  • +
  • Report target temperature
  • +
  • Report actual temperature
  • +
+

Member Function Documentation

+ +

◆ onAdjustRangeValue()

+ +
+
+ + + + + +
+ + + + + + + + +
void onAdjustRangeValue (AdjustRangeValueCallback cb)
+
+inherited
+
+ +

Set callback function for adjustRangeValue request.

+
Parameters
+ + +
cbFunction pointer to a AdjustRangeValueCallback function
+
+
+
See also
AdjustRangeValueCallback
+ +
+
+ +

◆ onAdjustTargetTemperature()

+ +
+
+ + + + + +
+ + + + + + + + +
void onAdjustTargetTemperature (AdjustTargetTemperatureCallback cb)
+
+inherited
+
+ +

Set callback function for adjustTargetTemperature request.

+
Parameters
+ + +
cbFunction pointer to a AdjustTargetTemperatureCallback function
+
+
+
Returns
void
+
See also
AdjustTargetTemperatureCallback
+ +
+
+ +

◆ onPowerState()

+ +
+
+ + + + + +
+ + + + + + + + +
void onPowerState (PowerStateCallback cb)
+
+inherited
+
+ +

Set callback function for powerState request.

+
Parameters
+ + +
cbFunction pointer to a PowerStateCallback function
+
+
+
Returns
void
+
See also
PowerStateCallback
+ +
+
+ +

◆ onRangeValue() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void onRangeValue (const String & instance,
GenericSetRangeValueCallback_int cb 
)
+
+inherited
+
+ +

Set callback function for setRangeValue request on a specific instance (custom device)

+
Parameters
+ + + +
instanceString instance name (custom device)
cbFunction pointer to a GenericSetRangeValueCallback function
+
+
+
See also
GenericSetRangeValueCallback
+ +
+
+ +

◆ onRangeValue() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void onRangeValue (SetRangeValueCallback cb)
+
+inherited
+
+ +

Set callback function for setRangeValue request.

+
Parameters
+ + +
cbFunction pointer to a SetRangeValueCallback function
+
+
+
See also
SetRangeValueCallback
+ +
+
+ +

◆ onTargetTemperature()

+ +
+
+ + + + + +
+ + + + + + + + +
void onTargetTemperature (SetTargetTemperatureCallback cb)
+
+inherited
+
+ +

Set callback function for targetTemperature request.

+
Parameters
+ + +
cbFunction pointer to a SetTargetTemperatureCallback function
+
+
+
Returns
void
+
See also
SetTargetTemperatureCallback
+ +
+
+ +

◆ onThermostatMode()

+ +
+
+ + + + + +
+ + + + + + + + +
void onThermostatMode (ThermostatModeCallback cb)
+
+inherited
+
+ +

Set callback function for setThermostatMode request.

+
Parameters
+ + +
cbFunction pointer to a ThermostatModeCallback function
+
+
+
Returns
void
+
See also
ThermostatModeCallback
+ +
+
+ +

◆ sendPowerStateEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendPowerStateEvent (bool state,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send setPowerState event to SinricPro Server indicating actual power state.

+
Parameters
+ + + +
statetrue = device turned on
+ false = device turned off
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendPushNotification()

+ +
+
+ + + + + +
+ + + + + + + + +
bool sendPushNotification (String notification)
+
+inherited
+
+ +

Sending push notifications to SinricPro App.

+
Parameters
+ + +
notificationString with the notification
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendRangeValueEvent() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sendRangeValueEvent (const String & instance,
int rangeValue,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send rangeValue event to report curent rangeValue to SinricPro server for a specific instance (custom device)

+
Parameters
+ + + + +
instanceString instance name
rangeValueValue between 0..3
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendRangeValueEvent() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendRangeValueEvent (int rangeValue,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send rangeValue event to report curent rangeValue to SinricPro server.

+
Parameters
+ + + +
rangeValueValue between 0..3
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendTargetTemperatureEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendTargetTemperatureEvent (float temperature,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send targetTemperature event to report target temperature change.

+
Parameters
+ + + +
temperatureFloat with actual target temperature the device is set to
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendThermostatModeEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool sendThermostatModeEvent (String thermostatMode,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+inherited
+
+ +

Send thermostatMode event to report a the new mode the device has been set to.

+
Parameters
+ + + +
thermostatModeString with actual mode (AUTO, COOL, HEAT) the device is set to
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.js new file mode 100644 index 0000000..ef23e94 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.js @@ -0,0 +1,16 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c = +[ + [ "onAdjustRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#ae85696d55112ae7343f9807faee6e064", null ], + [ "onAdjustTargetTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#ac51f6fecfdf4c7bc8e0712e2da47bbf4", null ], + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a6d6d8070b49c8b5272460836a1120b33", null ], + [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a94adbcdf6ce61cb6552a5f9915e705ae", null ], + [ "onTargetTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a1c73725f1f3fbb1c5b72208aae5c2bf2", null ], + [ "onThermostatMode", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a2ef31536973b20815dd6c80a28e19c9f", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a04266791a4b23e9614b8773edb5f67b6", null ], + [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#aaf84aa417e2246843a27e819898e64b5", null ], + [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a1d726751c416fe6dd408e5dd19f6b53b", null ], + [ "sendTargetTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#ab8b7fdd977a0a38413f2279b50274890", null ], + [ "sendThermostatModeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#ae7273cd094f64a93494ae99501fc83e8", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c__inherit__graph.map new file mode 100644 index 0000000..ac2313f --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c__inherit__graph.map @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c__inherit__graph.md5 new file mode 100644 index 0000000..7aee496 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c__inherit__graph.md5 @@ -0,0 +1 @@ +07f39ec36e65c1b27a4af32da08ef182 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..10718bc893db41b98b7a6eba2156e34063e401b8 GIT binary patch literal 16451 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 literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor-members.html new file mode 100644 index 0000000..ab079af --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor-members.html @@ -0,0 +1,108 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TemperatureSensor< T > Member List
+
+
+ +

This is the complete list of members for TemperatureSensor< T >, including all inherited members.

+ + +
sendTemperatureEvent(float temperature, float humidity=-1, String cause=FSTR_SINRICPRO_PERIODIC_POLL)TemperatureSensor< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html new file mode 100644 index 0000000..fb651c7 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html @@ -0,0 +1,194 @@ + + + + + + + +SinricPro Library: TemperatureSensor< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

TemperatureSensor. + More...

+ +

#include <TemperatureSensor.h>

+
+Inheritance diagram for TemperatureSensor< T >:
+
+
Inheritance graph
+ + + + + + + + + + + +
[legend]
+ + + + + +

+Public Member Functions

bool sendTemperatureEvent (float temperature, float humidity=-1, String cause=FSTR_SINRICPRO_PERIODIC_POLL)
 Send currentTemperature event to report actual temperature (measured by a sensor)
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::TemperatureSensor< T >

TemperatureSensor.

+

Member Function Documentation

+ +

◆ sendTemperatureEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sendTemperatureEvent (float temperature,
float humidity = -1,
String cause = FSTR_SINRICPRO_PERIODIC_POLL 
)
+
+ +

Send currentTemperature event to report actual temperature (measured by a sensor)

+
Parameters
+ + + + +
temperaturefloat actual temperature measured by a sensor
humidityfloat (optional) actual humidity measured by a sensor (default=-1.0f means not supported)
cause(optional) String reason why event is sent (default = "PERIODIC_POLL")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.js new file mode 100644 index 0000000..f2e082b --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.js @@ -0,0 +1,4 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor = +[ + [ "sendTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html#a75956fe7aff6e595a9b57519316ff789", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor__inherit__graph.map new file mode 100644 index 0000000..1355efb --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor__inherit__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor__inherit__graph.md5 new file mode 100644 index 0000000..dda6550 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor__inherit__graph.md5 @@ -0,0 +1 @@ +7596a2c9b9a626b357f5844c6c11af4c \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d7f50bfa26d1ada7799f26d5a716a7d326957228 GIT binary patch literal 7588 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 literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller-members.html new file mode 100644 index 0000000..36b60fd --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller-members.html @@ -0,0 +1,112 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ThermostatController< T > Member List
+
+
+ +

This is the complete list of members for ThermostatController< T >, including all inherited members.

+ + + + + + +
onAdjustTargetTemperature(AdjustTargetTemperatureCallback cb)ThermostatController< T >
onTargetTemperature(SetTargetTemperatureCallback cb)ThermostatController< T >
onThermostatMode(ThermostatModeCallback cb)ThermostatController< T >
sendTargetTemperatureEvent(float temperature, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)ThermostatController< T >
sendThermostatModeEvent(String thermostatMode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)ThermostatController< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html new file mode 100644 index 0000000..1c7a46c --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html @@ -0,0 +1,336 @@ + + + + + + + +SinricPro Library: ThermostatController< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ThermostatController< T >
+
+
+ +

ThermostatController. + More...

+ +

#include <ThermostatController.h>

+
+Inheritance diagram for ThermostatController< T >:
+
+
Inheritance graph
+ + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

void onThermostatMode (ThermostatModeCallback cb)
 Set callback function for setThermostatMode request.
 
void onTargetTemperature (SetTargetTemperatureCallback cb)
 Set callback function for targetTemperature request.
 
void onAdjustTargetTemperature (AdjustTargetTemperatureCallback cb)
 Set callback function for adjustTargetTemperature request.
 
bool sendThermostatModeEvent (String thermostatMode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send thermostatMode event to report a the new mode the device has been set to.
 
bool sendTargetTemperatureEvent (float temperature, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send targetTemperature event to report target temperature change.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::ThermostatController< T >

ThermostatController.

+

Member Function Documentation

+ +

◆ onAdjustTargetTemperature()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onAdjustTargetTemperature (AdjustTargetTemperatureCallback cb)
+
+ +

Set callback function for adjustTargetTemperature request.

+
Parameters
+ + +
cbFunction pointer to a AdjustTargetTemperatureCallback function
+
+
+
Returns
void
+
See also
AdjustTargetTemperatureCallback
+ +
+
+ +

◆ onTargetTemperature()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onTargetTemperature (SetTargetTemperatureCallback cb)
+
+ +

Set callback function for targetTemperature request.

+
Parameters
+ + +
cbFunction pointer to a SetTargetTemperatureCallback function
+
+
+
Returns
void
+
See also
SetTargetTemperatureCallback
+ +
+
+ +

◆ onThermostatMode()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onThermostatMode (ThermostatModeCallback cb)
+
+ +

Set callback function for setThermostatMode request.

+
Parameters
+ + +
cbFunction pointer to a ThermostatModeCallback function
+
+
+
Returns
void
+
See also
ThermostatModeCallback
+ +
+
+ +

◆ sendTargetTemperatureEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
bool sendTargetTemperatureEvent (float temperature,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send targetTemperature event to report target temperature change.

+
Parameters
+ + + +
temperatureFloat with actual target temperature the device is set to
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+ +

◆ sendThermostatModeEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
bool sendThermostatModeEvent (String thermostatMode,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send thermostatMode event to report a the new mode the device has been set to.

+
Parameters
+ + + +
thermostatModeString with actual mode (AUTO, COOL, HEAT) the device is set to
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.js new file mode 100644 index 0000000..dca5e1a --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.js @@ -0,0 +1,8 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller = +[ + [ "onAdjustTargetTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#ac51f6fecfdf4c7bc8e0712e2da47bbf4", null ], + [ "onTargetTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#a1c73725f1f3fbb1c5b72208aae5c2bf2", null ], + [ "onThermostatMode", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#a2ef31536973b20815dd6c80a28e19c9f", null ], + [ "sendTargetTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#ab8b7fdd977a0a38413f2279b50274890", null ], + [ "sendThermostatModeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#ae7273cd094f64a93494ae99501fc83e8", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller__inherit__graph.map new file mode 100644 index 0000000..4181b32 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller__inherit__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller__inherit__graph.md5 new file mode 100644 index 0000000..aa1c5c9 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller__inherit__graph.md5 @@ -0,0 +1 @@ +730e4c209c312037938008e99917be1c \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2c057784d8fed9f87659d8d9f0f15479fc778d69 GIT binary patch literal 6738 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 M8v5#`4{Tol7rwh9_y7O^ literal 0 HcmV?d00001 diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller-members.html new file mode 100644 index 0000000..6155dcb --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller-members.html @@ -0,0 +1,109 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ToggleController< T > Member List
+
+
+ +

This is the complete list of members for ToggleController< T >, including all inherited members.

+ + + +
onToggleState(const String &instance, GenericToggleStateCallback cb)ToggleController< T >
sendToggleStateEvent(const String &instance, bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)ToggleController< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.html new file mode 100644 index 0000000..2d239fc --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.html @@ -0,0 +1,223 @@ + + + + + + + +SinricPro Library: ToggleController< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

ToggleController. + More...

+ +

#include <ToggleController.h>

+ + + + + + + + +

+Public Member Functions

void onToggleState (const String &instance, GenericToggleStateCallback cb)
 Set callback function for toggleState request.
 
bool sendToggleStateEvent (const String &instance, bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setToggleState event to SinricPro Server indicating actual toggle state.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::ToggleController< T >

ToggleController.

+

Member Function Documentation

+ +

◆ onToggleState()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
void onToggleState (const String & instance,
GenericToggleStateCallback cb 
)
+
+ +

Set callback function for toggleState request.

+
Parameters
+ + + +
instanceString instance name (custom device)
cbFunction pointer to a ToggleStateCallback function
+
+
+
Returns
void
+
See also
ToggleStateCallback
+ +
+
+ +

◆ sendToggleStateEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool sendToggleStateEvent (const String & instance,
bool state,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send setToggleState event to SinricPro Server indicating actual toggle state.

+
Parameters
+ + + + +
instanceString instance name (custom device)
statetrue = state turned on
+ false = tate turned off
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the even
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.js new file mode 100644 index 0000000..a7f2d1d --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.js @@ -0,0 +1,5 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller = +[ + [ "onToggleState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.html#a7ccd28a4f20922847d0461649af5572d", null ], + [ "sendToggleStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.html#a7fcc5084fea488e5b5e95f5ad7015a0f", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller-members.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller-members.html new file mode 100644 index 0000000..35ae38f --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller-members.html @@ -0,0 +1,110 @@ + + + + + + + +SinricPro Library: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VolumeController< T > Member List
+
+
+ +

This is the complete list of members for VolumeController< T >, including all inherited members.

+ + + + +
onAdjustVolume(AdjustVolumeCallback cb)VolumeController< T >
onSetVolume(SetVolumeCallback cb)VolumeController< T >
sendVolumeEvent(int volume, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)VolumeController< T >
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html new file mode 100644 index 0000000..1eec535 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html @@ -0,0 +1,253 @@ + + + + + + + +SinricPro Library: VolumeController< T > + + + + + + + + + + + + + +
+
+ + + + + + +
+
SinricPro Library +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

VolumeController. + More...

+ +

#include <VolumeController.h>

+
+Inheritance diagram for VolumeController< T >:
+
+
Inheritance graph
+ + + + + + + + + + + +
[legend]
+ + + + + + + + + + + +

+Public Member Functions

void onSetVolume (SetVolumeCallback cb)
 Set callback function for setVolume request.
 
void onAdjustVolume (AdjustVolumeCallback cb)
 Set callback function for adjustVolume request.
 
bool sendVolumeEvent (int volume, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
 Send setVolume event to SinricPro Server indicating actual volume has changed.
 
+

Detailed Description

+
template<typename T>
+class SINRICPRO_3_0_0::VolumeController< T >

VolumeController.

+

Member Function Documentation

+ +

◆ onAdjustVolume()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onAdjustVolume (AdjustVolumeCallback cb)
+
+ +

Set callback function for adjustVolume request.

+
Parameters
+ + +
cbFunction pointer to a AdjustVolumeCallback function
+
+
+
Returns
void
+
See also
AdjustVolumeCallback
+ +
+
+ +

◆ onSetVolume()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void onSetVolume (SetVolumeCallback cb)
+
+ +

Set callback function for setVolume request.

+
Parameters
+ + +
cbFunction pointer to a SetVolumeCallback function
+
+
+
Returns
void
+
See also
SetVolumeCallback
+ +
+
+ +

◆ sendVolumeEvent()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
bool sendVolumeEvent (int volume,
String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION 
)
+
+ +

Send setVolume event to SinricPro Server indicating actual volume has changed.

+
Parameters
+ + + +
volumeInteger reporting the volume that the device have been set to
cause(optional) Reason why event is sent (default = "PHYSICAL_INTERACTION")
+
+
+
Returns
the success of sending the event
+
Return values
+ + + +
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time
+
+
+ +
+
+
+
+ + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.js b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.js new file mode 100644 index 0000000..e6e78d0 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.js @@ -0,0 +1,6 @@ +var class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller = +[ + [ "onAdjustVolume", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html#a2c868c87f96e3924c8b309e1bcfb507e", null ], + [ "onSetVolume", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html#a5db8c85f222debbece54c794015f9402", null ], + [ "sendVolumeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html#aa2d3dbea5b07e4c5f39d3d20aa2167a4", null ] +]; \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller__inherit__graph.map b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller__inherit__graph.map new file mode 100644 index 0000000..f136b03 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller__inherit__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller__inherit__graph.md5 b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller__inherit__graph.md5 new file mode 100644 index 0000000..63516f6 --- /dev/null +++ b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller__inherit__graph.md5 @@ -0,0 +1 @@ +aa1d858617f31d686f947f92d0150372 \ No newline at end of file diff --git a/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller__inherit__graph.png b/docs/class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6c6a517df770674a9ed43d549c56127e827467e0 GIT binary patch literal 5530 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 literal 0 HcmV?d00001 diff --git a/docs/classes.html b/docs/classes.html index 69cb5c6..5f9db65 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -1,9 +1,9 @@ - + - - + + SinricPro Library: Class Index @@ -23,8 +23,8 @@
- - + @@ -33,21 +33,22 @@
+
SinricPro Library
- + +/* @license-end */ +
@@ -61,7 +62,7 @@
@@ -75,67 +76,73 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Class Index
+
Class Index
A | B | C | D | E | I | K | L | M | P | R | S | T | V
-
A
-
AirQualitySensor (SINRICPRO_2_9_17)
+
A
+
AirQualitySensor (SINRICPRO_3_0_0)
-
B
-
BrightnessController (SINRICPRO_2_9_17)
+
B
+
BrightnessController (SINRICPRO_3_0_0)
-
C
-
ChannelController (SINRICPRO_2_9_17)
ColorController (SINRICPRO_2_9_17)
ColorTemperatureController (SINRICPRO_2_9_17)
ContactSensor (SINRICPRO_2_9_17)
+
C
+
ChannelController (SINRICPRO_3_0_0)
ColorController (SINRICPRO_3_0_0)
ColorTemperatureController (SINRICPRO_3_0_0)
ContactSensor (SINRICPRO_3_0_0)
-
D
-
Doorbell (SINRICPRO_2_9_17)
DoorController (SINRICPRO_2_9_17)
+
D
+
Doorbell (SINRICPRO_3_0_0)
DoorController (SINRICPRO_3_0_0)
-
E
-
EqualizerController (SINRICPRO_2_9_17)
+
E
+
EqualizerController (SINRICPRO_3_0_0)
-
I
-
InputController (SINRICPRO_2_9_17)
+
I
+
InputController (SINRICPRO_3_0_0)
-
K
-
KeypadController (SINRICPRO_2_9_17)
+
K
+
KeypadController (SINRICPRO_3_0_0)
-
L
-
LockController (SINRICPRO_2_9_17)
+
L
+
LockController (SINRICPRO_3_0_0)
-
M
-
MediaController (SINRICPRO_2_9_17)
ModeController (SINRICPRO_2_9_17)
MotionSensor (SINRICPRO_2_9_17)
MuteController (SINRICPRO_2_9_17)
+
M
+
MediaController (SINRICPRO_3_0_0)
ModeController (SINRICPRO_3_0_0)
MotionSensor (SINRICPRO_3_0_0)
MuteController (SINRICPRO_3_0_0)
-
P
-
PercentageController (SINRICPRO_2_9_17)
PowerLevelController (SINRICPRO_2_9_17)
PowerSensor (SINRICPRO_2_9_17)
PowerStateController (SINRICPRO_2_9_17)
PushNotification (SINRICPRO_2_9_17)
+
P
+
PercentageController (SINRICPRO_3_0_0)
PowerLevelController (SINRICPRO_3_0_0)
PowerSensor (SINRICPRO_3_0_0)
PowerStateController (SINRICPRO_3_0_0)
PushNotification (SINRICPRO_3_0_0)
-
R
-
RangeController (SINRICPRO_2_9_17)
+
R
+
RangeController (SINRICPRO_3_0_0)
-
S
-
SinricProAirQualitySensor (SINRICPRO_2_9_17)
SinricProBlinds (SINRICPRO_2_9_17)
SinricProCamera (SINRICPRO_2_9_17)
SinricProClass (SINRICPRO_2_9_17)
SinricProContactsensor (SINRICPRO_2_9_17)
SinricProDevice (SINRICPRO_2_9_17)
SinricProDimSwitch (SINRICPRO_2_9_17)
SinricProDoorbell (SINRICPRO_2_9_17)
SinricProFan (SINRICPRO_2_9_17)
SinricProFanUS (SINRICPRO_2_9_17)
SinricProGarageDoor (SINRICPRO_2_9_17)
SinricProLight (SINRICPRO_2_9_17)
SinricProLock (SINRICPRO_2_9_17)
SinricProMotionsensor (SINRICPRO_2_9_17)
SinricProPowerSensor (SINRICPRO_2_9_17)
SinricProSpeaker (SINRICPRO_2_9_17)
SinricProSwitch (SINRICPRO_2_9_17)
SinricProTemperaturesensor (SINRICPRO_2_9_17)
SinricProThermostat (SINRICPRO_2_9_17)
SinricProTV (SINRICPRO_2_9_17)
SinricProWindowAC (SINRICPRO_2_9_17)
+
S
+
SinricProAirQualitySensor (SINRICPRO_3_0_0)
SinricProBlinds (SINRICPRO_3_0_0)
SinricProCamera (SINRICPRO_3_0_0)
SinricProClass (SINRICPRO_3_0_0)
SinricProContactsensor (SINRICPRO_3_0_0)
SinricProDevice (SINRICPRO_3_0_0)
SinricProDimSwitch (SINRICPRO_3_0_0)
SinricProDoorbell (SINRICPRO_3_0_0)
SinricProFan (SINRICPRO_3_0_0)
SinricProFanUS (SINRICPRO_3_0_0)
SinricProGarageDoor (SINRICPRO_3_0_0)
SinricProLight (SINRICPRO_3_0_0)
SinricProLock (SINRICPRO_3_0_0)
SinricProMotionsensor (SINRICPRO_3_0_0)
SinricProPowerSensor (SINRICPRO_3_0_0)
SinricProSpeaker (SINRICPRO_3_0_0)
SinricProSwitch (SINRICPRO_3_0_0)
SinricProTemperaturesensor (SINRICPRO_3_0_0)
SinricProThermostat (SINRICPRO_3_0_0)
SinricProTV (SINRICPRO_3_0_0)
SinricProWindowAC (SINRICPRO_3_0_0)
-
T
-
TemperatureSensor (SINRICPRO_2_9_17)
ThermostatController (SINRICPRO_2_9_17)
ToggleController (SINRICPRO_2_9_17)
+
T
+
TemperatureSensor (SINRICPRO_3_0_0)
ThermostatController (SINRICPRO_3_0_0)
ToggleController (SINRICPRO_3_0_0)
-
V
-
VolumeController (SINRICPRO_2_9_17)
+
V
+
VolumeController (SINRICPRO_3_0_0)
diff --git a/docs/dir_7df6307e8ce44a8864ff8c0ace2ba173.html b/docs/dir_7df6307e8ce44a8864ff8c0ace2ba173.html index 171ae28..34c3be3 100644 --- a/docs/dir_7df6307e8ce44a8864ff8c0ace2ba173.html +++ b/docs/dir_7df6307e8ce44a8864ff8c0ace2ba173.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src Directory Reference +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src Directory Reference @@ -23,8 +23,8 @@
- - + @@ -33,21 +33,22 @@
+
SinricPro Library
- + +/* @license-end */ +
@@ -61,7 +62,7 @@
@@ -75,19 +76,112 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
src Directory Reference
+
src Directory Reference
+
+Directory dependency graph for src:
+
+
C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src
+ + + + + +
- + + +

+

Directories

 Capabilities
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 EventLimiter.h
 
 SinricPro.h
 
 SinricProAirQualitySensor.h
 
 SinricProBlinds.h
 
 SinricProCamera.h
 
 SinricProConfig.h
 
 SinricProContactsensor.h
 
 SinricProDebug.h
 
 SinricProDevice.h
 
 SinricProDeviceInterface.h
 
 SinricProDimSwitch.h
 
 SinricProDoorbell.h
 
 SinricProFan.h
 
 SinricProFanUS.h
 
 SinricProGarageDoor.h
 
 SinricProInterface.h
 
 SinricProLight.h
 
 SinricProLock.h
 
 SinricProMessageid.h
 
 SinricProMotionsensor.h
 
 SinricProNamespace.h
 
 SinricProPowerSensor.h
 
 SinricProQueue.h
 
 SinricProRequest.h
 
 SinricProSignature.h
 
 SinricProSpeaker.h
 
 SinricProStrings.h
 
 SinricProSwitch.h
 
 SinricProTemperaturesensor.h
 
 SinricProThermostat.h
 
 SinricProTV.h
 
 SinricProUDP.h
 
 SinricProVersion.h
 
 SinricProWebsocket.h
 
 SinricProWindowAC.h
 
 Timestamp.h
 
@@ -95,7 +189,7 @@ diff --git a/docs/dir_7df6307e8ce44a8864ff8c0ace2ba173_dep.map b/docs/dir_7df6307e8ce44a8864ff8c0ace2ba173_dep.map new file mode 100644 index 0000000..4120965 --- /dev/null +++ b/docs/dir_7df6307e8ce44a8864ff8c0ace2ba173_dep.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/dir_7df6307e8ce44a8864ff8c0ace2ba173_dep.md5 b/docs/dir_7df6307e8ce44a8864ff8c0ace2ba173_dep.md5 new file mode 100644 index 0000000..a7c1f32 --- /dev/null +++ b/docs/dir_7df6307e8ce44a8864ff8c0ace2ba173_dep.md5 @@ -0,0 +1 @@ +635346706a992e709aefd2bc3d838830 \ No newline at end of file diff --git a/docs/dir_7df6307e8ce44a8864ff8c0ace2ba173_dep.png b/docs/dir_7df6307e8ce44a8864ff8c0ace2ba173_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..c2e4d8165c168521a20aec79c1f7bb9db1546438 GIT binary patch literal 1664 zcmZuxdpOf;9AA>gAw({z9Gqz?r8Bo&#tdx`7P?3)PmC62s}2C|y;Zbg=d`huRj>G3IA(4q_8Idjc20L0IOOgW|@XlTHJ ztG+;*oe(-(7}vOC%}z|}Y~cw- z-L=sgC#bK&lHNN;-6o2bm8H^GvC#sk`R^Sfn7zT#6j(vJcR_PNFb=oybj+T!)kKx$ z!UIDQM#~^zi@vuChaRPwX4UHk`Yi3-`)Ai#?b_|S-jg4oSw2Paj z(b#b!y+_`mSG1BFXMw|9bP~3in0EDIW`@g(HSoER^|n>A-NjEea=O~oG!N`yjVy}{ zd{dW#^L7?KM!Vu;7+EpdzJUhg#u;_3K2o@t7=#g#Bnd%!HFE0X&rT2lr!nR1!}o{- zmPmF_!M)ks!NP4y@=@WXNuzwrR8x@GN~A5F*iS3U#n=aaEIHOPuaCpTFw@$Yvx&{g za%HL5kPs0;gE3x|`BbF}SnTRu1X#(2Ae z_M8tFTVszB7b+Sf7pP@9rsP2U`lG@ce`s1!Bl#lYYZHR zTY%zbXy;d7(Dh5UQQ51r+g+UpcI-P0w+K^Rm&zw>xdwO-HVDDVp=P7fQP7}=;0LoT zBm}nLrX2D3On!>}V@+T8yL#-Axsl=#sJVKx$R7vsJ4nS>`WfLu;T9~__WwY63!qgulp41teDR^;adRfUts>3I z%0#90=UGchw3>NK10jB9i%=#6~MqyE$>x#U~TX=i5Z{w9PZoF^k72ptQ%Ts^7m85F zAxa)4jA-I`^=8&FB!%ZZ;gOY7#S2C9`Nqk7N-j!VRCR4K)7CKck0w<%j*uV__j~h92cvKDe>9*&Q*rZsI~bE zM5#^dWi!%RG7q|cEW$ewlt!<2rtyQ|qm-U-AG*Qg`?3U$Q2(fjd=;VYlD42qErp*e zpuW8}Ox-W3SgCQ6C7Ym1_fy=S67-tZZ`?cy@WR?J;W;MEF!rHPOKkh>bHSd`(_wF= zWo90@pj%jNXVC{@0z&NnOKPlc!MeZ^5LAU}KtuUg!&mBo)c2uh()XC0kC~XM(caQ=EJ*?AFc<*& z{XhI@Wgw~XGDt9=P?9*ZIQlia+LT;zavHrOcI0^EE%IyS{<89>#WV-8Rqx<*c!28+ zGdGv3bE$ukGi0MlepXocATfEA&*yXRpa@Q+9Y9+3bb$EhUJaaC@02Sb)Y|Fwwl5l% O!d|;j$Y(o4lm7;3KpK$% literal 0 HcmV?d00001 diff --git a/docs/dir_92f480b6bb910a384a17c290a6146620.html b/docs/dir_92f480b6bb910a384a17c290a6146620.html index b15e186..b84b99d 100644 --- a/docs/dir_92f480b6bb910a384a17c290a6146620.html +++ b/docs/dir_92f480b6bb910a384a17c290a6146620.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk Directory Reference +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk Directory Reference @@ -23,8 +23,8 @@
- - + @@ -33,21 +33,22 @@
+
SinricPro Library
- + +/* @license-end */ +
@@ -61,7 +62,7 @@
@@ -75,19 +76,27 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
esp8266-esp32-sdk Directory Reference
+
esp8266-esp32-sdk Directory Reference
- + +

+

Directories

 src
 
@@ -95,7 +104,7 @@ diff --git a/docs/dir_aa16df8496461ec3bcf35908592889b5.html b/docs/dir_aa16df8496461ec3bcf35908592889b5.html index b88f459..8653094 100644 --- a/docs/dir_aa16df8496461ec3bcf35908592889b5.html +++ b/docs/dir_aa16df8496461ec3bcf35908592889b5.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: C:/Users/Boris/.platformio/lib/esp8266-esp32-sdk/src/Capabilities Directory Reference +SinricPro Library: C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities Directory Reference @@ -23,8 +23,8 @@
- - + @@ -33,21 +33,22 @@
+
SinricPro Library
- + +/* @license-end */ +
@@ -61,7 +62,7 @@
@@ -75,23 +76,96 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Capabilities Directory Reference
+
Capabilities Directory Reference
+
+Directory dependency graph for Capabilities:
+
+
C:/Users/boris/Documents/SinricPro/esp8266-esp32-sdk/src/Capabilities
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 AirQualitySensor.h
 
 BrightnessController.h
 
 ChannelController.h
 
 ColorController.h
 
 ColorTemperatureController.h
 
 ContactSensor.h
 
 Doorbell.h
 
 DoorController.h
 
 EqualizerController.h
 
 InputController.h
 
 KeypadController.h
 
 LockController.h
 
 MediaController.h
 
 ModeController.h
 
 MotionSensor.h
 
 MuteController.h
 
 PercentageController.h
 
 PowerLevelController.h
 
 PowerSensor.h
 
 PowerStateController.h
 
 PushNotification.h
 
 RangeController.h
 
 SettingController.h
 
 TemperatureSensor.h
 
 ThermostatController.h
 
 ToggleController.h
 
 VolumeController.h
 
diff --git a/docs/dir_aa16df8496461ec3bcf35908592889b5_dep.map b/docs/dir_aa16df8496461ec3bcf35908592889b5_dep.map new file mode 100644 index 0000000..d8ca75e --- /dev/null +++ b/docs/dir_aa16df8496461ec3bcf35908592889b5_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/dir_aa16df8496461ec3bcf35908592889b5_dep.md5 b/docs/dir_aa16df8496461ec3bcf35908592889b5_dep.md5 new file mode 100644 index 0000000..1198d42 --- /dev/null +++ b/docs/dir_aa16df8496461ec3bcf35908592889b5_dep.md5 @@ -0,0 +1 @@ +7bf44ef599721a02c86ce13916c4fc6c \ No newline at end of file diff --git a/docs/dir_aa16df8496461ec3bcf35908592889b5_dep.png b/docs/dir_aa16df8496461ec3bcf35908592889b5_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..28c131514c636b3457a6415eb96a8d7bac9c4d61 GIT binary patch literal 1020 zcmeAS@N?(olHy`uVBq!ia0vp^y+EAJ!3HF~oEfcv6kC$Fy9>jA5L~c#`D6wL=8c{% zjv*Cu-rlwM7jcw0{?Rh|Vc-PscU%e?%Qpu1No?J`K*=q6(H;if6-N{d-Eya~aWlKE zePimlWrN{9hQ%2@Ga@9{xG;&uITgnokD4nt`|tNRZ_d5DS7Xnqc<0?4oe!ta-1&HC zfe6rU7;w11Dy1;+cwyeIb=77YE_iRQ3TbW&UBcyVX&*INfpFImg~qU5c` zxtaHGM_WyI;LL12R(f~mR{i;xc8O1E3Cl=OcVadKqm9j#_ZiOo+W0SaZ|&zQ*UUY4 z4tX#euDuYVHTCMli5IuLV^v-F`_a8i5uZb%zEA3|TKnt$;olYSpKmD6P5wG-S={PX z*ZkD4T@QSItHsopKcC}}Q(|_)lub2DGT)Yb^EEYNcRcj!g2vJrMM4{@sxC!dm{w|7 z^W{dNsd06+*K?_`ev?TrJ6FE3UwfhCb>^W}C%W`rOn?7<$63dhuC}~K*2G;_kc7F^ zaP|D6+Z|O>PnxQvIwIr!nJt&8cL+*B(Z;JCQ;Y6ov6Lm%OLYYLGaD+`SMMsUjmrIZ z%i!YFuX47PtK9hIPj2DAW+GtxEBswnsY9>nao@7c*52OvZtg{k7p^py%6fM#c5-ag z!=s;!w{H4#C!+q!<%l+@jUY3D7K+-LEGwVS_4@d3?P*(l_iL17?24{0vH$ds^+@IY z?ce2ofBbvDmAChPoS`cRAD7H5g?kD|Z)RN7&j`F6cf<7Wxv#(9TvuBYFC4t_>+j1d zcQXRhn~xdXooMjlPu)$9O;^5}1lot3yk|V=v6{$3xu%R>le<;3PJW(#X_x%QCC-&` z*^3v{o!)Xe?B%lMD->g^cs+NU9J!meEr0oPou9VBT~Yc+Ds@g;Mt1&=^1mojwWL#O zQ+5CE)-%;MdDeF`l{D@o-sis@+@;bTcJf)5*O)8ja+8( z)g*kq@9MJMxr?-4UzP4X^V{Il|9O6Ma$c1*Hzfk2W8<<$iG?uq)nwYjd2Bl`$Yrvz zXWyT)Y7M(={hts2o^JSNytzECRTh+}Ctu(?d+*-8OGmjUuTFe!(I@52dV literal 0 HcmV?d00001 diff --git a/docs/doc.svg b/docs/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/docs/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/docd.svg b/docs/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/docs/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/doxygen.css b/docs/doxygen.css index ffbff02..009a9b5 100644 --- a/docs/doxygen.css +++ b/docs/doxygen.css @@ -1,29 +1,378 @@ -/* The standard CSS for doxygen 1.9.1 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); } -p.reference, p.definition { - font: 400 14px/22px Roboto,sans-serif; +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; } /* @group Heading Levels */ -h1.groupheader { - font-size: 150%; -} - .title { - font: 400 14px/28px Roboto,sans-serif; + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; font-size: 150%; font-weight: bold; margin: 10px 2px; } +h1.groupheader { + font-size: 150%; +} + h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); font-size: 150%; font-weight: normal; margin-top: 1.75em; @@ -46,22 +395,13 @@ h1, h2, h3, h4, h5, h6 { } h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; + text-shadow: 0 0 15px var(--glow-color); } dt { font-weight: bold; } -ul.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; - column-count: 3; -} - p.startli, p.startdd { margin-top: 2px; } @@ -113,7 +453,6 @@ h3.version { } div.navtab { - border-right: 1px solid #A3B4D7; padding-right: 15px; text-align: right; line-height: 110%; @@ -127,16 +466,17 @@ td.navtab { padding-right: 6px; padding-left: 6px; } + td.navtabHL { - background-image: url('tab_a.png'); + background-image: var(--nav-gradient-active-image); background-repeat:repeat-x; padding-right: 6px; padding-left: 6px; } td.navtabHL a, td.navtabHL a:visited { - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); } a.navtab { @@ -148,7 +488,13 @@ div.qindex{ width: 100%; line-height: 140%; font-size: 130%; - color: #A0A0A0; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; } dt.alphachar{ @@ -157,7 +503,7 @@ dt.alphachar{ } .alphachar a{ - color: black; + color: var(--index-header-color); } .alphachar a:hover, .alphachar a:visited{ @@ -176,8 +522,12 @@ dt.alphachar{ line-height: 1.15em; } +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + .classindex dl.odd { - background-color: #F8F9FC; + background-color: var(--index-odd-item-bg-color); } @media(min-width: 1120px) { @@ -196,23 +546,19 @@ dt.alphachar{ /* @group Link Styling */ a { - color: #3D578C; + color: var(--page-link-color); font-weight: normal; text-decoration: none; } .contents a:visited { - color: #4665A2; + color: var(--page-visited-link-color); } a:hover { text-decoration: underline; } -.contents a.qindexHL:visited { - color: #FFFFFF; -} - a.el { font-weight: bold; } @@ -221,12 +567,39 @@ a.elRef { } a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; + color: var(--code-link-color); } a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } /* @end */ @@ -235,7 +608,17 @@ dl.el { } ul { - overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; } #side-nav ul { @@ -254,30 +637,32 @@ ul { } pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); padding: 4px 6px; margin: 4px 8px 4px 2px; overflow: auto; word-wrap: break-word; font-size: 9pt; line-height: 125%; - font-family: monospace, fixed; + font-family: var(--font-family-monospace); font-size: 105%; } div.fragment { - padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); } div.line { - font-family: monospace, fixed; + font-family: var(--font-family-monospace); font-size: 13px; min-height: 13px; - line-height: 1.0; + line-height: 1.2; text-wrap: unrestricted; white-space: -moz-pre-wrap; /* Moz */ white-space: -pre-wrap; /* Opera 4-6 */ @@ -306,24 +691,40 @@ div.line:after { } div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); } +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} span.lineno { padding-right: 4px; + margin-right: 9px; text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); white-space: pre; } -span.lineno a { - background-color: #D8D8D8; +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); } span.lineno a:hover { - background-color: #C8C8C8; + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); } .lineno { @@ -335,24 +736,6 @@ span.lineno a:hover { user-select: none; } -div.ah, span.ah { - background-color: black; - font-weight: bold; - color: #FFFFFF; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); -} - div.classindex ul { list-style: none; padding-left: 0; @@ -374,8 +757,7 @@ div.groupText { } body { - background-color: white; - color: black; + color: var(--page-foreground-color); margin: 0; } @@ -385,29 +767,15 @@ div.contents { margin-right: 8px; } -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; +p.formulaDsp { + text-align: center; } -tr.memlist { - background-color: #EEF1F7; +img.dark-mode-visible { + display: none; } - -p.formulaDsp { - text-align: center; +img.light-mode-visible { + display: none; } img.formulaDsp { @@ -437,89 +805,74 @@ address.footer { img.footer { border: 0px; vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; } /* @group Code Colorization */ span.keyword { - color: #008000 + color: var(--code-keyword-color); } span.keywordtype { - color: #604020 + color: var(--code-type-keyword-color); } span.keywordflow { - color: #e08000 + color: var(--code-flow-keyword-color); } span.comment { - color: #800000 + color: var(--code-comment-color); } span.preprocessor { - color: #806020 + color: var(--code-preprocessor-color); } span.stringliteral { - color: #002080 + color: var(--code-string-literal-color); } span.charliteral { - color: #008080 + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); } span.vhdldigit { - color: #ff00ff + color: var(--code-vhdl-digit-color); } span.vhdlchar { - color: #000000 + color: var(--code-vhdl-char-color); } span.vhdlkeyword { - color: #700070 + color: var(--code-vhdl-keyword-color); } span.vhdllogic { - color: #ff0000 + color: var(--code-vhdl-logic-color); } blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); margin: 0 24px 0 4px; padding: 0 12px 0 16px; } -blockquote.DocNodeRTL { - border-left: 0; - border-right: 2px solid #9CAFD4; - margin: 0 4px 0 24px; - padding: 0 16px 0 12px; -} - /* @end */ -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - td.tiny { font-size: 75%; } @@ -527,18 +880,19 @@ td.tiny { .dirtab { padding: 4px; border-collapse: collapse; - border: 1px solid #A3B4D7; + border: 1px solid var(--table-cell-border-color); } th.dirtab { - background: #EBEFF6; + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); font-weight: bold; } hr { height: 0px; border: none; - border-top: 1px solid #4A6AAA; + border-top: 1px solid var(--separator-color); } hr.footer { @@ -566,14 +920,14 @@ table.memberdecls { } .memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); } .mdescLeft, .mdescRight, .memItemLeft, .memItemRight, .memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; + background-color: var(--memdecl-background-color); border: none; margin: 4px; padding: 1px 0 0 8px; @@ -581,11 +935,11 @@ table.memberdecls { .mdescLeft, .mdescRight { padding: 0px 8px 4px 8px; - color: #555; + color: var(--memdecl-foreground-color); } .memSeparator { - border-bottom: 1px solid #DEE4F0; + border-bottom: 1px solid var(--memdecl-separator-color); line-height: 1px; margin: 0px; padding: 0px; @@ -600,7 +954,7 @@ table.memberdecls { } .memTemplParams { - color: #4665A2; + color: var(--memdecl-template-color); white-space: nowrap; font-size: 80%; } @@ -613,15 +967,15 @@ table.memberdecls { .memtitle { padding: 8px; - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); border-top-right-radius: 4px; border-top-left-radius: 4px; margin-bottom: -1px; - background-image: url('nav_f.png'); + background-image: var(--memdef-title-gradient-image); background-repeat: repeat-x; - background-color: #E2E8F2; + background-color: var(--memdef-title-background-color); line-height: 1.25; font-weight: 300; float:left; @@ -636,20 +990,11 @@ table.memberdecls { .memtemplate { font-size: 80%; - color: #4665A2; + color: var(--memdef-template-color); font-weight: normal; margin-left: 9px; } -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - .mempage { width: 100%; } @@ -668,7 +1013,7 @@ table.memberdecls { } .memitem.glow { - box-shadow: 0 0 15px cyan; + box-shadow: 0 0 15px var(--glow-color); } .memname { @@ -681,41 +1026,32 @@ table.memberdecls { } .memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); padding: 6px 0px 6px 0px; - color: #253555; + color: var(--memdef-proto-text-color); font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-color: #DFE5F1; - /* opera specific markup */ + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); border-top-right-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - } .overload { - font-family: "courier new",courier,monospace; + font-family: var(--font-family-monospace); font-size: 65%; } .memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); padding: 6px 10px 2px 10px; - background-color: #FBFCFD; border-top-width: 0; background-image:url('nav_g.png'); background-repeat:repeat-x; - background-color: #FFFFFF; + background-color: var(--memdef-doc-background-color); /* opera specific markup */ border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; @@ -748,7 +1084,7 @@ dl.reflist dd { } .paramname { - color: #602020; + color: var(--memdef-param-name-color); white-space: nowrap; } .paramname em { @@ -761,20 +1097,20 @@ dl.reflist dd { .params, .retval, .exception, .tparams { margin-left: 0px; padding-left: 0px; -} +} .params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { font-weight: bold; vertical-align: top; } - + .params .paramtype, .tparams .paramtype { font-style: italic; vertical-align: top; -} - +} + .params .paramdir, .tparams .paramdir { - font-family: "courier new",courier,monospace; + font-family: var(--font-family-monospace); vertical-align: top; } @@ -798,13 +1134,13 @@ span.mlabels { } span.mlabel { - background-color: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); text-shadow: none; - color: white; + color: var(--label-foreground-color); margin-right: 4px; padding: 2px 3px; border-radius: 3px; @@ -821,8 +1157,8 @@ span.mlabel { div.directory { margin: 10px 0px; - border-top: 1px solid #9CAFD4; - border-bottom: 1px solid #9CAFD4; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); width: 100%; } @@ -858,9 +1194,14 @@ div.directory { border-left: 1px solid rgba(0,0,0,0.05); } +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + .directory tr.even { padding-left: 6px; - background-color: #F7F8FB; + background-color: var(--index-even-item-bg-color); } .directory img { @@ -878,11 +1219,11 @@ div.directory { cursor: pointer; padding-left: 2px; padding-right: 2px; - color: #3D578C; + color: var(--page-link-color); } .arrow { - color: #9CAFD4; + color: var(--nav-arrow-color); -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; @@ -896,14 +1237,15 @@ div.directory { } .icon { - font-family: Arial, Helvetica; + font-family: var(--font-family-icon); + line-height: normal; font-weight: bold; font-size: 12px; height: 14px; width: 16px; display: inline-block; - background-color: #728DC1; - color: white; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); text-align: center; border-radius: 4px; margin-left: 2px; @@ -920,8 +1262,7 @@ div.directory { width: 24px; height: 18px; margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; + background-image:var(--icon-folder-open-image); background-repeat: repeat-y; vertical-align:top; display: inline-block; @@ -931,8 +1272,7 @@ div.directory { width: 24px; height: 18px; margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; + background-image:var(--icon-folder-closed-image); background-repeat: repeat-y; vertical-align:top; display: inline-block; @@ -942,17 +1282,13 @@ div.directory { width: 24px; height: 18px; margin-bottom: 4px; - background-image:url('doc.png'); + background-image:var(--icon-doc-image); background-position: 0px -4px; background-repeat: repeat-y; vertical-align:top; display: inline-block; } -table.directory { - font: 400 14px Roboto,sans-serif; -} - /* @end */ div.dynheader { @@ -967,7 +1303,7 @@ div.dynheader { address { font-style: normal; - color: #2A3D61; + color: var(--footer-foreground-color); } table.doxtable caption { @@ -981,28 +1317,23 @@ table.doxtable { } table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; + border: 1px solid var(--table-cell-border-color); padding: 3px 7px 2px; } table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); font-size: 110%; padding-bottom: 4px; padding-top: 5px; } table.fieldtable { - /*width: 100%;*/ margin-bottom: 10px; - border: 1px solid #A8B8D9; + border: 1px solid var(--memdef-border-color); border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); } @@ -1012,8 +1343,8 @@ table.fieldtable { .fieldtable td.fieldtype, .fieldtable td.fieldname { white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); vertical-align: top; } @@ -1022,14 +1353,13 @@ table.fieldtable { } .fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ + border-bottom: 1px solid var(--memdef-border-color); } .fieldtable td.fielddoc p:first-child { margin-top: 0px; -} - +} + .fieldtable td.fielddoc p:last-child { margin-bottom: 2px; } @@ -1039,22 +1369,18 @@ table.fieldtable { } .fieldtable th { - background-image:url('nav_f.png'); + background-image: var(--memdef-title-gradient-image); background-repeat:repeat-x; - background-color: #E2E8F2; + background-color: var(--memdef-title-background-color); font-size: 90%; - color: #253555; + color: var(--memdef-proto-text-color); padding-bottom: 4px; padding-top: 5px; text-align:left; font-weight: 400; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; + border-bottom: 1px solid var(--memdef-border-color); } @@ -1062,7 +1388,7 @@ table.fieldtable { top: 0px; left: 10px; height: 36px; - background-image: url('tab_b.png'); + background-image: var(--nav-gradient-image); z-index: 101; overflow: hidden; font-size: 13px; @@ -1071,13 +1397,13 @@ table.fieldtable { .navpath ul { font-size: 11px; - background-image:url('tab_b.png'); + background-image: var(--nav-gradient-image); background-repeat:repeat-x; background-position: 0 -5px; height:30px; line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); overflow:hidden; margin:0px; padding:0px; @@ -1089,10 +1415,10 @@ table.fieldtable { float:left; padding-left:10px; padding-right:15px; - background-image:url('bc_s.png'); + background-image:var(--nav-breadcrumb-image); background-repeat:no-repeat; background-position:right; - color:#364D7C; + color: var(--nav-foreground-color); } .navpath li.navelem a @@ -1101,15 +1427,16 @@ table.fieldtable { display:block; text-decoration: none; outline: none; - color: #283A5D; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; } .navpath li.navelem a:hover { - color:#6884BD; + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); } .navpath li.footer @@ -1121,7 +1448,7 @@ table.fieldtable { background-image:none; background-repeat:no-repeat; background-position:right; - color:#364D7C; + color: var(--footer-foreground-color); font-size: 8pt; } @@ -1133,7 +1460,7 @@ div.summary padding-right: 5px; width: 50%; text-align: right; -} +} div.summary a { @@ -1148,7 +1475,7 @@ table.classindex margin-right: 3%; width: 94%; border: 0; - border-spacing: 0; + border-spacing: 0; padding: 0; } @@ -1166,11 +1493,11 @@ div.ingroups a div.header { - background-image:url('nav_h.png'); + background-image: var(--header-gradient-image); background-repeat:repeat-x; - background-color: #F9FAFC; + background-color: var(--header-background-color); margin: 0px; - border-bottom: 1px solid #C4CFE5; + border-bottom: 1px solid var(--header-separator-color); } div.headertitle @@ -1193,11 +1520,6 @@ dl.section { padding-left: 0px; } -dl.section.DocNodeRTL { - margin-right: 0px; - padding-right: 0px; -} - dl.note { margin-left: -7px; padding-left: 3px; @@ -1205,16 +1527,6 @@ dl.note { border-color: #D0C000; } -dl.note.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #D0C000; -} - dl.warning, dl.attention { margin-left: -7px; padding-left: 3px; @@ -1222,16 +1534,6 @@ dl.warning, dl.attention { border-color: #FF0000; } -dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #FF0000; -} - dl.pre, dl.post, dl.invariant { margin-left: -7px; padding-left: 3px; @@ -1239,16 +1541,6 @@ dl.pre, dl.post, dl.invariant { border-color: #00D000; } -dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00D000; -} - dl.deprecated { margin-left: -7px; padding-left: 3px; @@ -1256,16 +1548,6 @@ dl.deprecated { border-color: #505050; } -dl.deprecated.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #505050; -} - dl.todo { margin-left: -7px; padding-left: 3px; @@ -1273,16 +1555,6 @@ dl.todo { border-color: #00C0E0; } -dl.todo.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00C0E0; -} - dl.test { margin-left: -7px; padding-left: 3px; @@ -1290,16 +1562,6 @@ dl.test { border-color: #3030E0; } -dl.test.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #3030E0; -} - dl.bug { margin-left: -7px; padding-left: 3px; @@ -1307,21 +1569,16 @@ dl.bug { border-color: #C08050; } -dl.bug.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #C08050; -} - dl.section dd { margin-bottom: 6px; } +#projectrow +{ + height: 56px; +} + #projectlogo { text-align: center; @@ -1337,25 +1594,29 @@ dl.section dd { #projectalign { vertical-align: middle; + padding-left: 0.5em; } #projectname { - font: 300% Tahoma, Arial,sans-serif; + font-size: 200%; + font-family: var(--font-family-title); margin: 0px; padding: 2px 0px; } - + #projectbrief { - font: 120% Tahoma, Arial,sans-serif; + font-size: 90%; + font-family: var(--font-family-title); margin: 0px; padding: 0px; } #projectnumber { - font: 50% Tahoma, Arial,sans-serif; + font-size: 50%; + font-family: 50% var(--font-family-title); margin: 0px; padding: 0px; } @@ -1365,7 +1626,8 @@ dl.section dd { padding: 0px; margin: 0px; width: 100%; - border-bottom: 1px solid #5373B4; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); } .image @@ -1398,17 +1660,12 @@ dl.section dd { font-weight: bold; } -div.zoom -{ - border: 1px solid #90A5CE; -} - dl.citelist { margin-bottom:50px; } dl.citelist dt { - color:#334975; + color:var(--citation-label-color); float:left; font-weight:bold; margin-right:10px; @@ -1424,8 +1681,8 @@ dl.citelist dd { div.toc { padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); border-radius: 7px 7px 7px 7px; float: right; height: auto; @@ -1433,28 +1690,17 @@ div.toc { width: 200px; } -.PageDocRTL-title div.toc { - float: left !important; - text-align: right; -} - div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); margin-top: 5px; padding-left: 10px; padding-top: 2px; } -.PageDocRTL-title div.toc li { - background-position-x: right !important; - padding-left: 0 !important; - padding-right: 10px; -} - div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); border-bottom: 0 none; margin: 0; } @@ -1463,7 +1709,7 @@ div.toc ul { list-style: none outside none; border: medium none; padding: 0px; -} +} div.toc li.level1 { margin-left: 0px; @@ -1474,11 +1720,11 @@ div.toc li.level2 { } div.toc li.level3 { - margin-left: 30px; + margin-left: 15px; } div.toc li.level4 { - margin-left: 45px; + margin-left: 15px; } span.emoji { @@ -1487,29 +1733,13 @@ span.emoji { */ } -.PageDocRTL-title div.toc li.level1 { - margin-left: 0 !important; - margin-right: 0; -} - -.PageDocRTL-title div.toc li.level2 { - margin-left: 0 !important; - margin-right: 15px; -} - -.PageDocRTL-title div.toc li.level3 { - margin-left: 0 !important; - margin-right: 30px; -} - -.PageDocRTL-title div.toc li.level4 { - margin-left: 0 !important; - margin-right: 45px; +span.obfuscator { + display: none; } .inherit_header { font-weight: bold; - color: gray; + color: var(--inherit-header-color); cursor: pointer; -webkit-touch-callout: none; -webkit-user-select: none; @@ -1541,11 +1771,12 @@ tr.heading h2 { #powerTip { cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; + box-shadow: var(--tooltip-shadow); display: none; font-size: smaller; max-width: 80%; @@ -1556,7 +1787,7 @@ tr.heading h2 { } #powerTip div.ttdoc { - color: grey; + color: var(--tooltip-doc-color); font-style: italic; } @@ -1564,18 +1795,24 @@ tr.heading h2 { font-weight: bold; } +#powerTip a { + color: var(--tooltip-link-color); +} + #powerTip div.ttname { font-weight: bold; } #powerTip div.ttdeci { - color: #006318; + color: var(--tooltip-declaration-color); } #powerTip div { margin: 0px; padding: 0px; - font: 12px/16px Roboto,sans-serif; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; } #powerTip:before, #powerTip:after { @@ -1620,12 +1857,12 @@ tr.heading h2 { } #powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #FFFFFF; + border-top-color: var(--tooltip-background-color); border-width: 10px; margin: 0px -10px; } -#powerTip.n:before { - border-top-color: #808080; +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); border-width: 11px; margin: 0px -11px; } @@ -1648,13 +1885,13 @@ tr.heading h2 { } #powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #FFFFFF; + border-bottom-color: var(--tooltip-background-color); border-width: 10px; margin: 0px -10px; } #powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; + border-bottom-color: var(--tooltip-border-color); border-width: 11px; margin: 0px -11px; } @@ -1675,13 +1912,13 @@ tr.heading h2 { left: 100%; } #powerTip.e:after { - border-left-color: #FFFFFF; + border-left-color: var(--tooltip-border-color); border-width: 10px; top: 50%; margin-top: -10px; } #powerTip.e:before { - border-left-color: #808080; + border-left-color: var(--tooltip-border-color); border-width: 11px; top: 50%; margin-top: -11px; @@ -1691,13 +1928,13 @@ tr.heading h2 { right: 100%; } #powerTip.w:after { - border-right-color: #FFFFFF; + border-right-color: var(--tooltip-border-color); border-width: 10px; top: 50%; margin-top: -10px; } #powerTip.w:before { - border-right-color: #808080; + border-right-color: var(--tooltip-border-color); border-width: 11px; top: 50%; margin-top: -11px; @@ -1731,7 +1968,7 @@ table.markdownTable { } table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; + border: 1px solid var(--table-cell-border-color); padding: 3px 7px 2px; } @@ -1739,8 +1976,8 @@ table.markdownTable tr { } th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); font-size: 110%; padding-bottom: 4px; padding-top: 5px; @@ -1758,36 +1995,51 @@ th.markdownTableHeadCenter, td.markdownTableBodyCenter { text-align: center } -.DocNodeRTL { - text-align: right; - direction: rtl; +tt, code, kbd, samp +{ + display: inline-block; } +/* @end */ -.DocNodeLTR { - text-align: left; - direction: ltr; +u { + text-decoration: underline; } -table.DocNodeRTL { - width: auto; - margin-right: 0; - margin-left: auto; +details>summary { + list-style-type: none; } -table.DocNodeLTR { - width: auto; - margin-right: auto; - margin-left: 0; +details > summary::-webkit-details-marker { + display: none; } -tt, code, kbd, samp -{ - display: inline-block; - direction:ltr; +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; } -/* @end */ -u { - text-decoration: underline; +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); } diff --git a/docs/doxygen.svg b/docs/doxygen.svg index d42dad5..79a7635 100644 --- a/docs/doxygen.svg +++ b/docs/doxygen.svg @@ -1,4 +1,6 @@ + @@ -17,7 +19,7 @@ - + diff --git a/docs/dynsections.js b/docs/dynsections.js index 3174bd7..b73c828 100644 --- a/docs/dynsections.js +++ b/docs/dynsections.js @@ -47,6 +47,8 @@ function updateStripes() { $('table.directory tr'). removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); } function toggleLevel(level) @@ -118,4 +120,73 @@ function toggleInherit(id) $(img).attr('src',src.substring(0,src.length-10)+'open.png'); } } + +var opened=true; +// in case HTML_COLORSTYLE is LIGHT or DARK the vars will be replaced, so we write them out explicitly and use double quotes +var plusImg = [ "var(--fold-plus-image)", "var(--fold-plus-image-relpath)" ]; +var minusImg = [ "var(--fold-minus-image)", "var(--fold-minus-image-relpath)" ]; + +// toggle all folding blocks +function codefold_toggle_all(relPath) { + if (opened) { + $('#fold_all').css('background-image',plusImg[relPath]); + $('div[id^=foldopen]').hide(); + $('div[id^=foldclosed]').show(); + } else { + $('#fold_all').css('background-image',minusImg[relPath]); + $('div[id^=foldopen]').show(); + $('div[id^=foldclosed]').hide(); + } + opened=!opened; +} + +// toggle single folding block +function codefold_toggle(id) { + $('#foldopen'+id).toggle(); + $('#foldclosed'+id).toggle(); +} +function init_codefold(relPath) { + $('span[class=lineno]').css( + {'padding-right':'4px', + 'margin-right':'2px', + 'display':'inline-block', + 'width':'54px', + 'background':'linear-gradient(var(--fold-line-color),var(--fold-line-color)) no-repeat 46px/2px 100%' + }); + // add global toggle to first line + $('span[class=lineno]:first').append(''); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + /* @license-end */ diff --git a/docs/folderclosed.svg b/docs/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/docs/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/docs/folderclosedd.svg b/docs/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/docs/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/docs/folderopen.svg b/docs/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/docs/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/docs/folderopend.svg b/docs/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/docs/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/functions.html b/docs/functions.html index b7f3d7e..62598b2 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -1,9 +1,9 @@ - + - - + + SinricPro Library: Class Members @@ -23,8 +23,8 @@
- - + @@ -33,21 +33,22 @@
+
SinricPro Library
- + +/* @license-end */ +
@@ -61,7 +62,7 @@
@@ -75,237 +76,114 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
-

- b -

diff --git a/docs/functions_func.html b/docs/functions_func.html index bc17047..cc7551f 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -1,9 +1,9 @@ - + - - + + SinricPro Library: Class Members - Functions @@ -23,8 +23,8 @@
- - + @@ -33,21 +33,22 @@
+
SinricPro Library
- + +/* @license-end */ +
@@ -61,7 +62,7 @@
@@ -75,237 +76,114 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-  +
Here is a list of all documented functions with links to the class documentation for each member:
-

- b -

diff --git a/docs/graph_legend.html b/docs/graph_legend.html index b9c26a1..fc0cfcf 100644 --- a/docs/graph_legend.html +++ b/docs/graph_legend.html @@ -1,9 +1,9 @@ - + - - + + SinricPro Library: Graph Legend @@ -23,8 +23,8 @@
- - + @@ -33,21 +33,22 @@
+
SinricPro Library
- + +/* @license-end */ +
@@ -61,7 +62,7 @@
@@ -75,14 +76,20 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Graph Legend
+
Graph Legend

This page explains how to interpret the graphs that are generated by doxygen.

@@ -135,7 +142,7 @@

The arrows have the following meaning:

  • -A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +A blue arrow is used to visualize a public inheritance relation between two classes.
  • A dark green arrow is used for protected inheritance.
  • @@ -150,7 +157,7 @@ diff --git a/docs/graph_legend.md5 b/docs/graph_legend.md5 index 8fcdccd..da515da 100644 --- a/docs/graph_legend.md5 +++ b/docs/graph_legend.md5 @@ -1 +1 @@ -f51bf6e9a10430aafef59831b08dcbfe \ No newline at end of file +f74606a252eb303675caf37987d0b7af \ No newline at end of file diff --git a/docs/graph_legend.png b/docs/graph_legend.png index ed2e657209dc1be920610bf0cf4ec23981e4bc82..f5989318b9f32d5921b087d29f1899a19e651ab5 100644 GIT binary patch literal 13473 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 Wu~_Yw4ZL%Nr68*+Q})Uv=>GtNmBPRP literal 13384 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 z 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 F{{R?3;r0Lk diff --git a/docs/group___capabilities.html b/docs/group___capabilities.html index 4d1a7c1..91ceca2 100644 --- a/docs/group___capabilities.html +++ b/docs/group___capabilities.html @@ -1,9 +1,9 @@ - + - - + + SinricPro Library: Capabilities @@ -23,8 +23,8 @@
    - - + @@ -33,21 +33,22 @@
    +
    SinricPro Library
    - + +/* @license-end */ +
@@ -61,7 +62,7 @@
@@ -75,98 +76,104 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Capabilities
+
Capabilities

Capabilities. More...

- - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +

+

Classes

class  AirQualitySensor< T >
 AirQuality. More...
class  AirQualitySensor< T >
 AirQuality. More...
 
class  BrightnessController< T >
 BrightnessController. More...
class  BrightnessController< T >
 BrightnessController. More...
 
class  ChannelController< T >
 ChannelController. More...
class  ChannelController< T >
 ChannelController. More...
 
class  ColorController< T >
 ColorController. More...
class  ColorController< T >
 ColorController. More...
 
class  ColorTemperatureController< T >
 ColorTemperatureController. More...
class  ColorTemperatureController< T >
 ColorTemperatureController. More...
 
class  ContactSensor< T >
 ContactSensor. More...
class  ContactSensor< T >
 ContactSensor. More...
 
class  Doorbell< T >
 Dorbell. More...
class  Doorbell< T >
 Dorbell. More...
 
class  EqualizerController< T >
 EqualizerController. More...
class  EqualizerController< T >
 EqualizerController. More...
 
class  InputController< T >
 InputController. More...
class  InputController< T >
 InputController. More...
 
class  KeypadController< T >
 KeypadController. More...
class  KeypadController< T >
 KeypadController. More...
 
class  LockController< T >
 LockController. More...
class  LockController< T >
 LockController. More...
 
class  MediaController< T >
 MediaController. More...
class  MediaController< T >
 MediaController. More...
 
class  ModeController< T >
 ModeController. More...
class  ModeController< T >
 ModeController. More...
 
class  MotionSensor< T >
 MotionSensor. More...
class  MotionSensor< T >
 MotionSensor. More...
 
class  MuteController< T >
 MuteController. More...
class  MuteController< T >
 MuteController. More...
 
class  PercentageController< T >
 PercentageController. More...
class  PercentageController< T >
 PercentageController. More...
 
class  PowerLevelController< T >
 PowerLevelController. More...
class  PowerLevelController< T >
 PowerLevelController. More...
 
class  PowerSensor< T >
 PowerSensor. More...
class  PowerSensor< T >
 PowerSensor. More...
 
class  PowerStateController< T >
 PowerStateController. More...
class  PowerStateController< T >
 PowerStateController. More...
 
class  PushNotification< T >
 PushNotification. More...
class  PushNotification< T >
 PushNotification. More...
 
class  RangeController< T >
 RangeControllerFloatInt. More...
class  RangeController< T >
 RangeControllerFloatInt. More...
 
class  TemperatureSensor< T >
 TemperatureSensor. More...
class  TemperatureSensor< T >
 TemperatureSensor. More...
 
class  ThermostatController< T >
 ThermostatController. More...
class  ThermostatController< T >
 ThermostatController. More...
 
class  ToggleController< T >
 ToggleController. More...
class  ToggleController< T >
 ToggleController. More...
 
class  VolumeController< T >
 VolumeController. More...
class  VolumeController< T >
 VolumeController. More...
 

Detailed Description

@@ -176,7 +183,7 @@ diff --git a/docs/group___capabilities.js b/docs/group___capabilities.js index e07a861..cf20e12 100644 --- a/docs/group___capabilities.js +++ b/docs/group___capabilities.js @@ -1,113 +1,113 @@ var group___capabilities = [ - [ "AirQualitySensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_air_quality_sensor.html", [ - [ "sendAirQualityEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_air_quality_sensor.html#a733195bdc5b15c858e4e890847b3a0d5", null ] - ] ], - [ "BrightnessController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_brightness_controller.html", [ - [ "onAdjustBrightness", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_brightness_controller.html#a0633e5fa2981189f4a093bab00a8c7f1", null ], - [ "onBrightness", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_brightness_controller.html#abbaab3067b1fcdcc5928451b818a4420", null ], - [ "sendBrightnessEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_brightness_controller.html#a2a96c414210f61de3ce53a4ca8c963b3", null ] - ] ], - [ "ChannelController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html", [ - [ "onChangeChannel", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html#a92f3b83744b5bb82d32628eef39c1eb9", null ], - [ "onChangeChannelNumber", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html#afd8aee20590bfadec181c6ee515125ec", null ], - [ "onSkipChannels", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html#ab1123d03d471fad4896eb2960ed41855", null ], - [ "sendChangeChannelEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html#aff5839c3020c3006af1a2a8c37cc858e", null ] - ] ], - [ "ColorController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_controller.html", [ - [ "onColor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_controller.html#a059ff103149869b7c49cdb8911875b7b", null ], - [ "sendColorEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_controller.html#a3599a6d00eb0f9127a7c1188885c5bc0", null ] - ] ], - [ "ColorTemperatureController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html", [ - [ "onColorTemperature", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html#a8535c44fd2517ed09ebe6a203cc25b67", null ], - [ "onDecreaseColorTemperature", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html#a7468976e7fffeee14cc869b7236cbb50", null ], - [ "onIncreaseColorTemperature", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html#a7ea9fd9861a5668a41d06267bfbec82a", null ], - [ "sendColorTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html#a0f90d7f5a5b365116f97beca7630ccc9", null ] - ] ], - [ "ContactSensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_contact_sensor.html", [ - [ "sendContactEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_contact_sensor.html#a452a4cfa3177d8d8d31c5919e9ccbb19", null ] - ] ], - [ "Doorbell", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_doorbell.html", [ - [ "sendDoorbellEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_doorbell.html#a168f5a4ddcbf381fd548bf10ee05b272", null ] - ] ], - [ "EqualizerController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html", [ - [ "onAdjustBands", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html#a41a5c1506545c44c2408054a8675c7a8", null ], - [ "onResetBands", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html#aa6c3aabc2b442d82ac5456ccaac3f60d", null ], - [ "onSetBands", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html#a4aaa7a29394560be7537a86b0304d199", null ], - [ "sendBandsEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html#a4ad5674e36d96a73147388251b794c82", null ] - ] ], - [ "InputController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_input_controller.html", [ - [ "onSelectInput", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_input_controller.html#a18f8f71ecf0d7292a63d9486f94e5180", null ], - [ "sendSelectInputEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_input_controller.html#a973241ac912a18b142d236dda7f80e97", null ] - ] ], - [ "KeypadController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_keypad_controller.html", [ - [ "onKeystroke", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_keypad_controller.html#ab24b4858dcc69145a367e964c2ae7961", null ] - ] ], - [ "LockController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_lock_controller.html", [ - [ "onLockState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_lock_controller.html#aee42cc397234a454fd353ca6bc12a859", null ], - [ "sendLockStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_lock_controller.html#a8fb3fec204da21e69d05f89a9ecb4739", null ] - ] ], - [ "MediaController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_media_controller.html", [ - [ "onMediaControl", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_media_controller.html#afc2620621377fff928737b5a8a537020", null ], - [ "sendMediaControlEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_media_controller.html#a7af593cbf79d38f6b90efb5afee45077", null ] - ] ], - [ "ModeController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html", [ - [ "onSetMode", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html#a6b15ba168b3a673b98da43ac5e4ef76c", null ], - [ "onSetMode", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html#ada087c948c3ab923bdb7818daa6b2b79", null ], - [ "sendModeEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html#a7c84d5c26f2ded88e4941313015f7f4c", null ], - [ "sendModeEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html#a41f8465e89d147c08ab8cbc6839d34da", null ] - ] ], - [ "MotionSensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_motion_sensor.html", [ - [ "sendMotionEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_motion_sensor.html#a9be024aa2bb70f0146a02dd1b79d3faa", null ] - ] ], - [ "MuteController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mute_controller.html", [ - [ "onMute", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mute_controller.html#ab5fc79cc8903c3ccc1c106abf61d7cfd", null ], - [ "sendMuteEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mute_controller.html#a4717d892b64a14052712152924bd5b29", null ] - ] ], - [ "PercentageController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_percentage_controller.html", [ - [ "onAdjustPercentage", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_percentage_controller.html#a77ac70c4880e38dae4f640dceaeb2816", null ], - [ "onSetPercentage", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_percentage_controller.html#aeef432df118679c689ccd8a48d47dc3d", null ], - [ "sendSetPercentageEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_percentage_controller.html#adf688c12e451e52b05670f150bdabcc8", null ] - ] ], - [ "PowerLevelController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html", [ - [ "onAdjustPowerLevel", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html#a13b10bdb1844babe4de320fff9172d96", null ], - [ "onPowerLevel", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html#a0685d34694badb4442fed6b69b69b366", null ], - [ "sendPowerLevelEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html#a2f1f88c7b4d9503bfcfe5557c5e55ed4", null ] - ] ], - [ "PowerSensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_sensor.html", [ - [ "sendPowerSensorEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_sensor.html#aec04692842ae1953973503f6be6d9afc", null ] - ] ], - [ "PowerStateController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", [ - [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html#a32f3257da431a1035f23a265ff0cc4cf", null ], - [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html#acfd5f3a30933ace93751bd823630cded", null ] - ] ], - [ "PushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html#a04266791a4b23e9614b8773edb5f67b6", null ] - ] ], - [ "RangeController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html", [ - [ "onAdjustRangeValue", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html#ae85696d55112ae7343f9807faee6e064", null ], - [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html#a6d6d8070b49c8b5272460836a1120b33", null ], - [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html#a94adbcdf6ce61cb6552a5f9915e705ae", null ], - [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html#aaf84aa417e2246843a27e819898e64b5", null ], - [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html#a1d726751c416fe6dd408e5dd19f6b53b", null ] - ] ], - [ "TemperatureSensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_temperature_sensor.html", [ - [ "sendTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_temperature_sensor.html#a75956fe7aff6e595a9b57519316ff789", null ] - ] ], - [ "ThermostatController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html", [ - [ "onAdjustTargetTemperature", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html#ac51f6fecfdf4c7bc8e0712e2da47bbf4", null ], - [ "onTargetTemperature", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html#a1c73725f1f3fbb1c5b72208aae5c2bf2", null ], - [ "onThermostatMode", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html#a2ef31536973b20815dd6c80a28e19c9f", null ], - [ "sendTargetTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html#ab8b7fdd977a0a38413f2279b50274890", null ], - [ "sendThermostatModeEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html#ae7273cd094f64a93494ae99501fc83e8", null ] - ] ], - [ "ToggleController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_toggle_controller.html", [ - [ "onToggleState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_toggle_controller.html#a7ccd28a4f20922847d0461649af5572d", null ], - [ "sendToggleStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_toggle_controller.html#a7fcc5084fea488e5b5e95f5ad7015a0f", null ] - ] ], - [ "VolumeController", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html", [ - [ "onAdjustVolume", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html#a2c868c87f96e3924c8b309e1bcfb507e", null ], - [ "onSetVolume", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html#a5db8c85f222debbece54c794015f9402", null ], - [ "sendVolumeEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html#aa2d3dbea5b07e4c5f39d3d20aa2167a4", null ] + [ "AirQualitySensor< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.html", [ + [ "sendAirQualityEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.html#a733195bdc5b15c858e4e890847b3a0d5", null ] + ] ], + [ "BrightnessController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html", [ + [ "onAdjustBrightness", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html#a0633e5fa2981189f4a093bab00a8c7f1", null ], + [ "onBrightness", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html#abbaab3067b1fcdcc5928451b818a4420", null ], + [ "sendBrightnessEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html#a2a96c414210f61de3ce53a4ca8c963b3", null ] + ] ], + [ "ChannelController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html", [ + [ "onChangeChannel", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html#a92f3b83744b5bb82d32628eef39c1eb9", null ], + [ "onChangeChannelNumber", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html#afd8aee20590bfadec181c6ee515125ec", null ], + [ "onSkipChannels", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html#ab1123d03d471fad4896eb2960ed41855", null ], + [ "sendChangeChannelEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html#aff5839c3020c3006af1a2a8c37cc858e", null ] + ] ], + [ "ColorController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html", [ + [ "onColor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html#a059ff103149869b7c49cdb8911875b7b", null ], + [ "sendColorEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html#a3599a6d00eb0f9127a7c1188885c5bc0", null ] + ] ], + [ "ColorTemperatureController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html", [ + [ "onColorTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html#a8535c44fd2517ed09ebe6a203cc25b67", null ], + [ "onDecreaseColorTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html#a7468976e7fffeee14cc869b7236cbb50", null ], + [ "onIncreaseColorTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html#a7ea9fd9861a5668a41d06267bfbec82a", null ], + [ "sendColorTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html#a0f90d7f5a5b365116f97beca7630ccc9", null ] + ] ], + [ "ContactSensor< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.html", [ + [ "sendContactEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.html#a452a4cfa3177d8d8d31c5919e9ccbb19", null ] + ] ], + [ "Doorbell< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.html", [ + [ "sendDoorbellEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.html#a168f5a4ddcbf381fd548bf10ee05b272", null ] + ] ], + [ "EqualizerController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html", [ + [ "onAdjustBands", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html#a41a5c1506545c44c2408054a8675c7a8", null ], + [ "onResetBands", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html#aa6c3aabc2b442d82ac5456ccaac3f60d", null ], + [ "onSetBands", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html#a4aaa7a29394560be7537a86b0304d199", null ], + [ "sendBandsEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html#a4ad5674e36d96a73147388251b794c82", null ] + ] ], + [ "InputController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html", [ + [ "onSelectInput", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html#a18f8f71ecf0d7292a63d9486f94e5180", null ], + [ "sendSelectInputEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html#a973241ac912a18b142d236dda7f80e97", null ] + ] ], + [ "KeypadController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller.html", [ + [ "onKeystroke", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller.html#ab24b4858dcc69145a367e964c2ae7961", null ] + ] ], + [ "LockController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html", [ + [ "onLockState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html#aee42cc397234a454fd353ca6bc12a859", null ], + [ "sendLockStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html#a8fb3fec204da21e69d05f89a9ecb4739", null ] + ] ], + [ "MediaController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html", [ + [ "onMediaControl", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html#afc2620621377fff928737b5a8a537020", null ], + [ "sendMediaControlEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html#a7af593cbf79d38f6b90efb5afee45077", null ] + ] ], + [ "ModeController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html", [ + [ "onSetMode", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html#a6b15ba168b3a673b98da43ac5e4ef76c", null ], + [ "onSetMode", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html#ada087c948c3ab923bdb7818daa6b2b79", null ], + [ "sendModeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html#a7c84d5c26f2ded88e4941313015f7f4c", null ], + [ "sendModeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html#a41f8465e89d147c08ab8cbc6839d34da", null ] + ] ], + [ "MotionSensor< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.html", [ + [ "sendMotionEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.html#a9be024aa2bb70f0146a02dd1b79d3faa", null ] + ] ], + [ "MuteController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html", [ + [ "onMute", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html#ab5fc79cc8903c3ccc1c106abf61d7cfd", null ], + [ "sendMuteEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html#a4717d892b64a14052712152924bd5b29", null ] + ] ], + [ "PercentageController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html", [ + [ "onAdjustPercentage", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html#a77ac70c4880e38dae4f640dceaeb2816", null ], + [ "onSetPercentage", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html#aeef432df118679c689ccd8a48d47dc3d", null ], + [ "sendSetPercentageEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html#adf688c12e451e52b05670f150bdabcc8", null ] + ] ], + [ "PowerLevelController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html", [ + [ "onAdjustPowerLevel", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html#a13b10bdb1844babe4de320fff9172d96", null ], + [ "onPowerLevel", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html#a0685d34694badb4442fed6b69b69b366", null ], + [ "sendPowerLevelEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html#a2f1f88c7b4d9503bfcfe5557c5e55ed4", null ] + ] ], + [ "PowerSensor< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.html", [ + [ "sendPowerSensorEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.html#aec04692842ae1953973503f6be6d9afc", null ] + ] ], + [ "PowerStateController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html", [ + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html#acfd5f3a30933ace93751bd823630cded", null ] + ] ], + [ "PushNotification< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html#a04266791a4b23e9614b8773edb5f67b6", null ] + ] ], + [ "RangeController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html", [ + [ "onAdjustRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#ae85696d55112ae7343f9807faee6e064", null ], + [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#a6d6d8070b49c8b5272460836a1120b33", null ], + [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#a94adbcdf6ce61cb6552a5f9915e705ae", null ], + [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#aaf84aa417e2246843a27e819898e64b5", null ], + [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#a1d726751c416fe6dd408e5dd19f6b53b", null ] + ] ], + [ "TemperatureSensor< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html", [ + [ "sendTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html#a75956fe7aff6e595a9b57519316ff789", null ] + ] ], + [ "ThermostatController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html", [ + [ "onAdjustTargetTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#ac51f6fecfdf4c7bc8e0712e2da47bbf4", null ], + [ "onTargetTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#a1c73725f1f3fbb1c5b72208aae5c2bf2", null ], + [ "onThermostatMode", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#a2ef31536973b20815dd6c80a28e19c9f", null ], + [ "sendTargetTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#ab8b7fdd977a0a38413f2279b50274890", null ], + [ "sendThermostatModeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#ae7273cd094f64a93494ae99501fc83e8", null ] + ] ], + [ "ToggleController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.html", [ + [ "onToggleState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.html#a7ccd28a4f20922847d0461649af5572d", null ], + [ "sendToggleStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.html#a7fcc5084fea488e5b5e95f5ad7015a0f", null ] + ] ], + [ "VolumeController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html", [ + [ "onAdjustVolume", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html#a2c868c87f96e3924c8b309e1bcfb507e", null ], + [ "onSetVolume", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html#a5db8c85f222debbece54c794015f9402", null ], + [ "sendVolumeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html#aa2d3dbea5b07e4c5f39d3d20aa2167a4", null ] ] ] ]; \ No newline at end of file diff --git a/docs/group___devices.html b/docs/group___devices.html index 7fcd466..486ff03 100644 --- a/docs/group___devices.html +++ b/docs/group___devices.html @@ -1,9 +1,9 @@ - + - - + + SinricPro Library: Devices @@ -23,8 +23,8 @@
- - + @@ -33,21 +33,22 @@
+
SinricPro Library
- + +/* @license-end */ +
@@ -61,7 +62,7 @@
@@ -75,80 +76,86 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Devices
+
Devices

Available devices. More...

- - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +

+

Classes

class  SinricProAirQualitySensor
 Device to report air quality events. More...
class  SinricProAirQualitySensor
 Device to report air quality events. More...
 
class  SinricProBlinds
 Device to control interior blinds. More...
class  SinricProBlinds
 Device to control interior blinds. More...
 
class  SinricProCamera
 Camera suporting basic on / off command. More...
class  SinricProCamera
 Camera suporting basic on / off command. More...
 
class  SinricProContactsensor
 Device to report contact sensor events. More...
class  SinricProContactsensor
 Device to report contact sensor events. More...
 
class  SinricProDimSwitch
 Device which supports on / off and dimming commands. More...
class  SinricProDimSwitch
 Device which supports on / off and dimming commands. More...
 
class  SinricProDoorbell
 Device to report doorbell events. More...
class  SinricProDoorbell
 Device to report doorbell events. More...
 
class  SinricProFan
 Device to turn on / off a fan and change it's speed by using powerlevel. More...
class  SinricProFan
 Device to turn on / off a fan and change it's speed by using powerlevel. More...
 
class  SinricProFanUS
 Device to control a fan with on / off commands and its speed by a range value. More...
class  SinricProFanUS
 Device to control a fan with on / off commands and its speed by a range value. More...
 
class  SinricProGarageDoor
 Device to control a garage door. More...
class  SinricProGarageDoor
 Device to control a garage door. More...
 
class  SinricProLight
 Device to control a light. More...
class  SinricProLight
 Device to control a light. More...
 
class  SinricProLock
 Device to control a smart lock. More...
class  SinricProLock
 Device to control a smart lock. More...
 
class  SinricProMotionsensor
 Device to report motion detection events. More...
class  SinricProMotionsensor
 Device to report motion detection events. More...
 
class  SinricProPowerSensor
 Device to report power usage. More...
class  SinricProPowerSensor
 Device to report power usage. More...
 
class  SinricProSpeaker
 Device to control a smart speaker. More...
class  SinricProSpeaker
 Device to control a smart speaker. More...
 
class  SinricProSwitch
 Device suporting basic on / off command. More...
class  SinricProSwitch
 Device suporting basic on / off command. More...
 
class  SinricProTemperaturesensor
 Device to report actual temperature and humidity. More...
class  SinricProTemperaturesensor
 Device to report actual temperature and humidity. More...
 
class  SinricProThermostat
 Device to control Thermostat. More...
class  SinricProThermostat
 Device to control Thermostat. More...
 
class  SinricProTV
 Device to control a TV. More...
class  SinricProTV
 Device to control a TV. More...
 
class  SinricProWindowAC
 Device to control Window Air Conditioner. More...
class  SinricProWindowAC
 Device to control Window Air Conditioner. More...
 

Detailed Description

@@ -158,7 +165,7 @@ diff --git a/docs/group___devices.js b/docs/group___devices.js index cfdeb86..b44e788 100644 --- a/docs/group___devices.js +++ b/docs/group___devices.js @@ -1,175 +1,165 @@ var group___devices = [ - [ "SinricProAirQualitySensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_air_quality_sensor.html", [ - [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_air_quality_sensor.html#a32f3257da431a1035f23a265ff0cc4cf", null ], - [ "sendAirQualityEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_air_quality_sensor.html#a733195bdc5b15c858e4e890847b3a0d5", null ], - [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_air_quality_sensor.html#acfd5f3a30933ace93751bd823630cded", null ], - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_air_quality_sensor.html#a04266791a4b23e9614b8773edb5f67b6", null ] - ] ], - [ "SinricProBlinds", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html", [ - [ "onAdjustRangeValue", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html#ae85696d55112ae7343f9807faee6e064", null ], - [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html#a32f3257da431a1035f23a265ff0cc4cf", null ], - [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html#a6d6d8070b49c8b5272460836a1120b33", null ], - [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html#a94adbcdf6ce61cb6552a5f9915e705ae", null ], - [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html#acfd5f3a30933ace93751bd823630cded", null ], - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html#a04266791a4b23e9614b8773edb5f67b6", null ], - [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html#aaf84aa417e2246843a27e819898e64b5", null ], - [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html#a1d726751c416fe6dd408e5dd19f6b53b", null ] - ] ], - [ "SinricProCamera", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_camera.html", [ - [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_camera.html#a32f3257da431a1035f23a265ff0cc4cf", null ], - [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_camera.html#acfd5f3a30933ace93751bd823630cded", null ], - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_camera.html#a04266791a4b23e9614b8773edb5f67b6", null ] - ] ], - [ "SinricProContactsensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_contactsensor.html", [ - [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_contactsensor.html#a32f3257da431a1035f23a265ff0cc4cf", null ], - [ "sendContactEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_contactsensor.html#a452a4cfa3177d8d8d31c5919e9ccbb19", null ], - [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_contactsensor.html#acfd5f3a30933ace93751bd823630cded", null ], - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_contactsensor.html#a04266791a4b23e9614b8773edb5f67b6", null ] - ] ], - [ "SinricProDimSwitch", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html", [ - [ "onAdjustPowerLevel", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html#a13b10bdb1844babe4de320fff9172d96", null ], - [ "onPowerLevel", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html#a0685d34694badb4442fed6b69b69b366", null ], - [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html#a32f3257da431a1035f23a265ff0cc4cf", null ], - [ "sendPowerLevelEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html#a2f1f88c7b4d9503bfcfe5557c5e55ed4", null ], - [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html#acfd5f3a30933ace93751bd823630cded", null ], - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html#a04266791a4b23e9614b8773edb5f67b6", null ] - ] ], - [ "SinricProDoorbell", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_doorbell.html", [ - [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_doorbell.html#a32f3257da431a1035f23a265ff0cc4cf", null ], - [ "sendDoorbellEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_doorbell.html#a168f5a4ddcbf381fd548bf10ee05b272", null ], - [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_doorbell.html#acfd5f3a30933ace93751bd823630cded", null ], - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_doorbell.html#a04266791a4b23e9614b8773edb5f67b6", null ] - ] ], - [ "SinricProFan", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html", [ - [ "onAdjustPowerLevel", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html#a13b10bdb1844babe4de320fff9172d96", null ], - [ "onPowerLevel", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html#a0685d34694badb4442fed6b69b69b366", null ], - [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html#a32f3257da431a1035f23a265ff0cc4cf", null ], - [ "sendPowerLevelEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html#a2f1f88c7b4d9503bfcfe5557c5e55ed4", null ], - [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html#acfd5f3a30933ace93751bd823630cded", null ], - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html#a04266791a4b23e9614b8773edb5f67b6", null ] - ] ], - [ "SinricProFanUS", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html", [ - [ "onAdjustRangeValue", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html#ae85696d55112ae7343f9807faee6e064", null ], - [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html#a32f3257da431a1035f23a265ff0cc4cf", null ], - [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html#a6d6d8070b49c8b5272460836a1120b33", null ], - [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html#a94adbcdf6ce61cb6552a5f9915e705ae", null ], - [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html#acfd5f3a30933ace93751bd823630cded", null ], - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html#a04266791a4b23e9614b8773edb5f67b6", null ], - [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html#aaf84aa417e2246843a27e819898e64b5", null ], - [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html#a1d726751c416fe6dd408e5dd19f6b53b", null ] - ] ], - [ "SinricProGarageDoor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_garage_door.html", [ - [ "onDoorState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_garage_door.html#a6b536531ab89b39f1a48cb107e22185e", null ], - [ "sendDoorStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_garage_door.html#a375cda2b0bc05e1a66e3bc29d059d9a7", null ], - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_garage_door.html#a04266791a4b23e9614b8773edb5f67b6", null ] - ] ], - [ "SinricProLight", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html", [ - [ "onAdjustBrightness", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a0633e5fa2981189f4a093bab00a8c7f1", null ], - [ "onBrightness", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#abbaab3067b1fcdcc5928451b818a4420", null ], - [ "onColor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a059ff103149869b7c49cdb8911875b7b", null ], - [ "onColorTemperature", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a8535c44fd2517ed09ebe6a203cc25b67", null ], - [ "onDecreaseColorTemperature", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a7468976e7fffeee14cc869b7236cbb50", null ], - [ "onIncreaseColorTemperature", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a7ea9fd9861a5668a41d06267bfbec82a", null ], - [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a32f3257da431a1035f23a265ff0cc4cf", null ], - [ "sendBrightnessEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a2a96c414210f61de3ce53a4ca8c963b3", null ], - [ "sendColorEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a3599a6d00eb0f9127a7c1188885c5bc0", null ], - [ "sendColorTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a0f90d7f5a5b365116f97beca7630ccc9", null ], - [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#acfd5f3a30933ace93751bd823630cded", null ], - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a04266791a4b23e9614b8773edb5f67b6", null ] - ] ], - [ "SinricProLock", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_lock.html", [ - [ "onLockState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_lock.html#aee42cc397234a454fd353ca6bc12a859", null ], - [ "sendLockStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_lock.html#a8fb3fec204da21e69d05f89a9ecb4739", null ], - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_lock.html#a04266791a4b23e9614b8773edb5f67b6", null ] - ] ], - [ "SinricProMotionsensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_motionsensor.html", [ - [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_motionsensor.html#a32f3257da431a1035f23a265ff0cc4cf", null ], - [ "sendMotionEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_motionsensor.html#a9be024aa2bb70f0146a02dd1b79d3faa", null ], - [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_motionsensor.html#acfd5f3a30933ace93751bd823630cded", null ], - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_motionsensor.html#a04266791a4b23e9614b8773edb5f67b6", null ] - ] ], - [ "SinricProPowerSensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_power_sensor.html", [ - [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_power_sensor.html#a32f3257da431a1035f23a265ff0cc4cf", null ], - [ "sendPowerSensorEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_power_sensor.html#aec04692842ae1953973503f6be6d9afc", null ], - [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_power_sensor.html#acfd5f3a30933ace93751bd823630cded", null ], - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_power_sensor.html#a04266791a4b23e9614b8773edb5f67b6", null ] - ] ], - [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html", [ - [ "onAdjustBands", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a41a5c1506545c44c2408054a8675c7a8", null ], - [ "onAdjustVolume", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a2c868c87f96e3924c8b309e1bcfb507e", null ], - [ "onMediaControl", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#afc2620621377fff928737b5a8a537020", null ], - [ "onMute", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#ab5fc79cc8903c3ccc1c106abf61d7cfd", null ], - [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a32f3257da431a1035f23a265ff0cc4cf", null ], - [ "onResetBands", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#aa6c3aabc2b442d82ac5456ccaac3f60d", null ], - [ "onSelectInput", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a18f8f71ecf0d7292a63d9486f94e5180", null ], - [ "onSetBands", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a4aaa7a29394560be7537a86b0304d199", null ], - [ "onSetMode", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a6b15ba168b3a673b98da43ac5e4ef76c", null ], - [ "onSetMode", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#ada087c948c3ab923bdb7818daa6b2b79", null ], - [ "onSetVolume", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a5db8c85f222debbece54c794015f9402", null ], - [ "sendBandsEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a4ad5674e36d96a73147388251b794c82", null ], - [ "sendMediaControlEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a7af593cbf79d38f6b90efb5afee45077", null ], - [ "sendModeEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a7c84d5c26f2ded88e4941313015f7f4c", null ], - [ "sendModeEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a41f8465e89d147c08ab8cbc6839d34da", null ], - [ "sendMuteEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a4717d892b64a14052712152924bd5b29", null ], - [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#acfd5f3a30933ace93751bd823630cded", null ], - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a04266791a4b23e9614b8773edb5f67b6", null ], - [ "sendSelectInputEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a973241ac912a18b142d236dda7f80e97", null ], - [ "sendVolumeEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#aa2d3dbea5b07e4c5f39d3d20aa2167a4", null ] - ] ], - [ "SinricProSwitch", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_switch.html", [ - [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_switch.html#a32f3257da431a1035f23a265ff0cc4cf", null ], - [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_switch.html#acfd5f3a30933ace93751bd823630cded", null ], - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_switch.html#a04266791a4b23e9614b8773edb5f67b6", null ] - ] ], - [ "SinricProTemperaturesensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_temperaturesensor.html", [ - [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_temperaturesensor.html#a32f3257da431a1035f23a265ff0cc4cf", null ], - [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_temperaturesensor.html#acfd5f3a30933ace93751bd823630cded", null ], - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_temperaturesensor.html#a04266791a4b23e9614b8773edb5f67b6", null ], - [ "sendTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_temperaturesensor.html#a75956fe7aff6e595a9b57519316ff789", null ] - ] ], - [ "SinricProThermostat", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html", [ - [ "onAdjustTargetTemperature", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html#ac51f6fecfdf4c7bc8e0712e2da47bbf4", null ], - [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html#a32f3257da431a1035f23a265ff0cc4cf", null ], - [ "onTargetTemperature", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html#a1c73725f1f3fbb1c5b72208aae5c2bf2", null ], - [ "onThermostatMode", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html#a2ef31536973b20815dd6c80a28e19c9f", null ], - [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html#acfd5f3a30933ace93751bd823630cded", null ], - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html#a04266791a4b23e9614b8773edb5f67b6", null ], - [ "sendTargetTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html#ab8b7fdd977a0a38413f2279b50274890", null ], - [ "sendTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html#a75956fe7aff6e595a9b57519316ff789", null ], - [ "sendThermostatModeEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html#ae7273cd094f64a93494ae99501fc83e8", null ] - ] ], - [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html", [ - [ "onAdjustVolume", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#a2c868c87f96e3924c8b309e1bcfb507e", null ], - [ "onChangeChannel", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#a92f3b83744b5bb82d32628eef39c1eb9", null ], - [ "onChangeChannelNumber", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#afd8aee20590bfadec181c6ee515125ec", null ], - [ "onMediaControl", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#afc2620621377fff928737b5a8a537020", null ], - [ "onMute", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#ab5fc79cc8903c3ccc1c106abf61d7cfd", null ], - [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#a32f3257da431a1035f23a265ff0cc4cf", null ], - [ "onSelectInput", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#a18f8f71ecf0d7292a63d9486f94e5180", null ], - [ "onSetVolume", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#a5db8c85f222debbece54c794015f9402", null ], - [ "onSkipChannels", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#ab1123d03d471fad4896eb2960ed41855", null ], - [ "sendChangeChannelEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#aff5839c3020c3006af1a2a8c37cc858e", null ], - [ "sendMediaControlEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#a7af593cbf79d38f6b90efb5afee45077", null ], - [ "sendMuteEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#a4717d892b64a14052712152924bd5b29", null ], - [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#acfd5f3a30933ace93751bd823630cded", null ], - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#a04266791a4b23e9614b8773edb5f67b6", null ], - [ "sendSelectInputEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#a973241ac912a18b142d236dda7f80e97", null ], - [ "sendVolumeEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#aa2d3dbea5b07e4c5f39d3d20aa2167a4", null ] - ] ], - [ "SinricProWindowAC", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html", [ - [ "onAdjustRangeValue", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#ae85696d55112ae7343f9807faee6e064", null ], - [ "onAdjustTargetTemperature", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#ac51f6fecfdf4c7bc8e0712e2da47bbf4", null ], - [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#a32f3257da431a1035f23a265ff0cc4cf", null ], - [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#a6d6d8070b49c8b5272460836a1120b33", null ], - [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#a94adbcdf6ce61cb6552a5f9915e705ae", null ], - [ "onTargetTemperature", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#a1c73725f1f3fbb1c5b72208aae5c2bf2", null ], - [ "onThermostatMode", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#a2ef31536973b20815dd6c80a28e19c9f", null ], - [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#acfd5f3a30933ace93751bd823630cded", null ], - [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#a04266791a4b23e9614b8773edb5f67b6", null ], - [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#aaf84aa417e2246843a27e819898e64b5", null ], - [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#a1d726751c416fe6dd408e5dd19f6b53b", null ], - [ "sendTargetTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#ab8b7fdd977a0a38413f2279b50274890", null ], - [ "sendThermostatModeEvent", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#ae7273cd094f64a93494ae99501fc83e8", null ] + [ "SinricProAirQualitySensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.html", [ + [ "sendAirQualityEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.html#a733195bdc5b15c858e4e890847b3a0d5", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.html#a04266791a4b23e9614b8773edb5f67b6", null ] + ] ], + [ "SinricProBlinds", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html", [ + [ "onAdjustRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#ae85696d55112ae7343f9807faee6e064", null ], + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#a6d6d8070b49c8b5272460836a1120b33", null ], + [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#a94adbcdf6ce61cb6552a5f9915e705ae", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#a04266791a4b23e9614b8773edb5f67b6", null ], + [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#aaf84aa417e2246843a27e819898e64b5", null ], + [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#a1d726751c416fe6dd408e5dd19f6b53b", null ] + ] ], + [ "SinricProCamera", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html", [ + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html#a04266791a4b23e9614b8773edb5f67b6", null ] + ] ], + [ "SinricProContactsensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.html", [ + [ "sendContactEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.html#a452a4cfa3177d8d8d31c5919e9ccbb19", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.html#a04266791a4b23e9614b8773edb5f67b6", null ] + ] ], + [ "SinricProDimSwitch", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html", [ + [ "onAdjustPowerLevel", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html#a13b10bdb1844babe4de320fff9172d96", null ], + [ "onPowerLevel", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html#a0685d34694badb4442fed6b69b69b366", null ], + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "sendPowerLevelEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html#a2f1f88c7b4d9503bfcfe5557c5e55ed4", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html#a04266791a4b23e9614b8773edb5f67b6", null ] + ] ], + [ "SinricProDoorbell", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html", [ + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "sendDoorbellEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html#a168f5a4ddcbf381fd548bf10ee05b272", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html#a04266791a4b23e9614b8773edb5f67b6", null ] + ] ], + [ "SinricProFan", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html", [ + [ "onAdjustPowerLevel", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html#a13b10bdb1844babe4de320fff9172d96", null ], + [ "onPowerLevel", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html#a0685d34694badb4442fed6b69b69b366", null ], + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "sendPowerLevelEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html#a2f1f88c7b4d9503bfcfe5557c5e55ed4", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html#a04266791a4b23e9614b8773edb5f67b6", null ] + ] ], + [ "SinricProFanUS", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html", [ + [ "onAdjustRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#ae85696d55112ae7343f9807faee6e064", null ], + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#a6d6d8070b49c8b5272460836a1120b33", null ], + [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#a94adbcdf6ce61cb6552a5f9915e705ae", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#a04266791a4b23e9614b8773edb5f67b6", null ], + [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#aaf84aa417e2246843a27e819898e64b5", null ], + [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#a1d726751c416fe6dd408e5dd19f6b53b", null ] + ] ], + [ "SinricProGarageDoor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html", [ + [ "onDoorState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html#a6b536531ab89b39f1a48cb107e22185e", null ], + [ "sendDoorStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html#a375cda2b0bc05e1a66e3bc29d059d9a7", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html#a04266791a4b23e9614b8773edb5f67b6", null ] + ] ], + [ "SinricProLight", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html", [ + [ "onAdjustBrightness", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a0633e5fa2981189f4a093bab00a8c7f1", null ], + [ "onBrightness", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#abbaab3067b1fcdcc5928451b818a4420", null ], + [ "onColor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a059ff103149869b7c49cdb8911875b7b", null ], + [ "onColorTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a8535c44fd2517ed09ebe6a203cc25b67", null ], + [ "onDecreaseColorTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a7468976e7fffeee14cc869b7236cbb50", null ], + [ "onIncreaseColorTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a7ea9fd9861a5668a41d06267bfbec82a", null ], + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "sendBrightnessEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a2a96c414210f61de3ce53a4ca8c963b3", null ], + [ "sendColorEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a3599a6d00eb0f9127a7c1188885c5bc0", null ], + [ "sendColorTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a0f90d7f5a5b365116f97beca7630ccc9", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a04266791a4b23e9614b8773edb5f67b6", null ] + ] ], + [ "SinricProLock", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html", [ + [ "onLockState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html#aee42cc397234a454fd353ca6bc12a859", null ], + [ "sendLockStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html#a8fb3fec204da21e69d05f89a9ecb4739", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html#a04266791a4b23e9614b8773edb5f67b6", null ] + ] ], + [ "SinricProMotionsensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.html", [ + [ "sendMotionEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.html#a9be024aa2bb70f0146a02dd1b79d3faa", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.html#a04266791a4b23e9614b8773edb5f67b6", null ] + ] ], + [ "SinricProPowerSensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.html", [ + [ "sendPowerSensorEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.html#aec04692842ae1953973503f6be6d9afc", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.html#a04266791a4b23e9614b8773edb5f67b6", null ] + ] ], + [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html", [ + [ "onAdjustBands", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a41a5c1506545c44c2408054a8675c7a8", null ], + [ "onAdjustVolume", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a2c868c87f96e3924c8b309e1bcfb507e", null ], + [ "onMediaControl", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#afc2620621377fff928737b5a8a537020", null ], + [ "onMute", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#ab5fc79cc8903c3ccc1c106abf61d7cfd", null ], + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "onResetBands", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#aa6c3aabc2b442d82ac5456ccaac3f60d", null ], + [ "onSelectInput", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a18f8f71ecf0d7292a63d9486f94e5180", null ], + [ "onSetBands", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a4aaa7a29394560be7537a86b0304d199", null ], + [ "onSetMode", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a6b15ba168b3a673b98da43ac5e4ef76c", null ], + [ "onSetMode", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#ada087c948c3ab923bdb7818daa6b2b79", null ], + [ "onSetVolume", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a5db8c85f222debbece54c794015f9402", null ], + [ "sendBandsEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a4ad5674e36d96a73147388251b794c82", null ], + [ "sendMediaControlEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a7af593cbf79d38f6b90efb5afee45077", null ], + [ "sendModeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a7c84d5c26f2ded88e4941313015f7f4c", null ], + [ "sendModeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a41f8465e89d147c08ab8cbc6839d34da", null ], + [ "sendMuteEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a4717d892b64a14052712152924bd5b29", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a04266791a4b23e9614b8773edb5f67b6", null ], + [ "sendSelectInputEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a973241ac912a18b142d236dda7f80e97", null ], + [ "sendVolumeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#aa2d3dbea5b07e4c5f39d3d20aa2167a4", null ] + ] ], + [ "SinricProSwitch", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html", [ + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html#a04266791a4b23e9614b8773edb5f67b6", null ] + ] ], + [ "SinricProTemperaturesensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.html", [ + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.html#a04266791a4b23e9614b8773edb5f67b6", null ], + [ "sendTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.html#a75956fe7aff6e595a9b57519316ff789", null ] + ] ], + [ "SinricProThermostat", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html", [ + [ "onAdjustTargetTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#ac51f6fecfdf4c7bc8e0712e2da47bbf4", null ], + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "onTargetTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#a1c73725f1f3fbb1c5b72208aae5c2bf2", null ], + [ "onThermostatMode", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#a2ef31536973b20815dd6c80a28e19c9f", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#a04266791a4b23e9614b8773edb5f67b6", null ], + [ "sendTargetTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#ab8b7fdd977a0a38413f2279b50274890", null ], + [ "sendTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#a75956fe7aff6e595a9b57519316ff789", null ], + [ "sendThermostatModeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#ae7273cd094f64a93494ae99501fc83e8", null ] + ] ], + [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html", [ + [ "onAdjustVolume", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a2c868c87f96e3924c8b309e1bcfb507e", null ], + [ "onChangeChannel", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a92f3b83744b5bb82d32628eef39c1eb9", null ], + [ "onChangeChannelNumber", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#afd8aee20590bfadec181c6ee515125ec", null ], + [ "onMediaControl", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#afc2620621377fff928737b5a8a537020", null ], + [ "onMute", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#ab5fc79cc8903c3ccc1c106abf61d7cfd", null ], + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "onSelectInput", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a18f8f71ecf0d7292a63d9486f94e5180", null ], + [ "onSetVolume", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a5db8c85f222debbece54c794015f9402", null ], + [ "onSkipChannels", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#ab1123d03d471fad4896eb2960ed41855", null ], + [ "sendChangeChannelEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#aff5839c3020c3006af1a2a8c37cc858e", null ], + [ "sendMediaControlEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a7af593cbf79d38f6b90efb5afee45077", null ], + [ "sendMuteEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a4717d892b64a14052712152924bd5b29", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a04266791a4b23e9614b8773edb5f67b6", null ], + [ "sendSelectInputEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a973241ac912a18b142d236dda7f80e97", null ], + [ "sendVolumeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#aa2d3dbea5b07e4c5f39d3d20aa2167a4", null ] + ] ], + [ "SinricProWindowAC", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html", [ + [ "onAdjustRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#ae85696d55112ae7343f9807faee6e064", null ], + [ "onAdjustTargetTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#ac51f6fecfdf4c7bc8e0712e2da47bbf4", null ], + [ "onPowerState", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a32f3257da431a1035f23a265ff0cc4cf", null ], + [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a6d6d8070b49c8b5272460836a1120b33", null ], + [ "onRangeValue", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a94adbcdf6ce61cb6552a5f9915e705ae", null ], + [ "onTargetTemperature", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a1c73725f1f3fbb1c5b72208aae5c2bf2", null ], + [ "onThermostatMode", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a2ef31536973b20815dd6c80a28e19c9f", null ], + [ "sendPowerStateEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#acfd5f3a30933ace93751bd823630cded", null ], + [ "sendPushNotification", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a04266791a4b23e9614b8773edb5f67b6", null ], + [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#aaf84aa417e2246843a27e819898e64b5", null ], + [ "sendRangeValueEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a1d726751c416fe6dd408e5dd19f6b53b", null ], + [ "sendTargetTemperatureEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#ab8b7fdd977a0a38413f2279b50274890", null ], + [ "sendThermostatModeEvent", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#ae7273cd094f64a93494ae99501fc83e8", null ] ] ] ]; \ No newline at end of file diff --git a/docs/group___sinric_pro.html b/docs/group___sinric_pro.html index a6951a8..b23840e 100644 --- a/docs/group___sinric_pro.html +++ b/docs/group___sinric_pro.html @@ -1,9 +1,9 @@ - + - - + + SinricPro Library: SinricPro @@ -23,8 +23,8 @@
- - + @@ -33,21 +33,22 @@
+
SinricPro Library
- + +/* @license-end */ +
@@ -61,7 +62,7 @@
@@ -75,26 +76,32 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
SinricPro
+
SinricPro

Main instance of SinricProClass. More...

- - - + +

+

Classes

class  SinricProClass
 The main class of this library, handling communication between SinricPro Server and your devices. More...
class  SinricProClass
 The main class of this library, handling communication between SinricPro Server and your devices. More...
 

Detailed Description

@@ -104,7 +111,7 @@ diff --git a/docs/group___sinric_pro.js b/docs/group___sinric_pro.js index 0b12366..d9646fc 100644 --- a/docs/group___sinric_pro.js +++ b/docs/group___sinric_pro.js @@ -1,12 +1,12 @@ var group___sinric_pro = [ - [ "SinricProClass", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html", [ - [ "begin", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#a1b5b66fb0c539b9b5f5f58a135056c75", null ], - [ "getTimestamp", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#afb2be26eef972203404140612fa31326", null ], - [ "handle", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#a37c2d0658e498b1bf878f8a3d9a7c5b4", null ], - [ "onConnected", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#ac33a355adfc413d4ff36974d735115bd", null ], - [ "onDisconnected", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#a654bb017ca55b448d55bb36e0346f38a", null ], - [ "operator[]", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#a84a491d393b5c7c1433a2a9e62a58766", null ], - [ "restoreDeviceStates", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#a27a9bb7f1e8bde0f39398649493b6f93", null ] + [ "SinricProClass", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html", [ + [ "begin", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#a1b5b66fb0c539b9b5f5f58a135056c75", null ], + [ "getTimestamp", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#afb2be26eef972203404140612fa31326", null ], + [ "handle", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#a37c2d0658e498b1bf878f8a3d9a7c5b4", null ], + [ "onConnected", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#ac33a355adfc413d4ff36974d735115bd", null ], + [ "onDisconnected", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#a654bb017ca55b448d55bb36e0346f38a", null ], + [ "operator[]", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#ab68694b0983ae36c532cbd52adbb180d", null ], + [ "restoreDeviceStates", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#a27a9bb7f1e8bde0f39398649493b6f93", null ] ] ] ]; \ No newline at end of file diff --git a/docs/hierarchy.html b/docs/hierarchy.html index 0621465..11d9fe3 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -1,9 +1,9 @@ - + - - + + SinricPro Library: Class Hierarchy @@ -23,8 +23,8 @@
- - + @@ -33,21 +33,22 @@
+
SinricPro Library
- + +/* @license-end */ +
@@ -61,7 +62,7 @@
@@ -75,199 +76,195 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Class Hierarchy
+
Class Hierarchy

Go to the graphical class hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 12]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 CAirQualitySensor< T >AirQuality
 CAirQualitySensor< SinricProAirQualitySensor >
 CBrightnessController< T >BrightnessController
 CBrightnessController< SinricProLight >
 CChannelController< T >ChannelController
 CChannelController< SinricProTV >
 CColorController< T >ColorController
 CColorController< SinricProLight >
 CColorTemperatureController< T >ColorTemperatureController
 CColorTemperatureController< SinricProLight >
 CContactSensor< T >ContactSensor
 CContactSensor< SinricProContactsensor >
 CDoorbell< T >Dorbell
 CDoorbell< SinricProDoorbell >
 CDoorController< T >DoorController - only used for GarageDoor device and cannot used as capability for a custom device!
 CDoorController< SinricProGarageDoor >
 CEqualizerController< T >EqualizerController
 CEqualizerController< SinricProSpeaker >
 CInputController< T >InputController
 CInputController< SinricProSpeaker >
 CInputController< SinricProTV >
 CKeypadController< T >KeypadController
 CLockController< T >LockController
 CLockController< SinricProLock >
 CMediaController< T >MediaController
 CMediaController< SinricProSpeaker >
 CMediaController< SinricProTV >
 CModeController< T >ModeController
 CModeController< SinricProSpeaker >
 CMotionSensor< T >MotionSensor
 CMotionSensor< SinricProMotionsensor >
 CMuteController< T >MuteController
 CMuteController< SinricProSpeaker >
 CMuteController< SinricProTV >
 CPercentageController< T >PercentageController
 CPowerLevelController< T >PowerLevelController
 CPowerLevelController< SinricProDimSwitch >
 CPowerLevelController< SinricProFan >
 CPowerSensor< T >PowerSensor
 CPowerSensor< SinricProPowerSensor >
 CPowerStateController< T >PowerStateController
 CPowerStateController< SinricProAirQualitySensor >
 CPowerStateController< SinricProBlinds >
 CPowerStateController< SinricProCamera >
 CPowerStateController< SinricProContactsensor >
 CPowerStateController< SinricProDimSwitch >
 CPowerStateController< SinricProDoorbell >
 CPowerStateController< SinricProFan >
 CPowerStateController< SinricProFanUS >
 CPowerStateController< SinricProLight >
 CPowerStateController< SinricProMotionsensor >
 CPowerStateController< SinricProPowerSensor >
 CPowerStateController< SinricProSpeaker >
 CPowerStateController< SinricProSwitch >
 CPowerStateController< SinricProTemperaturesensor >
 CPowerStateController< SinricProThermostat >
 CPowerStateController< SinricProTV >
 CPowerStateController< SinricProWindowAC >
 CPushNotification< T >PushNotification
 CPushNotification< SinricProAirQualitySensor >
 CPushNotification< SinricProBlinds >
 CPushNotification< SinricProCamera >
 CPushNotification< SinricProContactsensor >
 CPushNotification< SinricProDimSwitch >
 CPushNotification< SinricProDoorbell >
 CPushNotification< SinricProFan >
 CPushNotification< SinricProFanUS >
 CPushNotification< SinricProGarageDoor >
 CPushNotification< SinricProLight >
 CPushNotification< SinricProLock >
 CPushNotification< SinricProMotionsensor >
 CPushNotification< SinricProPowerSensor >
 CPushNotification< SinricProSpeaker >
 CPushNotification< SinricProSwitch >
 CPushNotification< SinricProTemperaturesensor >
 CPushNotification< SinricProThermostat >
 CPushNotification< SinricProTV >
 CPushNotification< SinricProWindowAC >
 CRangeController< T >RangeControllerFloatInt
 CRangeController< SinricProBlinds >
 CRangeController< SinricProFanUS >
 CRangeController< SinricProWindowAC >
 CSinricProClassThe main class of this library, handling communication between SinricPro Server and your devices
 CSinricProDeviceBase class for all device types
 CTemperatureSensor< T >TemperatureSensor
 CTemperatureSensor< SinricProTemperaturesensor >
 CTemperatureSensor< SinricProThermostat >
 CThermostatController< T >ThermostatController
 CThermostatController< SinricProThermostat >
 CThermostatController< SinricProWindowAC >
 CToggleController< T >ToggleController
 CVolumeController< T >VolumeController
 CVolumeController< SinricProSpeaker >
 CVolumeController< SinricProTV >
 CAirQualitySensor< T >AirQuality
 CAirQualitySensor< SinricProAirQualitySensor >
 CBrightnessController< T >BrightnessController
 CBrightnessController< SinricProLight >
 CChannelController< T >ChannelController
 CChannelController< SinricProTV >
 CColorController< T >ColorController
 CColorController< SinricProLight >
 CColorTemperatureController< T >ColorTemperatureController
 CColorTemperatureController< SinricProLight >
 CContactSensor< T >ContactSensor
 CContactSensor< SinricProContactsensor >
 CDoorbell< T >Dorbell
 CDoorbell< SinricProDoorbell >
 CDoorController< T >DoorController - only used for GarageDoor device and cannot used as capability for a custom device!
 CDoorController< SinricProGarageDoor >
 CEqualizerController< T >EqualizerController
 CEqualizerController< SinricProSpeaker >
 CInputController< T >InputController
 CInputController< SinricProSpeaker >
 CInputController< SinricProTV >
 CKeypadController< T >KeypadController
 CLockController< T >LockController
 CLockController< SinricProLock >
 CMediaController< T >MediaController
 CMediaController< SinricProSpeaker >
 CMediaController< SinricProTV >
 CModeController< T >ModeController
 CModeController< SinricProSpeaker >
 CMotionSensor< T >MotionSensor
 CMotionSensor< SinricProMotionsensor >
 CMuteController< T >MuteController
 CMuteController< SinricProSpeaker >
 CMuteController< SinricProTV >
 CPercentageController< T >PercentageController
 CPowerLevelController< T >PowerLevelController
 CPowerLevelController< SinricProDimSwitch >
 CPowerLevelController< SinricProFan >
 CPowerSensor< T >PowerSensor
 CPowerSensor< SinricProPowerSensor >
 CPowerStateController< T >PowerStateController
 CPowerStateController< SinricProBlinds >
 CPowerStateController< SinricProCamera >
 CPowerStateController< SinricProDimSwitch >
 CPowerStateController< SinricProDoorbell >
 CPowerStateController< SinricProFan >
 CPowerStateController< SinricProFanUS >
 CPowerStateController< SinricProLight >
 CPowerStateController< SinricProSpeaker >
 CPowerStateController< SinricProSwitch >
 CPowerStateController< SinricProThermostat >
 CPowerStateController< SinricProTV >
 CPowerStateController< SinricProWindowAC >
 CPushNotification< T >PushNotification
 CPushNotification< SinricProAirQualitySensor >
 CPushNotification< SinricProBlinds >
 CPushNotification< SinricProCamera >
 CPushNotification< SinricProContactsensor >
 CPushNotification< SinricProDimSwitch >
 CPushNotification< SinricProDoorbell >
 CPushNotification< SinricProFan >
 CPushNotification< SinricProFanUS >
 CPushNotification< SinricProGarageDoor >
 CPushNotification< SinricProLight >
 CPushNotification< SinricProLock >
 CPushNotification< SinricProMotionsensor >
 CPushNotification< SinricProPowerSensor >
 CPushNotification< SinricProSpeaker >
 CPushNotification< SinricProSwitch >
 CPushNotification< SinricProTemperaturesensor >
 CPushNotification< SinricProThermostat >
 CPushNotification< SinricProTV >
 CPushNotification< SinricProWindowAC >
 CRangeController< T >RangeControllerFloatInt
 CRangeController< SinricProBlinds >
 CRangeController< SinricProFanUS >
 CRangeController< SinricProWindowAC >
 CSinricProClassThe main class of this library, handling communication between SinricPro Server and your devices
 CSinricProDeviceBase class for all device types
 CTemperatureSensor< T >TemperatureSensor
 CTemperatureSensor< SinricProTemperaturesensor >
 CTemperatureSensor< SinricProThermostat >
 CThermostatController< T >ThermostatController
 CThermostatController< SinricProThermostat >
 CThermostatController< SinricProWindowAC >
 CToggleController< T >ToggleController
 CVolumeController< T >VolumeController
 CVolumeController< SinricProSpeaker >
 CVolumeController< SinricProTV >
@@ -275,7 +272,7 @@ diff --git a/docs/hierarchy.js b/docs/hierarchy.js index 5fa6d99..270e4df 100644 --- a/docs/hierarchy.js +++ b/docs/hierarchy.js @@ -1,249 +1,234 @@ var hierarchy = [ - [ "AirQualitySensor< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_air_quality_sensor.html", null ], - [ "AirQualitySensor< SinricProAirQualitySensor >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_air_quality_sensor.html", [ - [ "SinricProAirQualitySensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_air_quality_sensor.html", null ] + [ "AirQualitySensor< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.html", null ], + [ "AirQualitySensor< SinricProAirQualitySensor >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.html", [ + [ "SinricProAirQualitySensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.html", null ] ] ], - [ "BrightnessController< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_brightness_controller.html", null ], - [ "BrightnessController< SinricProLight >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_brightness_controller.html", [ - [ "SinricProLight", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html", null ] + [ "BrightnessController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html", null ], + [ "BrightnessController< SinricProLight >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html", [ + [ "SinricProLight", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html", null ] ] ], - [ "ChannelController< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html", null ], - [ "ChannelController< SinricProTV >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html", [ - [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html", null ] + [ "ChannelController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html", null ], + [ "ChannelController< SinricProTV >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html", [ + [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html", null ] ] ], - [ "ColorController< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_controller.html", null ], - [ "ColorController< SinricProLight >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_controller.html", [ - [ "SinricProLight", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html", null ] + [ "ColorController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html", null ], + [ "ColorController< SinricProLight >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html", [ + [ "SinricProLight", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html", null ] ] ], - [ "ColorTemperatureController< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html", null ], - [ "ColorTemperatureController< SinricProLight >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html", [ - [ "SinricProLight", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html", null ] + [ "ColorTemperatureController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html", null ], + [ "ColorTemperatureController< SinricProLight >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html", [ + [ "SinricProLight", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html", null ] ] ], - [ "ContactSensor< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_contact_sensor.html", null ], - [ "ContactSensor< SinricProContactsensor >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_contact_sensor.html", [ - [ "SinricProContactsensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_contactsensor.html", null ] + [ "ContactSensor< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.html", null ], + [ "ContactSensor< SinricProContactsensor >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.html", [ + [ "SinricProContactsensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.html", null ] ] ], - [ "Doorbell< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_doorbell.html", null ], - [ "Doorbell< SinricProDoorbell >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_doorbell.html", [ - [ "SinricProDoorbell", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_doorbell.html", null ] + [ "Doorbell< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.html", null ], + [ "Doorbell< SinricProDoorbell >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.html", [ + [ "SinricProDoorbell", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html", null ] ] ], - [ "DoorController< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_door_controller.html", null ], - [ "DoorController< SinricProGarageDoor >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_door_controller.html", [ - [ "SinricProGarageDoor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_garage_door.html", null ] + [ "DoorController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.html", null ], + [ "DoorController< SinricProGarageDoor >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.html", [ + [ "SinricProGarageDoor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html", null ] ] ], - [ "EqualizerController< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html", null ], - [ "EqualizerController< SinricProSpeaker >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html", [ - [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html", null ] + [ "EqualizerController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html", null ], + [ "EqualizerController< SinricProSpeaker >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html", [ + [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html", null ] ] ], - [ "InputController< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_input_controller.html", null ], - [ "InputController< SinricProSpeaker >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_input_controller.html", [ - [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html", null ] + [ "InputController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html", null ], + [ "InputController< SinricProSpeaker >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html", [ + [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html", null ] ] ], - [ "InputController< SinricProTV >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_input_controller.html", [ - [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html", null ] + [ "InputController< SinricProTV >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html", [ + [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html", null ] ] ], - [ "KeypadController< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_keypad_controller.html", null ], - [ "LockController< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_lock_controller.html", null ], - [ "LockController< SinricProLock >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_lock_controller.html", [ - [ "SinricProLock", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_lock.html", null ] + [ "KeypadController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller.html", null ], + [ "LockController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html", null ], + [ "LockController< SinricProLock >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html", [ + [ "SinricProLock", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html", null ] ] ], - [ "MediaController< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_media_controller.html", null ], - [ "MediaController< SinricProSpeaker >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_media_controller.html", [ - [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html", null ] + [ "MediaController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html", null ], + [ "MediaController< SinricProSpeaker >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html", [ + [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html", null ] ] ], - [ "MediaController< SinricProTV >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_media_controller.html", [ - [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html", null ] + [ "MediaController< SinricProTV >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html", [ + [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html", null ] ] ], - [ "ModeController< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html", null ], - [ "ModeController< SinricProSpeaker >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html", [ - [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html", null ] + [ "ModeController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html", null ], + [ "ModeController< SinricProSpeaker >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html", [ + [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html", null ] ] ], - [ "MotionSensor< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_motion_sensor.html", null ], - [ "MotionSensor< SinricProMotionsensor >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_motion_sensor.html", [ - [ "SinricProMotionsensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_motionsensor.html", null ] + [ "MotionSensor< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.html", null ], + [ "MotionSensor< SinricProMotionsensor >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.html", [ + [ "SinricProMotionsensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.html", null ] ] ], - [ "MuteController< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mute_controller.html", null ], - [ "MuteController< SinricProSpeaker >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mute_controller.html", [ - [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html", null ] + [ "MuteController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html", null ], + [ "MuteController< SinricProSpeaker >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html", [ + [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html", null ] ] ], - [ "MuteController< SinricProTV >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mute_controller.html", [ - [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html", null ] + [ "MuteController< SinricProTV >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html", [ + [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html", null ] ] ], - [ "PercentageController< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_percentage_controller.html", null ], - [ "PowerLevelController< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html", null ], - [ "PowerLevelController< SinricProDimSwitch >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html", [ - [ "SinricProDimSwitch", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html", null ] + [ "PercentageController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html", null ], + [ "PowerLevelController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html", null ], + [ "PowerLevelController< SinricProDimSwitch >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html", [ + [ "SinricProDimSwitch", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html", null ] ] ], - [ "PowerLevelController< SinricProFan >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html", [ - [ "SinricProFan", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html", null ] + [ "PowerLevelController< SinricProFan >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html", [ + [ "SinricProFan", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html", null ] ] ], - [ "PowerSensor< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_sensor.html", null ], - [ "PowerSensor< SinricProPowerSensor >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_sensor.html", [ - [ "SinricProPowerSensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_power_sensor.html", null ] + [ "PowerSensor< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.html", null ], + [ "PowerSensor< SinricProPowerSensor >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.html", [ + [ "SinricProPowerSensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.html", null ] ] ], - [ "PowerStateController< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", null ], - [ "PowerStateController< SinricProAirQualitySensor >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", [ - [ "SinricProAirQualitySensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_air_quality_sensor.html", null ] + [ "PowerStateController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html", null ], + [ "PowerStateController< SinricProBlinds >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html", [ + [ "SinricProBlinds", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html", null ] ] ], - [ "PowerStateController< SinricProBlinds >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", [ - [ "SinricProBlinds", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html", null ] + [ "PowerStateController< SinricProCamera >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html", [ + [ "SinricProCamera", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html", null ] ] ], - [ "PowerStateController< SinricProCamera >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", [ - [ "SinricProCamera", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_camera.html", null ] + [ "PowerStateController< SinricProDimSwitch >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html", [ + [ "SinricProDimSwitch", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html", null ] ] ], - [ "PowerStateController< SinricProContactsensor >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", [ - [ "SinricProContactsensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_contactsensor.html", null ] + [ "PowerStateController< SinricProDoorbell >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html", [ + [ "SinricProDoorbell", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html", null ] ] ], - [ "PowerStateController< SinricProDimSwitch >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", [ - [ "SinricProDimSwitch", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html", null ] + [ "PowerStateController< SinricProFan >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html", [ + [ "SinricProFan", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html", null ] ] ], - [ "PowerStateController< SinricProDoorbell >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", [ - [ "SinricProDoorbell", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_doorbell.html", null ] + [ "PowerStateController< SinricProFanUS >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html", [ + [ "SinricProFanUS", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html", null ] ] ], - [ "PowerStateController< SinricProFan >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", [ - [ "SinricProFan", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html", null ] + [ "PowerStateController< SinricProLight >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html", [ + [ "SinricProLight", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html", null ] ] ], - [ "PowerStateController< SinricProFanUS >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", [ - [ "SinricProFanUS", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html", null ] + [ "PowerStateController< SinricProSpeaker >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html", [ + [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html", null ] ] ], - [ "PowerStateController< SinricProLight >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", [ - [ "SinricProLight", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html", null ] + [ "PowerStateController< SinricProSwitch >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html", [ + [ "SinricProSwitch", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html", null ] ] ], - [ "PowerStateController< SinricProMotionsensor >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", [ - [ "SinricProMotionsensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_motionsensor.html", null ] + [ "PowerStateController< SinricProThermostat >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html", [ + [ "SinricProThermostat", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html", null ] ] ], - [ "PowerStateController< SinricProPowerSensor >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", [ - [ "SinricProPowerSensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_power_sensor.html", null ] + [ "PowerStateController< SinricProTV >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html", [ + [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html", null ] ] ], - [ "PowerStateController< SinricProSpeaker >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", [ - [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html", null ] + [ "PowerStateController< SinricProWindowAC >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html", [ + [ "SinricProWindowAC", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html", null ] ] ], - [ "PowerStateController< SinricProSwitch >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", [ - [ "SinricProSwitch", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_switch.html", null ] + [ "PushNotification< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", null ], + [ "PushNotification< SinricProAirQualitySensor >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "SinricProAirQualitySensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.html", null ] ] ], - [ "PowerStateController< SinricProTemperaturesensor >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", [ - [ "SinricProTemperaturesensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_temperaturesensor.html", null ] + [ "PushNotification< SinricProBlinds >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "SinricProBlinds", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html", null ] ] ], - [ "PowerStateController< SinricProThermostat >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", [ - [ "SinricProThermostat", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html", null ] + [ "PushNotification< SinricProCamera >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "SinricProCamera", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html", null ] ] ], - [ "PowerStateController< SinricProTV >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", [ - [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html", null ] + [ "PushNotification< SinricProContactsensor >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "SinricProContactsensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.html", null ] ] ], - [ "PowerStateController< SinricProWindowAC >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html", [ - [ "SinricProWindowAC", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html", null ] + [ "PushNotification< SinricProDimSwitch >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "SinricProDimSwitch", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html", null ] ] ], - [ "PushNotification< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", null ], - [ "PushNotification< SinricProAirQualitySensor >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "SinricProAirQualitySensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_air_quality_sensor.html", null ] + [ "PushNotification< SinricProDoorbell >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "SinricProDoorbell", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html", null ] ] ], - [ "PushNotification< SinricProBlinds >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "SinricProBlinds", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html", null ] + [ "PushNotification< SinricProFan >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "SinricProFan", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html", null ] ] ], - [ "PushNotification< SinricProCamera >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "SinricProCamera", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_camera.html", null ] + [ "PushNotification< SinricProFanUS >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "SinricProFanUS", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html", null ] ] ], - [ "PushNotification< SinricProContactsensor >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "SinricProContactsensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_contactsensor.html", null ] + [ "PushNotification< SinricProGarageDoor >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "SinricProGarageDoor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html", null ] ] ], - [ "PushNotification< SinricProDimSwitch >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "SinricProDimSwitch", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html", null ] + [ "PushNotification< SinricProLight >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "SinricProLight", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html", null ] ] ], - [ "PushNotification< SinricProDoorbell >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "SinricProDoorbell", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_doorbell.html", null ] + [ "PushNotification< SinricProLock >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "SinricProLock", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html", null ] ] ], - [ "PushNotification< SinricProFan >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "SinricProFan", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html", null ] + [ "PushNotification< SinricProMotionsensor >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "SinricProMotionsensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.html", null ] ] ], - [ "PushNotification< SinricProFanUS >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "SinricProFanUS", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html", null ] + [ "PushNotification< SinricProPowerSensor >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "SinricProPowerSensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.html", null ] ] ], - [ "PushNotification< SinricProGarageDoor >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "SinricProGarageDoor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_garage_door.html", null ] + [ "PushNotification< SinricProSpeaker >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html", null ] ] ], - [ "PushNotification< SinricProLight >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "SinricProLight", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html", null ] + [ "PushNotification< SinricProSwitch >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "SinricProSwitch", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html", null ] ] ], - [ "PushNotification< SinricProLock >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "SinricProLock", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_lock.html", null ] + [ "PushNotification< SinricProTemperaturesensor >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "SinricProTemperaturesensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.html", null ] ] ], - [ "PushNotification< SinricProMotionsensor >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "SinricProMotionsensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_motionsensor.html", null ] + [ "PushNotification< SinricProThermostat >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "SinricProThermostat", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html", null ] ] ], - [ "PushNotification< SinricProPowerSensor >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "SinricProPowerSensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_power_sensor.html", null ] + [ "PushNotification< SinricProTV >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html", null ] ] ], - [ "PushNotification< SinricProSpeaker >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html", null ] + [ "PushNotification< SinricProWindowAC >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html", [ + [ "SinricProWindowAC", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html", null ] ] ], - [ "PushNotification< SinricProSwitch >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "SinricProSwitch", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_switch.html", null ] + [ "RangeController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html", null ], + [ "RangeController< SinricProBlinds >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html", [ + [ "SinricProBlinds", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html", null ] ] ], - [ "PushNotification< SinricProTemperaturesensor >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "SinricProTemperaturesensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_temperaturesensor.html", null ] + [ "RangeController< SinricProFanUS >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html", [ + [ "SinricProFanUS", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html", null ] ] ], - [ "PushNotification< SinricProThermostat >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "SinricProThermostat", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html", null ] + [ "RangeController< SinricProWindowAC >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html", [ + [ "SinricProWindowAC", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html", null ] ] ], - [ "PushNotification< SinricProTV >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html", null ] + [ "SinricProClass", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html", null ], + [ "SinricProDevice", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device.html", [ + [ "SinricProAirQualitySensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.html", null ], + [ "SinricProBlinds", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html", null ], + [ "SinricProCamera", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html", null ], + [ "SinricProContactsensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.html", null ], + [ "SinricProDimSwitch", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html", null ], + [ "SinricProDoorbell", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html", null ], + [ "SinricProFan", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html", null ], + [ "SinricProFanUS", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html", null ], + [ "SinricProGarageDoor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html", null ], + [ "SinricProLight", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html", null ], + [ "SinricProLock", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html", null ], + [ "SinricProMotionsensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.html", null ], + [ "SinricProPowerSensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.html", null ], + [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html", null ], + [ "SinricProSwitch", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html", null ], + [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html", null ], + [ "SinricProTemperaturesensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.html", null ], + [ "SinricProThermostat", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html", null ], + [ "SinricProWindowAC", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html", null ] ] ], - [ "PushNotification< SinricProWindowAC >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html", [ - [ "SinricProWindowAC", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html", null ] + [ "TemperatureSensor< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html", null ], + [ "TemperatureSensor< SinricProTemperaturesensor >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html", [ + [ "SinricProTemperaturesensor", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.html", null ] ] ], - [ "RangeController< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html", null ], - [ "RangeController< SinricProBlinds >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html", [ - [ "SinricProBlinds", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html", null ] + [ "TemperatureSensor< SinricProThermostat >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html", [ + [ "SinricProThermostat", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html", null ] ] ], - [ "RangeController< SinricProFanUS >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html", [ - [ "SinricProFanUS", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html", null ] + [ "ThermostatController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html", null ], + [ "ThermostatController< SinricProThermostat >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html", [ + [ "SinricProThermostat", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html", null ] ] ], - [ "RangeController< SinricProWindowAC >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html", [ - [ "SinricProWindowAC", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html", null ] + [ "ThermostatController< SinricProWindowAC >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html", [ + [ "SinricProWindowAC", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html", null ] ] ], - [ "SinricProClass", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html", null ], - [ "SinricProDevice", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_device.html", [ - [ "SinricProAirQualitySensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_air_quality_sensor.html", null ], - [ "SinricProBlinds", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html", null ], - [ "SinricProCamera", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_camera.html", null ], - [ "SinricProContactsensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_contactsensor.html", null ], - [ "SinricProDimSwitch", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html", null ], - [ "SinricProDoorbell", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_doorbell.html", null ], - [ "SinricProFan", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html", null ], - [ "SinricProFanUS", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html", null ], - [ "SinricProGarageDoor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_garage_door.html", null ], - [ "SinricProLight", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html", null ], - [ "SinricProLock", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_lock.html", null ], - [ "SinricProMotionsensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_motionsensor.html", null ], - [ "SinricProPowerSensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_power_sensor.html", null ], - [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html", null ], - [ "SinricProSwitch", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_switch.html", null ], - [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html", null ], - [ "SinricProTemperaturesensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_temperaturesensor.html", null ], - [ "SinricProThermostat", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html", null ], - [ "SinricProWindowAC", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html", null ] + [ "ToggleController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.html", null ], + [ "VolumeController< T >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html", null ], + [ "VolumeController< SinricProSpeaker >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html", [ + [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html", null ] ] ], - [ "TemperatureSensor< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_temperature_sensor.html", null ], - [ "TemperatureSensor< SinricProTemperaturesensor >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_temperature_sensor.html", [ - [ "SinricProTemperaturesensor", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_temperaturesensor.html", null ] - ] ], - [ "TemperatureSensor< SinricProThermostat >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_temperature_sensor.html", [ - [ "SinricProThermostat", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html", null ] - ] ], - [ "ThermostatController< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html", null ], - [ "ThermostatController< SinricProThermostat >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html", [ - [ "SinricProThermostat", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html", null ] - ] ], - [ "ThermostatController< SinricProWindowAC >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html", [ - [ "SinricProWindowAC", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html", null ] - ] ], - [ "ToggleController< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_toggle_controller.html", null ], - [ "VolumeController< T >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html", null ], - [ "VolumeController< SinricProSpeaker >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html", [ - [ "SinricProSpeaker", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html", null ] - ] ], - [ "VolumeController< SinricProTV >", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html", [ - [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html", null ] + [ "VolumeController< SinricProTV >", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html", [ + [ "SinricProTV", "class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html", null ] ] ] ]; \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index c6c70ae..b812caf 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,11 +1,11 @@ - + - - + + -SinricPro Library: SinricPro (ESP8266 / ESP32 SDK) +SinricPro Library: SinricPro (ESP8266 / ESP32 / RP2040) @@ -23,8 +23,8 @@
- - + @@ -33,21 +33,22 @@
+
SinricPro Library
- + +/* @license-end */ +
@@ -61,7 +62,7 @@
@@ -75,26 +76,33 @@
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
-
SinricPro (ESP8266 / ESP32 SDK)
+
+
SinricPro (ESP8266 / ESP32 / RP2040)
-

arduino-library-badge PlatformIO Registry

-

Platform ESP8266 Platform ESP32

+

arduino-library-badge PlatformIO Registry

+

"" "![Platform ESP8266](https://img.shields.io/badge/Platform-Espressif8266-orange)" "" "![Platform ESP32](https://img.shields.io/badge/Platform-Espressif32-orange)"

Framework

GitHub release (latest by date)

-

Build

+

Build

Note

    -
  1. Use the latest ESP Arduino Core!
  2. +
  3. Use the latest ESP8226/ESP32/RP2040 Arduino Core!
  4. Use the latest WebSocktes library!
  5. +
  6. Use the latest ArduinoJson library!

Installation

@@ -117,7 +125,7 @@

  • Search for SinricPro and click Install
  • -
  • Repeat step 2 for all dependent libraries!
  • +
  • Repeat step 2 for all dependent libraries!
  • Open example in ArduinoIDE (File / Examples / SinricPro / ...)
  • @@ -126,7 +134,7 @@

    Dependencies

    ArduinoJson by Benoit Blanchon (minimum Version 6.12.0)
    - WebSockets by Markus Sattler (minimum Version 2.3.5)

    + WebSockets by Markus Sattler (minimum Version 2.4.0)


    Full user documentation

    @@ -140,62 +148,64 @@

    Usage

    Include SinricPro-Library (SinricPro.h) and SinricPro-Device-Libraries (eg. SinricProSwitch.h)

    -
    {C++}
    -
    #include <SinricPro.h>
    -
    #include <SinricProSwitch.h>
    +
    ++
    +
    #include <SinricPro.h>
    +
    #include <SinricProSwitch.h>

    Define your credentials from SinricPro-Portal (portal.sinric.pro)

    -
    {C++}
    -
    #define APP_KEY "YOUR-APP-KEY" // Should look like "de0bxxxx-1x3x-4x3x-ax2x-5dabxxxxxxxx"
    -
    #define APP_SECRET "YOUR-APP-SECRET" // Should look like "5f36xxxx-x3x7-4x3x-xexe-e86724a9xxxx-4c4axxxx-3x3x-x5xe-x9x3-333d65xxxxxx"
    -
    #define SWITCH_ID "YOUR-DEVICE-ID" // Should look like "5dc1564130xxxxxxxxxxxxxx"
    +
    ++
    +
    #define APP_KEY "YOUR-APP-KEY" // Should look like "de0bxxxx-1x3x-4x3x-ax2x-5dabxxxxxxxx"
    +
    #define APP_SECRET "YOUR-APP-SECRET" // Should look like "5f36xxxx-x3x7-4x3x-xexe-e86724a9xxxx-4c4axxxx-3x3x-x5xe-x9x3-333d65xxxxxx"
    +
    #define SWITCH_ID "YOUR-DEVICE-ID" // Should look like "5dc1564130xxxxxxxxxxxxxx"

    Define callback routine(s)

    -
    {C++}
    -
    bool onPowerState(const String &deviceId, bool &state) {
    -
    Serial.printf("device %s turned %s\r\n", deviceId.c_str(), state?"on":"off");
    -
    return true; // indicate that callback handled correctly
    +
    ++
    +
    bool onPowerState(const String &deviceId, bool &state) {
    +
    Serial.printf("device %s turned %s\r\n", deviceId.c_str(), state?"on":"off");
    +
    return true; // indicate that callback handled correctly
    }

    In setup()

    -
    {C++}
    -
    // create and add a switch to SinricPro
    +
    ++
    +
    // create and add a switch to SinricPro
    SinricProSwitch& mySwitch = SinricPro[SWITCH_ID];
    -
    // set callback function
    +
    // set callback function
    mySwitch.onPowerState(onPowerState);
    -
    // startup SinricPro
    -
    SinricPro.begin(APP_KEY, APP_SECRET);
    +
    // startup SinricPro
    +
    SinricPro.begin(APP_KEY, APP_SECRET);
    +
    void begin(String appKey, String appSecret, String serverURL="ws.sinric.pro")
    Initializing SinricProClass to be able to connect to SinricPro Server.
    Definition SinricPro.h:176

    In loop()

    -
    {C++}
    -
    SinricPro.handle();
    +
    ++
    +
    SinricPro.handle();
    +
    void handle()
    Handles communication between device and SinricPro Server.
    Definition SinricPro.h:234

    How to add a device?

    Syntax is
    -

    {C++}
    +

    ++
    DeviceType& myDevice = SinricPro[DEVICE_ID];

    Example
    -

    {C++}
    -
    SinricProSwitch& mySwitch = SinricPro["YOUR-SWITCH-ID-HERE"];
    -

    Example 2 (alternatively)

    {C++}
    -
    SinricProSwitch& mySwitch = SinricPro.add<SinricProSwitch>("YOUR-SWITCH-ID-HERE");
    +

    ++
    +
    SinricProSwitch& mySwitch = SinricPro["YOUR-SWITCH-ID-HERE"];
    +

    Example 2 (alternatively)

    ++
    +
    SinricProSwitch& mySwitch = SinricPro.add<SinricProSwitch>("YOUR-SWITCH-ID-HERE");

    How to retrieve a device for sending an event?

    Syntax is
    -

    {C++}
    +

    ++
    DeviceType& myDevice = SinricPro[DEVICE_ID];
    -

    Example 1

    {C++}
    -
    SinricProDoorbell& myDoorbell = SinricPro["YOUR-DOORBELL-ID-HERE"];
    +

    Example 1

    ++
    +
    SinricProDoorbell& myDoorbell = SinricPro["YOUR-DOORBELL-ID-HERE"];
    myDoorbell.sendDoorbellEvent();
    -

    Example 2 (alternatively)

    {C++}
    -
    SinricPro["YOUR-DOORBELL-ID-HERE"].as<SinricProDoorbell>().sendDoorbellEvent();
    +

    Example 2 (alternatively)

    ++
    +
    SinricPro["YOUR-DOORBELL-ID-HERE"].as<SinricProDoorbell>().sendDoorbellEvent();

    How to send a push notification?

    -
    {C++}
    +
    ++
    SinricProSwitch& mySwitch = SinricPro[SWITCH_ID];
    -
    mySwitch.sendPushNotification("Hello SinricPro!");
    +
    mySwitch.sendPushNotification("Hello SinricPro!");

    Devices

    @@ -224,7 +234,7 @@

    diff --git a/docs/index.js b/docs/index.js new file mode 100644 index 0000000..7c6598c --- /dev/null +++ b/docs/index.js @@ -0,0 +1,24 @@ +var index = +[ + [ "Note", "index.html#autotoc_md1", null ], + [ "Installation", "index.html#autotoc_md2", [ + [ "VS Code & PlatformIO:", "index.html#autotoc_md3", null ], + [ "ArduinoIDE", "index.html#autotoc_md4", null ] + ] ], + [ "Dependencies", "index.html#autotoc_md6", null ], + [ "Full user documentation", "index.html#autotoc_md8", null ], + [ "Examples", "index.html#autotoc_md10", null ], + [ "Usage", "index.html#autotoc_md12", [ + [ "Include SinricPro-Library (SinricPro.h) and SinricPro-Device-Libraries (eg. SinricProSwitch.h)", "index.html#autotoc_md13", null ], + [ "Define your credentials from SinricPro-Portal (portal.sinric.pro)", "index.html#autotoc_md14", null ], + [ "Define callback routine(s)", "index.html#autotoc_md15", null ], + [ "In setup()", "index.html#autotoc_md16", null ], + [ "In loop()", "index.html#autotoc_md17", null ] + ] ], + [ "How to add a device?", "index.html#autotoc_md19", null ], + [ "How to retrieve a device for sending an event?", "index.html#autotoc_md21", null ], + [ "How to send a push notification?", "index.html#autotoc_md22", null ], + [ "Devices", "index.html#autotoc_md24", [ + [ "* Custom devices", "index.html#autotoc_md25", null ] + ] ] +]; \ No newline at end of file diff --git a/docs/inherit_graph_0.map b/docs/inherit_graph_0.map index ced46d0..1fed5d2 100644 --- a/docs/inherit_graph_0.map +++ b/docs/inherit_graph_0.map @@ -1,88 +1,163 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/inherit_graph_0.md5 b/docs/inherit_graph_0.md5 index f0d43b7..0c16ec1 100644 --- a/docs/inherit_graph_0.md5 +++ b/docs/inherit_graph_0.md5 @@ -1 +1 @@ -92faddbb363d28af3e393f99fe4ff90c \ No newline at end of file +f7e272f1d7c37c22c61b0fc4b0db2e84 \ No newline at end of file diff --git a/docs/inherit_graph_0.png b/docs/inherit_graph_0.png index dffdb21c00468bdf10f248b55e0a1ec452f9735c..2854589833e3efcf7c29347e3c50e93aaf723b1a 100644 GIT binary patch literal 247280 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 z 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≷^z%g`iAOds@nHG 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�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%0D@5fOg!{UPtU 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 Jmvv4FO#tnOryT$Q literal 289631 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

    %aj6W3={wY~?pwBRY- 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%0Asr*5h$5^N}Qz^=W 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

    b1HT&LV7*Wtr^<8^}vO05z6n`Rz7c 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 k>0_flc{nm+$7WAS?tH=@)QZQwi39(X - + diff --git a/docs/inherit_graph_1.md5 b/docs/inherit_graph_1.md5 index a67f181..1ed61ff 100644 --- a/docs/inherit_graph_1.md5 +++ b/docs/inherit_graph_1.md5 @@ -1 +1 @@ -5e0f9c6e02f4985fa69edc664b35f6b8 \ No newline at end of file +2e1f40bb3363263163a6b12dfa8b0ca7 \ No newline at end of file diff --git a/docs/inherit_graph_1.png b/docs/inherit_graph_1.png index c60ec67bfe8d4e434afe452ca7e2c740465b8688..78d6ab795f209949f1d9365ffb6435a28d88159e 100644 GIT binary patch delta 579 zcmV-J0=)g&1mXmc83+ad001g*iFlDA6@M2=L_t(|ob8+MX~QrO#Vye>I!PAk0)fmF z@B%HJqu(+`GKbwyf+>=8{V#+YT_ckz9{4JFmSM3Y2EERIhrjiU*T#W8wJO-<-t zaOg!#4CuG1F$@QdmlMC{$2B9R^U#AS$}u+y&d{KoR`b{MJq$A;9fbRyJ21a}=-Pc! zF+v(r@k4~NcSr;6FBCVXT@sUfrhiq2a|xk`8Jm@3I$*9ObM0IAFNrVF7-~}BxkjY(|6q`TWtCV$9Xv-z4z zsp+>=M~@6n=dcBCPI_cmwKbtnXu^C$#3t1*ML7nLX1LU0b!l0RJy%<*Tkei~QEkGM zIBKBOGu&CBv_Gy7$#)4g9}(BNYFlPpW?6@oSSLN@eGXES%M=lApz#o0p%E| z0}}#uU_zh{ObFD$pWlHx2QU*_YoFV;{XQNK4L#t^vDQAdH2?qr004mb_y-vclgV(Z Rvd#bi002ovPDHLkV1ihh3uOQR delta 571 zcmV-B0>u5|1lk0U83+OZ005;D9xst06@L#&L_t(|ob8(1t%EQOh7U&_ql_PY7JVc6e?8G?ErIqFHDL{Nle&VF4!*LuxhH8F4oq*9C(^x;Iv3^Wr{anI} zbzSFq{!}VPEpE5lB%*A6Ah-D5IB64 zB@)Klp8Cmp3p>LfMIk+EH6DX|IXZ;?9%SRKGE0>;_Bpu*C&jQ2Xgg9SAVkU!0F)CD z!utdsqR9~ExSMRHy2Vhaw6IqDqt{0t3svAUzF@KS9Fl{IT@@2&ORE3TY=7Nw3M)aw z{Wt^+G87{^{;<%U3P7*a)He`*1&;R2E#TsFwZICHt#K-<7cA8c|3s#JVpl{%knm}e z{0upz2`~ALN zui>4D#?v(Q%ExHJ{eBNGzbNI8FGf3TKh}?FtRK@@Kc=yM{s83$oR=FLQo;ZL002ov JPDHLkV1n377_tBW diff --git a/docs/inherit_graph_10.map b/docs/inherit_graph_10.map index 2c55b19..dda46e4 100644 --- a/docs/inherit_graph_10.map +++ b/docs/inherit_graph_10.map @@ -1,3 +1,3 @@ - + diff --git a/docs/inherit_graph_10.md5 b/docs/inherit_graph_10.md5 index 21e5c1e..adceb18 100644 --- a/docs/inherit_graph_10.md5 +++ b/docs/inherit_graph_10.md5 @@ -1 +1 @@ -097584a903e1f373de2896689b425a6e \ No newline at end of file +d8c19575d1ff948f606457d75b1bcbc4 \ No newline at end of file diff --git a/docs/inherit_graph_10.png b/docs/inherit_graph_10.png index c953bdb453ac8dd1d16ba5231ef62d65884b4901..a8a69cb512f1f1ba320bacd7d1437d5c54f0516c 100644 GIT binary patch delta 520 zcmV+j0{8uv1d#+GiBL{Q4GJ0x0000DNk~Le0001z0000b2nGNE0I9UFLy;jBf5u5f zK~#90?b}gqgdh|JP#)y28kdTeSxPL4hhZ(f_Nue6^(p%{iC-hV~5AFU|3R2gw&JBAdd`97~;> zI-Zi6wMyzp-D|Hcb={mZwd{QcHPiSnn?|5iUTwLxLg_lfcfNEmk6wMLe>(Q=b+$i< zTKwO}=&W=A&QmEPRQM8xE4gKJ|pc--A4l!2PHoL=;wfv!OMm6%60!! z%a!xBuag1^Qv87Tj^)~rUhSoy)2RQcTF=H^{vb*B!ypkv)gZN=en}5!B!Xa& z2!cT(2nLBD_z#i_p&T4>Y)x;YoD!aAR;0n>cJm_{Vm|-Fe7XL0000< KMNUMnLSTaSw)2(% delta 525 zcmV+o0`mQl1eOFLiBL{Q4GJ0x0000DNk~Le0001!0000b2nGNE07iD(eUTv*f6GZk zK~#90?VMebgdhxrVQcT`t>z%;JvfNogMD(#LV}_lex~|+nh6eu(1xHj+7Lo8guG|| zY3%{|9w;UPgJL2uC?*2qH#T_h&FAxJ;R_jvd7e+UQ)XJ%)hx?W#UU~t+qQ}NIAx}t zl=291&Y5YNl5MP+2n>pez@V52e+-I=zz_@Y60EhR#Unmz?f>T<9x)!{P$MSC@yE1? z2SiNTq$Vb|p(d}@h4BQ9@xNinWiA!C5JL7!9U0WPwBrL8)9$df_T>DXw$!ny_7th? zRpLkLT#_x-Z;m^@NWVd4oc)5+5|zp_m#ZC0>xw-9r2)NK22*}W=ej!{e}pglcVl$w zp5r*s=TH$-&cW8}`c8=-+CI0aeKa--LlofOz}=*;YM9K_iXL_}5>GOr#)NAM zwfb%jQT(NLZaoVrrX))tcd5tPP=o53NlN2aL5sx_AAfbLpd^4fVLs{ijW17**X~CG zBBpqfrM8?6X)pbqhW~f^W69Y|=^-l*dDD{g3B^QUR25SXshH@&%tT;NOaunSL|{-% z1crE@$vIck4>Abed$COvll0#xLL@BT&qP4*{Y(T0#YA9GOaunSL}2^@!Ff7j_L0$% P00000NkvXXu0mjf1`6@P diff --git a/docs/inherit_graph_11.map b/docs/inherit_graph_11.map index 3c30f35..9e6e716 100644 --- a/docs/inherit_graph_11.map +++ b/docs/inherit_graph_11.map @@ -1,3 +1,3 @@ - + diff --git a/docs/inherit_graph_11.md5 b/docs/inherit_graph_11.md5 index a3c8c1b..5fa4dd5 100644 --- a/docs/inherit_graph_11.md5 +++ b/docs/inherit_graph_11.md5 @@ -1 +1 @@ -a92b501591d64d4e3d13dde93c02d555 \ No newline at end of file +bcd81928550ae159a88f2e5811b23a04 \ No newline at end of file diff --git a/docs/inherit_graph_11.png b/docs/inherit_graph_11.png index 8fa3143457703b93843ca1fab0abb87e5d79787e..88cc2ec9139a6676761196e2f6cbbc23a49f130e 100644 GIT binary patch delta 590 zcmV-U0kusAdFVL!U^k1e(=Lr4fmRd*K%m(SeBG$H@XaP+>;{J0+kB5j6b67E93a(8`tK~j(H2U9*T58_9VHi2wiq07*qoM6N<$f};-{!w}x@_Z?cugXp?$)warv<2Z)C?=KNVp2svzs=rp5 zaVF>zDZUx2d3mpoiy1W|#uz^j z*{(gGk8|ghVwTR)$d&PuUfH*7-)h^dtwxJ>j#W~aFIX>AnwRO45s#Jye{C;SiYbrJ z&ZB0m`OV6ix<<2wmic)IKKnkorj}!vX2zpe%(6skB~&}FHoi4`VtQ{^a>l%3OzW+U zS!S%c6ZA;$zq-$p)XsBh5KlvTjA3TRr6{djSuc)Oo~+^_aU>Ia7{=4+Zg=E-lv zGEHEh83_zDBY}ZtBrvEqFm2mjse?R(VHngt)r{J2TM6+Z^8XnLCJ6k0MuG#)NMN8D e2@EtNf#Dy|){bYi`zSpC0000 - + diff --git a/docs/inherit_graph_12.md5 b/docs/inherit_graph_12.md5 index 44ed4fb..55f8997 100644 --- a/docs/inherit_graph_12.md5 +++ b/docs/inherit_graph_12.md5 @@ -1 +1 @@ -e0510917645712db03cd1eedb5e635fe \ No newline at end of file +779b00fa9bd0a74c6cf873df366e5bfb \ No newline at end of file diff --git a/docs/inherit_graph_12.png b/docs/inherit_graph_12.png index a187b9e5c5de390b9ca504d27e81c2b6c7659922..9f856249aec909849131790052be74533b9e19a8 100644 GIT binary patch delta 525 zcmbQvGL1#CGr-TCmrII^fq{Y7)59eQNKXP{RSq^FxpK<}=ZT7<^`|{u978JRyq$eF z_ppLU>&_L)C6jb6u_~pidB-gXeg0zha*t;QwME@|1`6eQ7Lymo9U>J^tG=>CO|bE_UB1yIMUtEb;lNxQ%3HqD0%P zERXs-dD|0q-i>6p)HD%lbf{MrabtqO84!<3>sNa;=QIvM`v7^Q+!eKmhp-`S$*gA+=M3X_xGEdH{EG= zw(hr2vDbe-UAakjR`J#~w#`wQ(@usR4!F8~+YPZTrPW%JXF}dg=&Mg%;M{iRYRszC zpLsrWi~HuYZ|ZlRJ25~_>n-=iZ7pKyvR{@y2ynYJ=jEBrrsDtCgkKI=9yifs=jLT! z&#JneFSZ|7vM zYgQ0weYmW;Bs`X57r)q|-w*z6QasV{!13T5{mdZ7c1eppS*yy*pQmFrD=v6P)ifOkc1y?1g(xdQR5b`uo)tM_&BCv&c8;tEbIHIRQgk#~YC= z&h2()(TF-y->Nu$XT)L4=aZC6QvwRN=FN{jvSjPOTCY!siY%QPJ-2;-ZE)WI{L;A} zcU}>HDR-r3GyjgTMOpjKESO4->CAW47q-Iwny}$fu!G)EzF#r0-q& zrca}9Pi*MWe4e6Ze>HPw(bliaQgY%~ZolHEwRehK+S7H@ERD=Wgc}_V1tn0aNAG=( z&9MHf(44SV^s|eh=l@XHDYj@gGXJH+>2@mdCqVg^rF KKbLh*2~7Z>KJd=~ diff --git a/docs/inherit_graph_13.map b/docs/inherit_graph_13.map index 0b7b0f6..66f777b 100644 --- a/docs/inherit_graph_13.map +++ b/docs/inherit_graph_13.map @@ -1,3 +1,3 @@ - + diff --git a/docs/inherit_graph_13.md5 b/docs/inherit_graph_13.md5 index 9f48105..ec99f89 100644 --- a/docs/inherit_graph_13.md5 +++ b/docs/inherit_graph_13.md5 @@ -1 +1 @@ -219a7ede12bbe81f5d241ee5145dc1a2 \ No newline at end of file +f58919669803766a5acf5186ddd2b5a6 \ No newline at end of file diff --git a/docs/inherit_graph_13.png b/docs/inherit_graph_13.png index 14d0f6519488a40bcd9b94a19c451e2e5cd6cec1..daeb6f654533ada5801c92ff72c0e7488d018851 100644 GIT binary patch delta 533 zcmV+w0_y##1hfQ@83+ad002=`OSF+86@TeTL_t(|ob8+8ZG4wW^nKDv#ax_6cxMNs8Up|T0001bLt$VThIb;m^$-JI zALrc9G)+%G_7;ALh;Bsm*-jR?7$3%%FF&v`*~WG+(X!A~&b-rXAHwO{@ea=A5wH%!<^=VD=JsB4wGS0bZT!L8c zQY|TMT%_`}K;!z4a=CUHTTtiRX)2mDQrD%qK4K<|-N;;ZOO@_iyfjBjU&;9OI6UXa z_hQ_(RH7v{Myf)s_fNxYV(qe&Tz@MI|2~qVRzphDdJ|%1jp;Ad#nG}J8^hZ^loGDJ z)EuJi(ywN zCIjlgWI!F545$N>0d-(9pbq}I7pSu_nYH$@EX(&i&pq^j7sp!r=&b<&00000Z21MS XUO*4>DXLHa0000H_%-y)~03$g8uY%ze+PbiAx+1M`Z~*n9^T`*d}NRgAh%8NjGuxp~y<%vtBW zSf6~VusK#}vi<+7Prv`}yZ`=~CL`bc^X}Qc?(f!JeEl_RD*uDa-}jm}eGcNgP!Ggl zB%?buDDpAm=_#78`dyx@rl?MPcX{cw;;!emW~@u6d<~vAJ^ssiJKiU3zK!Oqm0Eu; zFMcVPty>p+-Rx>4lm20?*GXBKxvRJP+)aBV%jsYEnC;E>Y^w~nZ+XF1aS9W%kFDO5 zYtJp3`t63ny<;BwLd&1D6&%j3PN}zL46}RKanT{owe|1hJihay`;X7Mbf#8f@3F0X zlUB@s)p*7^__XeC4a+5Z`D>UTY)Vhu@-}>>w^aA@R~ov-n+v1EuB?&l+#0tc<0o_A z7rEE--1K%{b$h!wKccr&Ok=lgSmu@XE2^=RPU`RRyS4J$lRLldPF4k;`Z_^W_*8o`3et_y2d8Qwtojuz=ma?!L#}=%PQ7z({BCboFyt=akR{ E0Ecq^82|tP diff --git a/docs/inherit_graph_14.map b/docs/inherit_graph_14.map index 1d3e863..8031376 100644 --- a/docs/inherit_graph_14.map +++ b/docs/inherit_graph_14.map @@ -1,3 +1,3 @@ - + diff --git a/docs/inherit_graph_14.md5 b/docs/inherit_graph_14.md5 index bea6655..b80f500 100644 --- a/docs/inherit_graph_14.md5 +++ b/docs/inherit_graph_14.md5 @@ -1 +1 @@ -071e61694046a8801636fe2c9d96109d \ No newline at end of file +75fe61235c3a5ab455b874814379ec5b \ No newline at end of file diff --git a/docs/inherit_graph_14.png b/docs/inherit_graph_14.png index c1ea66a2224dbbc07af8bdddc6ef982d1452a23f..748b5568d108d7d08965d2a9c62b0be5c7d0e935 100644 GIT binary patch delta 537 zcmZ3&vWP{oGr-TCmrII^fq{Y7)59eQNKXS|RSq^FxgcJ^a-yPW{dG?l$B>FSZ)ZQu zJ**(mYI()b%2Vtm(=?l475xjVioeWX?(xjvZ)=v|f`<1GZ&c0~(PT@OJAS%xViJ#H zi+~fyMYlsui4yl*pKNNEDDs(8Y=7D0?)B9ChrUWhf)mfzZ92jE!{AuWT5h?Xr#s`; z7nnZz(eqeBcl+GZ3F3{%lmzNCbeKRil$vy$*R-Rf@SN%O?5)B-t>5Rq^q;-;-!+LV z-=;4rw+ZP<^|310c`!@p+j`T9wmb`2lm4uolcd?hdeQRw*(-Z5N{JiUWgYACP0{QA z>Ay?6tM0|7)+l7`jUJs++d(PfKSBpIl8H)$J**_4mDR=e{*xdYIiV z?ZTCND_z2S#p-i;(&mdCi(butb!oxet=s->s(R0#^~*WCd*&MV`Lk}fzmv@7PQPV* zRpuwo3NPy?i&zC?l0a2^yDI?H674P4!kwde~BZzVjZw-!8?hn{Ybk zdygnvn(d013q@~DUKKy_x%KHzzHU_1J9m5awyupylOu}P25w(!w|u=z^~qxIFSZ|5ZT zwJ7kkCT=eO5+=v8m!17$^@ja7B$n`a$S;0Yds4-VUGuB&%2^lN1ez3G=0AOYTW-R4 zr$Rvq5%ESxAhkcU`TM;ypa1a2pJ92-;p$F$0SWbCI_zYzgdB+g130S&%7Gvb7$f-on<>q7EZtOaHclz zxx%ES2d4hYyx~2irRwPp+kG)V?S5GZ6>2>?HTT4{THfgXy-(tM-NC6BDXCS3`?|IR=-Y?BIBJcNR2p?7bE8aUHO6UH0SBDROV_4Xax+Vm~u&@EC aKa9TJK?w)X%Kiq%H-o3EpUXO@geCyCfB$6w diff --git a/docs/inherit_graph_15.map b/docs/inherit_graph_15.map index ea1b75d..eb9d07e 100644 --- a/docs/inherit_graph_15.map +++ b/docs/inherit_graph_15.map @@ -1,3 +1,3 @@ - + diff --git a/docs/inherit_graph_15.md5 b/docs/inherit_graph_15.md5 index 403a4dc..7a3fbbf 100644 --- a/docs/inherit_graph_15.md5 +++ b/docs/inherit_graph_15.md5 @@ -1 +1 @@ -07f6bd13b5ff4dc4acc24079b10a03f7 \ No newline at end of file +a358b024bea99cdaad8f6af9ab565350 \ No newline at end of file diff --git a/docs/inherit_graph_15.png b/docs/inherit_graph_15.png index 8a6ae11969f80036eb20423167211886822b96c4..755db6634e94fb7c625409e331ceeea8e62c4234 100644 GIT binary patch delta 514 zcmV+d0{#8<1B(P9iBL{Q4GJ0x0000DNk~Le0001w0000b2nGNE0DI)R8<8Ouf51sZ zK~#90?VHhU!ypibIn*&aNfzk>kup=HEYPZR^es~)bA&!2A!2NNKER2-Pl{p){666K zVOxrG00000?~mja$K&x+L=Gc@f&CIf_`6&#_q6UKZzLiI5&7;H7Q6^w&bgno;>kRb z^ZDF78h8y(r_*G;?;Hob5ts+me_$R^gLyy=<^eUB2hMj6xS;nD2;ja7}&OU%9@L=ht3pc<_RG@1v+=t$4^?9 ze&@%fetF;8$;#u>YM1)eYL@y~Wt6xsElgy#ZPk)bOf1JimL{##Z>pRgf9IyI*}`hI zYunY9OYv@`;{)`%_3n%XSX;wCh`|Fa;yr?jSf=2=ShCF5zgh|)sj z?~^RFEi|?5TkA|=VxBy}SheL*{aS0+YHAss-FZm}YA_F|!91V_^MD%618Oi2sKGp- zhCls*nkVyk?{AOCKj)(_#iue9DItBm$0Duwv13igL&eV=v1ONa407*qoM6N<$ Ef-pt!djJ3c delta 492 zcmeBX`O2)=8Q|y6%O%Cdz`(%k>ERLtq$dEeDhCsgR8sz~IZ;uxewC+-V@O8h+Zne7 zTNHR)Q`2W}68gPCfIINl1_7=_`#Fi5*d}gIdp1x13JcS8me9y-c7^uyml+#O6lNGe z(7rE8_rIq`&f{XOnEAX?#=ZRK^u%KlYfHaRIG`Gpoy@cM^HaCm+rDh3{F zH69KaI`3V7T-QtUz5I#Qzg4HH>sS4pw|~K(s|gumaeWER`A7FU#_xQx@~C@FXPRCQ zpW;Flwc_2T+Es-{tedZ0;@ETh|AAOOl^2usw=OyM(DRbuW9x_063g?ZO?N)tHTCqg zNTI_QB4yty$JmADRc7sGyQ|cAOX8i%ACo)J9xr>;ru|YY-k^TDWA~xAZw*R+9%B3W zu2lU*xu=k?(HhfxXF5vucwLrQueHf`TH;*J{F6(r_P@OFI&{ai&=CD9@0<{RZ;s_r z4`;sTd(0DGK5aUSfyt>2t4|%i+PglmX6cLYST}XacOT8R?y<0Jy0|g<)?1zIQlYZ` z<<1)qwr_@p95DQx;K68fKk@ahZ~e?Jj|6jOE&Es4;BoJ(y1<<#V;>0t7_#rZ - + diff --git a/docs/inherit_graph_16.md5 b/docs/inherit_graph_16.md5 index cf0320f..e2932e3 100644 --- a/docs/inherit_graph_16.md5 +++ b/docs/inherit_graph_16.md5 @@ -1 +1 @@ -701ce3c8071a0db532a86abe4c463c4d \ No newline at end of file +78a17615e9bc8991b79eb5e5dbca4731 \ No newline at end of file diff --git a/docs/inherit_graph_16.png b/docs/inherit_graph_16.png index 800e46ef840579db4fd2ce957f70cd1bd2efc0a7..0433eef1a934d47e82ba4f81fdfac2ee938c388a 100644 GIT binary patch delta 530 zcmZo>na!fu8Q|y6%O%Cdz`(%k>ERLtq$dNhDhC^obSt}EJ5f=z{(`5AV@SoEx3eGS z9##-&wY*|z-)6|`de<*CfWLCe6=h!=Qp!`PF zU0%tb+t&teJ7h5-+u?M~jJfC5-M5_b;&PvA+8VKJrS)vnPx@%yd&w6Pw93@@auk17 z@9EhqO)hAsADQK|B2i0s@uB*&OW(kXw*4ewr zHbaf6IZep`mHMIX!}R#5&$U~}H|gyEY%_mhdr8yQZ-v{~fYH%1LGCBJN3_lDM^jIG Q0i&70)78&qol`;+0EV>e9smFU delta 506 zcmbQu(#)dR8Q|y6%O%Cdz`(%k>ERLtq^AI}DhCsg)IJd&JW)}!eut-vV@SoEw=?c; zY*r9xbyo9@?5vIGXw|5V;Aow|o-VOj!JeD3{8Ev}2`|UICe~+tjVD!=y zIyh5ZVg?k|&p5#AEwnV`L+^{&Jtdz$JGW0?=T{*7G|$ie$MUTOXR2Gnq(x-^d)4sd zJ4@d>usEn*kUwj7%GPVQp71AG*tD*_cGRT*jn2*TPx_y(AN79}sr2~n96gUsKc=7T z`RMY`ATD?A?(lrY&AHQxPVsJ=GONssPj}K$`3YxcD1W;1<=Dj^@u^_k&H& z_~f3oErR0Ge$mBNC97=aAD@?g((m4qPwRHx28jGl&lDYgU+D_*4iEV23 z?8@cbC;HhhyPCM9X#~ylY~L2}aY1`Y0M{8|9#rJ>z%u{#wtrR(%?*{GZN6V;l;EkW g=g2yM6m&E6Bd0lRjQy}!02rMNp00i_>zopr01)`#$^ZZW diff --git a/docs/inherit_graph_17.map b/docs/inherit_graph_17.map index 16502a7..cdf0073 100644 --- a/docs/inherit_graph_17.map +++ b/docs/inherit_graph_17.map @@ -1,3 +1,3 @@ - + diff --git a/docs/inherit_graph_17.md5 b/docs/inherit_graph_17.md5 index e2b88f6..5d6c17f 100644 --- a/docs/inherit_graph_17.md5 +++ b/docs/inherit_graph_17.md5 @@ -1 +1 @@ -e56922f3d2b5208ac886588f13d98c72 \ No newline at end of file +16acf8ca9d7d9f5ee2ab92584cd8274c \ No newline at end of file diff --git a/docs/inherit_graph_17.png b/docs/inherit_graph_17.png index c41f8c308c2556f0825f3219c1508018f0a16485..af0eba0bc7b5fe4d010154f9fda7e3b9e0409978 100644 GIT binary patch delta 613 zcmV-r0-F8f1nmSNiBL{Q4GJ0x0000DNk~Le0002E0000b2nGNE0P)KsT9F|Ye&xja=G07V;`~+Gas1wyI)uUYQBi*$3O6r z;Is4jY#t4Omec7JJU(@f1E4D;e>e;c2@XR;g2T{|;4m~KI1DZNn6L!%%ioKLh{!po z(f#iD^Rb0FVCH8W{?C@<#q^#Jl>{dW2i{{cbM=Zvj-xg1mgaJa#r4-hiJ~aSjiHv{p-*2)kg2v> z{nWPWSz=gRYppeEY3~3y*oBVQY&t{9lsiW1wI#8&oG*#LWX@`? za}UXz1ApiV7-vfHI0IE&XbXz+H00000fOq!~F9V~_1;=`>z`)Ro8Mal75BheTTB ze!us9FD)B)(e-+*6%T2b!{K0Ae>krY6l#T_P%8w5S|KQ&**1zX#*7H&N0&)P9d3-b(z^# zQnRPxyPBOvqHVEAU6E(it}6l5JvDWUTc|Vrmwkyrz*?30n2QK*#=nD*u}-lo)6ZzP zn$#jfkwgoOx~q=Ul{U0re+t(Xna|XW;x35pl8g^k)@N4%UZdqd)gF!~nx;$ALExHF zyIeF{NgX*Y3pnRm4=?P>yBLWXw@2fNrU^#7tRMoc?SFC2&af+>{A{}{sa2ietW7H& zB{Cap>p^5bs1<@jtq>Gyg`jw5+soxrKMv9w&*yWy-Aao`E63xpF;+aJY4-cQyj=K4 p5b{NEULh#d3PGV(2nw}AP+lU!sL;@&IBEa@002ovPDHLkV1i+g8eaea diff --git a/docs/inherit_graph_18.map b/docs/inherit_graph_18.map index 02f8188..8caa0c0 100644 --- a/docs/inherit_graph_18.map +++ b/docs/inherit_graph_18.map @@ -1,3 +1,3 @@ - + diff --git a/docs/inherit_graph_18.md5 b/docs/inherit_graph_18.md5 index 1436d4a..6dd4090 100644 --- a/docs/inherit_graph_18.md5 +++ b/docs/inherit_graph_18.md5 @@ -1 +1 @@ -9e39a868edc1ac325e09c98639b913e8 \ No newline at end of file +8dda3476a30beda6297ffc063d32abe3 \ No newline at end of file diff --git a/docs/inherit_graph_18.png b/docs/inherit_graph_18.png index d6d1c179cadbabf44babe5e3eff33ea2d0cf3f00..a11ea1002b66368c5f8ef4eee031e89a7f360da9 100644 GIT binary patch delta 596 zcmV-a0;~PL1lt55iBL{Q4GJ0x0000DNk~Le0002D0000b2nGNE006*v*O4IL=GbI+0HEh6+VnHUv9&L zxM$Aib9HY3G&r43!S<=K9{|ljf7~!Eh#Q6lal^16ZWtEC4Z{+>3d}*|;kzJXj4{?) zjmKvrB28?E?6|q;6~Bw?V~f1Rv|vp8e5i=qn6TrmM79_Fc(vkxraab&zZA+6B|;Nv ztzF#7o*AvUYUZb@xJBgu$8Gcb#QqMAcl)F!D%X#g-4sG)%UTQ}zf#(Ae|;>;=iFaw zN1iu;8X{LKOV-%>%3d3v`n=q6nx#fg4D;uC@_(Z`A{(HofY+SFfAhvqQ~!-tEra0?j(FmEGPq z21}H@DQbwk*23AvZHZqBf25QKHFohWc0)HKdlt4&&MvNb3*??Hv}v|;`w1!8J#)s# z&H%a3$?3n=cS{bI7D~x;HReNunu}jW+!}|zkPuSGr;IK2BggI*+e delta 567 zcmV-70?7T_1il0ziBL{Q4GJ0x0000DNk~Le0002E0000b2m$~A0Dh^o4Ur)fe*yDJ zL_t(|ob8&?k%KS{MB|$@MJ4n>Aru1iK_L{veUS5THrQ)f*f81mkqL>ACA?TNiCNe6 zMM#XF+5wPfK%o!_3WY#WC#5(9A~hJDux(Ffzs{I(NL;L<;=i zWrtSG$e)PUWw}U%^75k5oz61sW0u8VJ?qT)llaoo<6PNwT@UZhTOo^3D=&Sam_O{{ z{wx2zV{g9-XNZjAdk)}~q_dEm5d(+F&|vPHjcm=>?ty%{2usfysq6Wfe|`8|#8O;Y zq9JW>wh3_L<#!>0p^@CT3C=7lHmV#~LZLVc4GeEDsQ()9pPCQuSxnTe*0>jS9+|DQ zPBWXsb*1;|ZHMigRIYZN6-5zo>DBdIWeWqYQkiqCqP7ydo_$3KRENx^CCRh1&8fc8 zjV>+XeVOg3q@jIKUQzb>e}FfA)ZXuhkh7vTX9h_r94ZX-Ah=dh8?Cc^BtjANq0UT% z?E}X6C{fQz&JRP9B^A!Dt{MV-=>s>C3WY)-C=>!gp%4fPg+Nd!1cE{#5C_juhG8fl z2e~;1LTTH!d>rKFJnt`zqzdd&2n2;fASe_9L7@ - + diff --git a/docs/inherit_graph_19.md5 b/docs/inherit_graph_19.md5 index 935dc1f..8ee1da2 100644 --- a/docs/inherit_graph_19.md5 +++ b/docs/inherit_graph_19.md5 @@ -1 +1 @@ -f8ba803295059b389518470bf6074dfb \ No newline at end of file +ccbea333567c6c01f14f69c9b91ff059 \ No newline at end of file diff --git a/docs/inherit_graph_19.png b/docs/inherit_graph_19.png index 967ebb1c4e9452931fa5ec62bd204d5904f9dc9d..400c905d87a3fe23692b3853a9760e0314ec02c0 100644 GIT binary patch delta 530 zcmbQhGMh!QGr-TCmrII^fq{Y7)59eQNcRA-DhC^ooN$>@VxppG{RK}K$B>FSZ)d;H zJ**&b^nJkb7b=lUxFbIKOxxtJ`rO6*c}jB+f0?Y^!u#yOkK~tsmuNH|_{n&ly-!35 zXbMBa?}K$mO?=;<`SU`Nt*3SCx92}={_QHwuTxH|Gx(ft9hs0|*YV=?S__G^^vG$i zvJUJx^SLG}U+Oi3IeQzUQbN6i0uzXaP)+?;g=X;Y|1T&wach`zjad4us#ltdCi`99 z9$%6qv8edrnLDWyovy!Kx?Ci@_`P9*w^T=j+DpObJpZ%X6{d_y;)bqb~=dM#b zwcj}S(cGgvUr%4%vHkifnQONe>YGTtcDtSTKJKZ` zzq|@fGvl1k8tiO8Q(Kt)Uh~IWFLAZ+yH@5#&vkW5JGb=J!tmL5M5IqMSZ-XmX}XEu z*`3m6hqow{URYTkd@{*bP0l+XkKN1w=*wJ zY*pZKO?^H!QTf|Pnco`(xC4J*u-n4_?Qmq9X$Pa=*)z8C)*YOjG0eZhGS_l{sH&Ui z$FQNn&j^Bk+z`KPQX2a`MC-t^Rjan;o_)H%Dr#D)%<(sxjkcd{{4b|`uUT=?fM@3? z#=KX%?tOhwGl{We5@S6OmrQDWZ2L%L>6LZQugP;+a?rr7Yo?W}h^H%-(tR7S32vr)#r1+{qtJ# z{yynlS$`(}Wy|!J{Z+s+@tN%-u0OU1BiVh9FJAPdLUraFRKyMU*27G<5#V|+~cV1-Ac_j)T;L?311I>!B?E+FMeXi$7D-g)J8HErqL z#}`&+&Wicj;Jokt`r4n<{wFfqTg*>km - + diff --git a/docs/inherit_graph_2.md5 b/docs/inherit_graph_2.md5 index 002bc19..13ca83b 100644 --- a/docs/inherit_graph_2.md5 +++ b/docs/inherit_graph_2.md5 @@ -1 +1 @@ -fa4d23f06c860b84a4260c815f89a2e7 \ No newline at end of file +e4983cdece2d6b691795761ddd62464d \ No newline at end of file diff --git a/docs/inherit_graph_2.png b/docs/inherit_graph_2.png index 5dc83b9505964ab2cf200cfb43514338aea4a725..6d2aa49d12416e8b85cacf1a39cabfe2d69dbf18 100644 GIT binary patch delta 612 zcmV-q0-OEf1ndMMiBL{Q4GJ0x0000DNk~Le0002A0000b2nGNE0PFX|)R7?-e<4Xk zK~#90?cC9A!ypiV;lt_}og|BNfk>GtQWj{{Ir^3b(Ez0`my7rK)Hn{HDiRt)e<7hU6cQRkA)zr85*kAZZrkNB=I!?x5fQQ0M&A=_ z&pmHX%klRR>vGOo%wOpGi?p8)m4p`Y2OgVDje+)%>~0KNG4(LER5iw5ijrdk-^H`m zM({L)@>r}7%{Cu5$wTiC#k)4P(zsG%e+j)u>&`oW z>1!mmTFK!H&UazgN|Vrpx;5cEDY4Ip)sh-*Dc0VvF}BpWa$=cZi`1!u-RrIO8BJ^G zl%Rc&?3}@BOiZi~?Tg!bY^nXXs)e-|uWAW>1hL(i&`w3H?TB*9rkZzXH=ge9&_|GZ z=Z!sCN*?V!DS0B)NbFi)f0picIa=)y_!eAi=ed04QP0Wj%DG!>?%pid3fh`33Paq- zTkfj8q&812E7nSmt?e;u`}n#2ZY`fQcR6ZNN$Awc%z2%1UT&YIi@mk+m9}pgTWY_h z^IU50r&AXt$EZIKF0002s=>7p_g|6O3R3qB}0000*%H#RjI4Q|P9v=R{EnNan6*slQy+Hr>tVJ$#T=5we?+1_Vfk)JEA5Z+{b`I$m^rur!zmkN+f-`H^3;jV5^anxE9|V!;Pj9!Iy$;d>!!R5U2N_BDqw6{=Fg>I>PN$Q+to#Ck oG!FX@f}lSLg8m=~`hy^T0p54Ftp5a1 - + diff --git a/docs/inherit_graph_20.md5 b/docs/inherit_graph_20.md5 index e6c252a..8f4334a 100644 --- a/docs/inherit_graph_20.md5 +++ b/docs/inherit_graph_20.md5 @@ -1 +1 @@ -b0535a940f9b972af03a6c03421c80bc \ No newline at end of file +82be683757e2e0fde22cce77b025b04c \ No newline at end of file diff --git a/docs/inherit_graph_20.png b/docs/inherit_graph_20.png index f5e0ebf04c565075530c888ecb497c1429baad56..17253d532514dfd7c71f690a3b0c667382c2020c 100644 GIT binary patch delta 602 zcmV-g0;T=%1o;Gz83+ad0015dNMw;A6@M;CL_t(|ob8<3Z37_?MVVE~NF`|`4Ontb zmfS$1)R8||;nZRBWs6{7fgNCj&XKIxERW0V^#E%r#sB~S006*9#4k7;4zD8eHbM-* zR;;z(=kxi;Eqn1RiO8FXeDsqApvt>3=F=^BGWng;>C{{efF{S|F<8EI)&bBROn(m3 zgUMlfFgZ*QCWq<4TGAx%B?xZ{tE!yOTM=y2b+94|)i zc&M1%n6U63!3+@_xAsPt&cm;-6^Bvrtf9sHYhk;hOz4JMYm=GnKch9TmhtIoauIpF z+%msT>~pBSTW2j$ZWfP?71NhfH-BgBlDVwuh?SM-%GDBUqm`lWiJ*nq)wU~ZY+b_F z+Pk0q%o)q9IsKK?Z84XWj#%9iU8Qro$F;@w!%sq5W2l+D_Mqq9yx89yLPqwrrTW^_ zUbjR`YuzLE*4hW;rUy@LYL~Lypp`E1vrw|-YMIG>J-f@~J!thbB-AE%e}7-w|DLE> zIa-*#)fZ?NPgne{NzPWKWhO1{+u#3(4sd%lxKBw|*L-T^o;|ebmdV!+gPQGQ!A~99 z{G~W$)ZBw@?e!F?FHB9p8uvwmmPtUx+N>?x?Clq83+OZ005C|-!qXR6@Mj3L_t(|ob8$6k-{Jlg~N?y*ob}T*oTE! zh}uWehxU>C;T*%U8+d^YiR1fzH~}~8f{$fm+&GRMApk#X2S7dsYK5RsD+GmFAt<}B z(f9rJdR;3NvNaBe!{u`E&3}32`FuVekLDqfEiw#4-}hn9P8!|s_g3+c?Q%MuqJJLN zD+GmFAt=-eL7`R%ic;HVan40Oi@sEf+?o6G<2QIU=A3(b@fRjz%FZR`Qlgbkgkm`J z2stvo+(=ZRP1!7#n>$El{5W5I21ScIj-$FqH$_>5CiAk_iu=Pi!>{CZWbeP4nx0Q8 zazN=fVUQR+8`zW=+01%OJCbH)nSbNG4Js8=cm_=|H>FS6`|EJ8%N&rnH)~KCnCe9u zWIZB5zE_~~dqKXV0pxmNNJW%ieLR-9GL~RLQtp`f_9$98pU - + diff --git a/docs/inherit_graph_21.md5 b/docs/inherit_graph_21.md5 index 7fef692..e5766b8 100644 --- a/docs/inherit_graph_21.md5 +++ b/docs/inherit_graph_21.md5 @@ -1 +1 @@ -a20990d02cf3f507981abfbe28f4479b \ No newline at end of file +e145ccf205c591db28f1a2bae3eb8cee \ No newline at end of file diff --git a/docs/inherit_graph_21.png b/docs/inherit_graph_21.png index 1b71dbde03e568ab902d1243852f87b5915c9ff8..a420962a447af0d333026e38f7d6136bedbbe411 100644 GIT binary patch delta 533 zcmV+w0_y#)1hfQ@83+ad003CO>&}rO6@TeTL_t(|ob8+KZG$inhR;^V=p$sD-9ELmV5vAH`4c^@fKF!(;qi|s>#2mk;8006u?ZrRXv-KTTzc0@4X zdV~=E#&LY4Z6C{voO3tl+_zm=;NpA{(NEg25?y2%2K8vbwdwml+wP6y005!`_J2Th zz#NDUm;=!Pb09ikPVtpV4bH9JF%uC{2tmYl$xi7U*Qdr;nwLZ_oG)!k_lQV7w=G0O zN0blTVqo|9SoU2CPBM1Rmj#-+)$;PoYY2gTir)>XvCte-Gtn)R$Q{RDsekK0ASa5+?q|Su-sp!nT{I}iRG2E#ednZomDw| z%jGUtiE@QYDaINkt5+>VME7if+;ydMTv5@|r^R+nVbf}3Z!R?)y>&Uo@(SJyhz^(o z(E)QHI$#b&2h4%!fH@EyFb5x719MiQ^WNX*dH$WI>4_fTQ`s zJI3lQ)dl<$7sWghJ8rfm{qKEYmfM9tJd=c`rCKtS|EaNJ+`xI^syYN6|C2UrS)zp9 zRIUpJR&#&t^WR?o?DgZ1JMO>Vy_{vsna?)9!S{;R^yY299ru$#T5r1d#iqYk>!F%~ zM!4MF;>EErLr})3T_9`yu8Ahmyfcih%&GglJFhF!Jg?A2|KitxrAa@yW;s1QwsXa! zloJhYGgMAKe0}X - + diff --git a/docs/inherit_graph_22.md5 b/docs/inherit_graph_22.md5 index 3aca8ba..fd9bacf 100644 --- a/docs/inherit_graph_22.md5 +++ b/docs/inherit_graph_22.md5 @@ -1 +1 @@ -dc7b2c026dd29f15c93e77eacdbce937 \ No newline at end of file +386bc905bc48ef25a9be64426b9f77ce \ No newline at end of file diff --git a/docs/inherit_graph_22.png b/docs/inherit_graph_22.png index 8a838aa16461ad76e01defde08effa87a97e5b6b..992416e5001b56cd001587de624e844fa868d938 100644 GIT binary patch delta 575 zcmV-F0>J&J1jhs+iBL{Q4GJ0x0000DNk~Le0001+0000b2nGNE09B!ziIE`{fBZ>A zK~#90?VH_g10fKEcTvhnC2k}QSaMC4+(4q#kvCW2)M4^;5yJc*yI?$@WXT72FyJ|M zK{62l00000m>u>Dj>qFWGap8X0qbC`{kdE&zi!!^e-kqwnE6vr7Fd)IBKmR*9?Z6J zKA*+afHgUtPQh}ctOL9-FdI+@SA)d~`7zQCPUfWTx=@@1^b+|T$?d`1J-H^>4=rp=ql9`d#2ZlwY`uMrt20)bL2u=e=L{rzt^-W zp=tXuLZ*%7VkNq2v~1TzGI^Ij-@W?iX136q;EK!%E*X$^7_6CO>0D?;?$vuEBeFq= ziIXtON;z0fDj>PC`Ff^X*<3=QCKd*I^i{*?9a)N&l~lrXQbr!K8*MdO?m7QVEtliX zOwB6SGre$g)82?}5d786e_#4rLq^I_xucHS`V=YSwzRuPOUwPz?S$xJw$!A@u2Y+b z+;wT)p88Vlu{KKDEgk1G7^#Hm4|P}C0K7VC=WMO)4KH9GrZ*cA47Li>hf%N&FdI+< zW&>)#Y(NeCNg1f|U^ZjS?S8+1U$55@dcYzWV{W50000000DyY_6#$NLW9nsm_E!J^ N002ovPDHLkV1naE2pRwY delta 542 zcmX@kvYbV+Gr-TCmrII^fq{Y7)59eQNY4RcRSqT~X(2DZe4?Ug{T)vi$B>FSZ)e<{ z*s8$OTKe29RrOmT_eO!G{6OOS!PqwMAHqx(#?PyR*gPLN2uYs*EYqM3N*7 zRbe?7%OVJ>=Qd+_mBxz07M1GHepGJDs+L%K z;eT|EuP^IQaKy+%=yb_r{e2LkLP_&(R=t5TgI?rzbGZ#he_MH9w zr{IV6ZWg_I?BQXnr)YAY-g3#QQ%W!7#m1jTvjijjR%NdK>UlL{VsG2x9>&GByQXaF zT)sbmf7;x@)xUhhuUxS}T~m?csKW5< z|CN$=Y$g-@%mdjoB760B{AMkO2YaE2*Xv!|zB3y<5-6Sb{97G^o7MfrO;Sjq%k@Nj YpFVdQ&MBb@0AB|BegFUf diff --git a/docs/inherit_graph_23.map b/docs/inherit_graph_23.map index c8528c8..12ebf53 100644 --- a/docs/inherit_graph_23.map +++ b/docs/inherit_graph_23.map @@ -1,3 +1,3 @@ - + diff --git a/docs/inherit_graph_23.md5 b/docs/inherit_graph_23.md5 index a809120..5ae77cc 100644 --- a/docs/inherit_graph_23.md5 +++ b/docs/inherit_graph_23.md5 @@ -1 +1 @@ -61b046629e30ee985799df347e8f3e0e \ No newline at end of file +a6c31486b00eba65f0728df0e21899a2 \ No newline at end of file diff --git a/docs/inherit_graph_23.png b/docs/inherit_graph_23.png index bb1e6ea64d6aaa1f22b605bde4c0fa65f3f90c49..dcc75a5eb2969c368b2547d12b0e333480eac1d1 100644 GIT binary patch delta 486 zcmaFM{GM5{Gr-TCmrII^fq{Y7)59eQNS6VzDhC^ooW57qW1^yH{Sr?X$B>FSZ)cs& zJ#4_!>bfvFWs=S%R-Otq=C}o}&tIGkRw<6KWKBr*G?P5pck}yPp}zrB=Kb|yFXRK7 z!l1ig$HLdUxCLYTJ=k7wDE{etT=6_t{-c7@E}@Ip>oOa;YOJ2`t32#0~Arz3@wB9;AOX=VP^ z0j@XhuvPB<#-Q@~TG0fd^R?-U$q7d#gOu6?Hl6#BXCi90@7CkH0J>F4x2nHL@Lapmeq(?qjY zF%Ox&$4vpXcm6d=(`9S?c#u=U}7t2rF QkOl?1r>mdKI;Vst0QcC_cK`qY delta 484 zcmaFQ{FYgI%U!Hw)F?OdwiM)=>_k*>wS`=8L9gjb&@fWW1dg!n+ZHYv3$pNL)_bU>w=>FQ_7fr*zWnBH)~mv z>^qo7p!WI=oKr=Vtfnkozqa#4W?b_8x8YLu-yNN^%(pL{dpWj5aQf_&sCBU{p8Kcq z2YuSNUoVaCkdd?J2?=Fs#kz?LA3fV`_utp0{ixULPj#8{XO*Vsc)h*qmv?sBws%~y zhl=(sK7ViG{j&7K@%;uXCBw7Ajn198a9?+!*4#_8Cg0i>wYxqnNPVO3)2zG&8!s=K zy+iZPI+?SVPx|R5KUbQq_G)fw#6lT#-KaqnGx=+o-WPbbdI)-=9mSA6}CjAgqb zXK2*D$@di3r1~4h-P(5L{no^rJGTYLNKCqN^_b;mjiqKn`=d)IReIE1`1EQ6&ntL{ z!5JH@&hNbU+xjnqmlH>hthV0w_=pd39QU8kV!i)7itUjU1U-{4*<={}<#-`KFya_I MUHx3vIVCg!0ApC=(*OVf diff --git a/docs/inherit_graph_24.map b/docs/inherit_graph_24.map index 71bd024..d52661a 100644 --- a/docs/inherit_graph_24.map +++ b/docs/inherit_graph_24.map @@ -1,3 +1,3 @@ - + diff --git a/docs/inherit_graph_24.md5 b/docs/inherit_graph_24.md5 index 41e7a95..ee35691 100644 --- a/docs/inherit_graph_24.md5 +++ b/docs/inherit_graph_24.md5 @@ -1 +1 @@ -fecb9c5ba3d5425724a5126c49c9f8a2 \ No newline at end of file +8e0b31c3f1a0b3341693dadeaaf9f60a \ No newline at end of file diff --git a/docs/inherit_graph_24.png b/docs/inherit_graph_24.png index 8a951ecc9e4e12e47ef87f30adf36fdd225b774a..d1b54f3f050b1ba3550d60d562855fce10ed0637 100644 GIT binary patch delta 589 zcmV-T0X=>ka1gv0`^I!E7_g3f{a6l9q=xr^nKnEW z@aS|pbL>_(%xr;H@hW|6B z=E>{)JkvR^F5om_5pjD`Lg<%&DX!P~dZu&E76L_cEA1X}rfgEcB69!B+tc^+{+hm) zG3NS~`c1{M#GR9`T-JHgjBA;f{4=dq))=E{UM#A&5KHojn0q}QVETHlf3K#Ww(mH} zmXoH8XjXS?oSud3as}SMFf}V%ugiR| zm?7-&6r!eJw4ZI=Z;jg6e|sK7dQZ?odY{o+_Z7I+B`%MZ?`ySV~6YT+4gbv0B{tdMHi}e#n4p6fj(K zQ^0#)s_>lL6fiJ_0)}f8FkGX6;Tr$g1gAy#1jhs+iBL{Q4GJ0x0000DNk~Le000270000b2m$~A0D`=q$B`ive*yeS zL_t(|ob8(7k-{Jlg~N?y*ob}T*hdOUA!;8IFTAt#yJ-@{+l07*zEe5SIuS5 z_Jr5roa<-Fh7x+h5&D^9&1J{l(Ie5U@TFcMB|YK(pe??g#s~q)p`rodS=KQ*LKON$ zYGx;loSYF2vt@#HU6V7?kiB<&g3cuRdDH4YM+1bja=^A6$)%Jpu??~{e+rw3L42}1 zTOTvwQX44diBC{vQI&e>KGHnfWXIe)BnM<&u3(iA8ZnEKo+!1SX@=T=EzPbGKF3Lf zWTWX-#2FpsiQ-QGgyB|cE+IcyhJ2Rwq!vm0MU3^8?;Tn9NeIPe7E7W@KRv6j7>T{ivz O0000 - + diff --git a/docs/inherit_graph_25.md5 b/docs/inherit_graph_25.md5 index 9a82654..76e3e4d 100644 --- a/docs/inherit_graph_25.md5 +++ b/docs/inherit_graph_25.md5 @@ -1 +1 @@ -a34560f987989a447b41f73ee39cb038 \ No newline at end of file +79e380d8132ca406ccea8e749b0464e8 \ No newline at end of file diff --git a/docs/inherit_graph_25.png b/docs/inherit_graph_25.png index 387fbdcaa976a4e6303fae8e941767c38f34da17..c875efab9a0e4c68459bcafda7b0783e59064fc3 100644 GIT binary patch delta 602 zcmV-g0;T=R1mOfBiBL{Q4GJ0x0000DNk~Le0002D0000b2nGNE006*v*O4IQabdoO81tMjpNLip&=jgvokeFs` z61U-Uxit3%pa$pj+1tK!_5+|Be~25V1#!c)Aa0lz#0}GexM5m?M}et`JpCQ$53RKl z5v8@>YUVK5@z}$>?fCb27co8bWV5(!hmS7g9RGcN-L_isI8t2qqzB59O88!+S-EDU z*1THAr<=G%#5)nw?%p%kzE8Vv?zo|QuAP#;K783dHs6@7P+MreAyQ-Se|x4@Mm7nc zg~&ITB`JjJzSuIpc5Q-@J8tNnZ-0=}H#ZKceuix2#Br-H=31#Xb#v&QZl#O3OP%#C z^EJjz9iw->m}9TCZzF2w+8f_4;$EY7P3qRcDH(27Qs-vJtfj~gnYq^(v71iKN};7W zhtVenYm}@MEkxexhqJ5Gf07Lyxg|o4abq@Z zLAuLvOuVtNx6F6#hf*@`*4Wp4SFNZjZl9y2o5I}ZayFZ(Hr=++_f)$%&#l=?iF4^V zYwfv=UbS{rmH^ZQal^DAZkQIt4by_SVOkJ3ObgOV0090QzwI8P=Bq64NdN!<07*qoM6N<$f>BE=8~^|S delta 579 zcmV-J0=)g<1j+;7g+S0K1cF8(5Rqm!k8X3OX+WZ4|F#G-nj`hza3g+gc9KK+k*erCX24>{byE)PvBb&}v=AMsdyw zW$vGFM1T4TNCZ6?Mgu1ZM6pR}P6gD5TC*mf95Jn}W^B*E`*x|`dNSy3e>hd%qu;m1 zAQAMSXp)K(kX7Wbt^*cVU3(#slV)^!8?ZDAE<%+3h6wpn_SmqCF|97TQ|Iw!D{X0% zD0}SvVM~#DUd^v-PF|#6rion!swh!*>c;brovz+RY#(0`uu8pok4@ax@2$u15ywNN zW{TIGLtGM4EG^CNWxk_of0g#fz7+-8BN`&4!utCi7VVTFQbDRTM;!)6s7+3D0vpcK zv>Qbz!245VX0gM~hn-$s1)fr?IU_O?0Z$H2hjRF(Ke&-vXcPiLqYwxhg+S0K1cF8( z5Ht#bi2ROnzu)`oAcGSz%H?wDuY(NESpUvQhJ`%}fuK - + diff --git a/docs/inherit_graph_26.md5 b/docs/inherit_graph_26.md5 index 7cdcfb2..0e64a5e 100644 --- a/docs/inherit_graph_26.md5 +++ b/docs/inherit_graph_26.md5 @@ -1 +1 @@ -058172ecc59cab4d6d439c5b8c8f0039 \ No newline at end of file +02c8ad7c701e7dab61c6801328822177 \ No newline at end of file diff --git a/docs/inherit_graph_26.png b/docs/inherit_graph_26.png index 8ad7d10d448d4adad4ea33d132b8694ca598edbf..bcce4860168e73706ddc81b70c25a404e5c92536 100644 GIT binary patch delta 567 zcmV-70?7Td1iu6!iBL{Q4GJ0x0000DNk~Le0001-0000b2nGNE0JnXB@R1=EfAmR2 zK~#90?VI6k!ypiaIn*&aNfzk>mOPUsFVL!U^q;3l<}m%`2obqMh z!5bJucoz7W#+IBhsvutf55aW$3F*y374wDcQwT~d9?HO54*_$yOtU7Yz5 zF&q&+U!lJ3eQIB7d>^g}L*wna?LMETP+N|!R4t(~rFO3EqU12%>5{rff2^dr??dDE z%yy<^?2Y&7-F^_CaYJXb6kR!5w$DoOoWtDQmztxQk{Vl3%`->N+}t{S=98GSw<}rp zILkHr4(BGqUW8i~LS~62e=`=pM1PE!d5^?Bqvgo=x#RdKYPeYPbI0Vw+e^^V{@6Sz z8dBn>uH_15N}*~=EmcOrb*OsNkXmltK5$*C-=((t{0;EX%v~yY4`4VT3JeECf#HBC z_#-qB<;8GX>-)N{zss`J&;vR`YkjY+0RR91005llA8@)<>!L?J4S@gv002ovPDHLk FV1j`h3wZzl delta 555 zcmV+`0@VG#1hWJoiBL{Q4GJ0x0000DNk~Le0001;0000b2m$~A0N34onUNtCf9Od> zK~#90?U>P#gCG!w9~NRE(LPKcNgv)r<`@DiAS`J1{_iR5;O@c?3qh^x z+5mC<9Gw6t0(6xLbd?EomC40yEXy*E<58)A9NM-WhCw$!_UrTcoaecEN+6fVotGJ&o#A?{6nlv1uS|B+cK6?CFQS9sIb`NSj^ z@6$CF8q027bsmfZj=>C<7P@l6E;Xm_JL<4C5$n2=YyVWFWym!yPF>X>uCe*dm^AwR zSeP=q{k3y#w8FW~U_^f)w_Dndd@tF2b$8d{Eyy}){&0J4iMp#^ZS}Wue|XQAwHn+L z)DtlnNRKG9#+s9p?5a{7Ci5$L#sr;nMYjZIbenVBueHnIj}O2V=@D%Ihwqcrj>t0Eo#k0rQqlS?R9F=yMa=16o}W@&OoA_q_UNwAZU z3nJ3Pu0WA}xV~~p*Oi>0f0%B;Z@0!4ZzsKZLU=s*6FXKs4`u6cTKNU}l)X3ki*r+D z<^E5K--qk}a|O+}ybpuDKv$VSSD8RpnGpA;`~6-&50Jy_^}1fKriIY8@B3Q$05-a= tGn)rLw1Pt5e3c1wl?il}33QdoFAY0gxt-O{J^%m!07*qoM6N<$0fG}91#tiX diff --git a/docs/inherit_graph_27.map b/docs/inherit_graph_27.map index d5793d3..b7a0c43 100644 --- a/docs/inherit_graph_27.map +++ b/docs/inherit_graph_27.map @@ -1,3 +1,3 @@ - + diff --git a/docs/inherit_graph_27.md5 b/docs/inherit_graph_27.md5 index 1b08bd6..139afc6 100644 --- a/docs/inherit_graph_27.md5 +++ b/docs/inherit_graph_27.md5 @@ -1 +1 @@ -90a542863d137792d02ac7d76c8de92d \ No newline at end of file +bc048ffb8945894b61be872f36d4d539 \ No newline at end of file diff --git a/docs/inherit_graph_27.png b/docs/inherit_graph_27.png index c16e7d1de77895fc65986beba9023d9d8006fc56..839df681226a6006215a5e6176b62abd42fa47bb 100644 GIT binary patch delta 551 zcmV+?0@(es1h51liBL{Q4GJ0x0000DNk~Le0001@0000b2nGNE0KrExdyyd(f8|L; zK~#90?c32!!!QtlVPC`;OwvVIpi*b5)CEAy!CR&%bJRQqjBA_3ImcJ>e-ctj-1vOC zI8G4G0RR91ze&8|csxFf$e~9t*az?Z$K`VQ47WYSjYQ-iBCp$pg&lfv&b@^j?h0{o zKA)RMgZ(+3PRZ@V#&G~i6e3KZe-L2;g$NTUM3_J!!i4PWo4G{9dGD+D&u!C!$j|%y z9{tC{JZzDZaQv~Y^Rc=RA60y!wN8Ami>gM8@z+{?Yxdq}udLpK%Spvm8pos48duBw zY`R7ik?)^Uo80fy=lB@8W6tR>6c=ai`=vNaG1ta5H2f+3k$D#L^^Lxqwn?X5bbD*{aA@A66{QhOzjaVQSHDG47Nl zv!mwQfN(9WZL=9MPDpMreOih8tG~7TOG-subKEtt)U3*rLWBtvB23^P>|w%PAr8ZEz1?o_ p<2d$+2Rkqf!?kw|00026?+d*nTHOmdg0TPq002ovPDHLkV1nq!1P}lK delta 553 zcmdnMvWZ2pGr-TCmrII^fq{Y7)59eQNG}FrRSq^Fsn;6mI#E%y{<)`%V@SoEw{sHv zS`>I%6E~NC36pc#%g%nWdc*!15=(fTE^z-{!5vE@x>bcLJ-ts+eP9g`h&%{mI=6%Z-o36X}Z>LH6mTPr( zJFPB#FOb=;xHa<9{do}!E`7DME;74*D>SRSq&LigLwMVCjnHW?6H@fv)Mx8<7siSH z@}Ii(OZl;X1#><%x5b+7GhOC?PyJ_H^YN!WE1!xU@1WQ4JbPL ze+u(FPtz*5V>jl7yB{;2Qz~*w#Vb&_vzlYs@(ZEn1|ETiYIVzI+~QEUHTRLvlq)q} z8_xGu7euD?%vIv`I9+-FSGMl?iNa;|zPoj|UAgl9ZePnTiDI_rc@y0BZk|2+)~6VI zRkJBuqF+yr5(s16H(SjBDX=x%n3#`xBrK5Nk9mptF5?q p!=HLLCZ_-MCq4j04OI0HX1n9*@!b - + diff --git a/docs/inherit_graph_3.md5 b/docs/inherit_graph_3.md5 index 9e4a783..487b5db 100644 --- a/docs/inherit_graph_3.md5 +++ b/docs/inherit_graph_3.md5 @@ -1 +1 @@ -00ac09e4f48effceb0e5d33f4d1a5f11 \ No newline at end of file +1d43b892d2d8b3176c3d01d8c0246bf1 \ No newline at end of file diff --git a/docs/inherit_graph_3.png b/docs/inherit_graph_3.png index d39722ec853f8900cef570359340aa43606b4984..fc8ec576d0f2b494ac780618e5d12c199c72f3d1 100644 GIT binary patch delta 538 zcmV+#0_FX#1i1u|83+ad001MKDFTrp6@TtYL_t(|ob8<7ZNnfC#yQk6I!PAk0+upU zBrnjabM(zqBy)s5Sw)yX2JXzI{(evK;gIj}2OO?cV*mgE0002!gTlZxP47f>86gIo z59i#^JkJk5_7>hmL>D6ZJWdukIUmNDFF&v`<;v}L6ITPy&GmYX#_hp604M@e0)KVD zlt3LYB~S-U3Df~o0(B%`3AI4<_b%Q!w`mJwqljtAX&-^F@rbeW^A9b z!TB49nldH2luWK&L(NvBL0a#K+K~G|cBmN6P-T(jq delta 526 zcmdnVvW{hfBnJ}%1H+o1`$8uwiq=2&ba4!+nDchV?TO6>Jgy)8PA!=DMX=2-h@(~I zCG)QayBqyJHgVAjiuNb^-u-0ib-W&9-*R@>I^KZ8=WjAOgg)4=2SIx8&RX;xHkhNz zI^{vt-h1!MtAD50o&Wr&YVRsy8__@P9ZRqBrsgwYs(oEVkc1yVv&T7ReB{->`@QMo%5%i>=k`j(;v$0E~GCPgg&e IbxsLQ02opU8UO$Q diff --git a/docs/inherit_graph_4.map b/docs/inherit_graph_4.map index 63d34be..6c7a2c8 100644 --- a/docs/inherit_graph_4.map +++ b/docs/inherit_graph_4.map @@ -1,3 +1,3 @@ - + diff --git a/docs/inherit_graph_4.md5 b/docs/inherit_graph_4.md5 index 808d22c..13bf140 100644 --- a/docs/inherit_graph_4.md5 +++ b/docs/inherit_graph_4.md5 @@ -1 +1 @@ -c50938a4c1c6868367837d6fe13bb0a0 \ No newline at end of file +20fd388118352bf952e6ea42ac590077 \ No newline at end of file diff --git a/docs/inherit_graph_4.png b/docs/inherit_graph_4.png index fcf344650b8f9d96c9d9197d7678f9a96a504a58..cf3842ef8766bd31d798caa350504ae5aab324b4 100644 GIT binary patch delta 518 zcmeBX>1R>w4DfU3<&xrJU|`_&^l%9R(o=v~m4gjPE?ISeWul^J{Si+W$B>FSZ)d;H zJ**&bw01>u$t0aitU8ry-f;^;pT98opLizm*Gb)?19or96&8J;tfb0PTwl?4IB-{= zfD?ye%M+#BZTsHecYP9eSn`tCz2EaQXUQerzP)X7#~qg^o99F?NwnLw?l+h8JeI9S zeT#RRFNtkS?AW&ZP~8Oa_9mtJ01XYM)+QwwHL0KXoWiI7bFNg+FOBu9pAxHmsAAo* zWm~5&DzQswx}~us?8dIsM)u20uas?aee!;* z`>OlDe!i$$d$(ZEhut&ghRjx*7ZV?JeL>i~ugf+Ih;3=R<-FTe_Umci`kZqWuYa39 zG)!EUrQ938bK_d!yp64`g$lVM!XjKHMa9Q9uk+2i;`HLMb8%Ca>{~P8YfaM*Wo5Ol zDt)w~_R`JAXSy;Jb+k7+b$z;Va@CO~*EV%4rEhhb7k4;HkT<9G7F$ip9DmluZ`-#? zC;QJyKeqSL>6!noJwDQqS2^qC^)1;kzawv5{jo&ydsfcQD{*swM$0uiISOish@er2 z?5l({{F{o--JPELbKdivZT3qP=M;axWe1LfJxu#eB1I*v4DfU3<&xrJU|`_&^l%9R(o=z0m4gXL9^tadov0{Uf56klF{EP7+ZneD z+Y|&^ouBC+c6;M|+)n3+(-pfd{BN6WCK#{?Bpy6{Zq9p8#_P=P5iTB@`x&D5%@k|M8{Mv85I^4M(FvX^?c z3ccHM*9twczjpwH>OoY+H~onmidT-l^r{mDKHEPm+9&YWxH@{n zb62J5SDha$n)uNv(q1<*$m_lM_f;pZI|fIrickGC-}1#H{(SH4VX^XC`Q5Lbf90e- zt6KWPG_9bm3(p#S&3v}o<9vPGq1E>TbI)kZv0JToWk{2>Nig7> z{-8TeI6U>ca)MuJivRj0 zX`m1wv`$yZ^208NmXL{tcQ#Z!i1;(v{6jxFn)iQyq0Ia1j7c}X?_H&}`N-q=>!sx{ t8Bdz{Cf~EGIly7$`0p|AA1FG@&;8wFh1c?rQov|s@O1TaS?83{1ORk!_}~Bl diff --git a/docs/inherit_graph_5.map b/docs/inherit_graph_5.map index c90c273..e3c7558 100644 --- a/docs/inherit_graph_5.map +++ b/docs/inherit_graph_5.map @@ -1,3 +1,3 @@ - + diff --git a/docs/inherit_graph_5.md5 b/docs/inherit_graph_5.md5 index 9ff9516..422023f 100644 --- a/docs/inherit_graph_5.md5 +++ b/docs/inherit_graph_5.md5 @@ -1 +1 @@ -7d990cd673cd87f9c03229dfc1d8fc57 \ No newline at end of file +1cccf59fcd96489a1ad2c3edb91229fb \ No newline at end of file diff --git a/docs/inherit_graph_5.png b/docs/inherit_graph_5.png index bf9d303060903ed42cf0654f88ba66d4bcbd1771..728a0ce8b85ce8d8f4cda0bf7611ee5f5bb6219c 100644 GIT binary patch delta 654 zcmV;90&)G71(pRNiBL{Q4GJ0x0000DNk~Le0002o0000b2nGNE04c|ZP>~@Oe@jV3 zK~#90?c7mr;~)@#VPo|edy-zH7l@QIMal)X>N)zBQ>5nzee$kF4Q60w9J~J~^`Q=i zF?ehsRfhop000267a=`xI-UN65MH+k1~`%!unf@ z_xXVz2{*Z1F6PkyM|D1*7mtt5e{lf68VLtDBH;i>Bpl#~gaaIraDb!i*8(j<`2Rh6 zj8Sx+q|N?O;^wT_FG`FOXCeM@^e-uFSmr#qWKi7t+%z!`FWZ*h36VX(w22xTdc*jH+OcIa1tJC z73p+o>lmJ$WLj+bhD+nwf5jVa>m4D_C*YdgbjUM?TrAI|<&A2Qcvi`*vT3rk^Yv_l z+H-?THfgM5k<`71aVe3!?KF2^=WA7MYHzsog4edAa~D%vt~Z|6y3%!7Z5wGFr9_b2 zJiYzi(@&-3ZK=0+%&gY;npCHhYk`&qr=^_M@tXEE+RkmF^tRX9Wbe|pN-?)yL+{v2 zZT)uVZz%ysBpl#~gj=!o6a>dY!U2v*IKUAJ2RI_(07v{ISisSbgd4~4{&+k-ZnxVO o@c@T0j^lmn7ytkO008a20oqXQ@>4~j1ONa407*qoM6N<$f;X!-T>t<8 delta 653 zcmV;80&@M91(gLMiBL{Q4GJ0x0000DNk~Le0002p0000b2m$~A07++iIgue1e@aP2 zK~#90?VHiH!XONW%RP?aBJQEbJsiYA)IHigbdTN#ygl5KLI{yY{l6y*G=%gALVI-M zICcOS<7aIL03d)afkmK8U=ipNSY#7k^nHImpVx8)d^5YGM55Vk&+4UYNmW+KdZdG!~&Q!_jJuT-~4+D*n_*Z1u3Td_a8S&e;qM$bd^1F z#vV44t%!cg)vHsUUy`JEtEJj>6tZ{uD8%WMi*hWEsac^9G(U&tkBdJ#(v8v{Il&Jj zDJFg>0+e+rLp(Lp7WihTmf|?7=UZ8WT0OofYpgtVnb2jH`h9_Ks=hBpZ*|G07Aosy z*w@PIrS4RVQJ=?4#G9IWe;08_&0wyi z{KjC)hNZ4O5w4e^-%D>mV&~GerG4>l4AaN7sqhw3N!bTh8kwTek%DGgC=FwM(qDso zA7Ao-3>>poR+6wUFdm^_hm%t*>C9udZTt4=|^gs6O00000NkvXXu0mjf^WZTO diff --git a/docs/inherit_graph_6.map b/docs/inherit_graph_6.map index d250c2e..e3d8a9a 100644 --- a/docs/inherit_graph_6.map +++ b/docs/inherit_graph_6.map @@ -1,3 +1,3 @@ - + diff --git a/docs/inherit_graph_6.md5 b/docs/inherit_graph_6.md5 index 55a5115..12fb54c 100644 --- a/docs/inherit_graph_6.md5 +++ b/docs/inherit_graph_6.md5 @@ -1 +1 @@ -6276f12a2d68e1ca206c84dba62ec223 \ No newline at end of file +c1e1b1ed068ec629861311442ec7708c \ No newline at end of file diff --git a/docs/inherit_graph_6.png b/docs/inherit_graph_6.png index 7ab7c2e3f6d5a6cbddad8aa1617d343efd48355c..417ef322ba018e19616ce5908c8d0f22b9c6d93e 100644 GIT binary patch delta 527 zcmV+q0`UE(1g`{;83+ad002v9t2&V(6@TPOL_t(|ob8+4al;@Ggmp~HNF{D04S2>i zdBzPSlREO|Dx5k@o|up`KLYkplV5-3Rd^T4@_RZ;ZO7^?SI>aH0Iozd3Dv&y8%9d-P?i3XObYAJuDB*X^QB|*om?R>gYakS1+ z&8723OCxgkX9cwUwQkpQ{rV!5zF#`G)<07IYU7q-w`lBP>zB9u?T^5rsR$gJiol_% z2ppPg2PFUi delta 519 zcmZ3_vYcgtBnJ}%1H%z6o7{i~#ty`W?;+wVXrH1W-zTbc4zCQSKnYSK@ z!N~X7ze7hP9!sm&Ir2*Rg$oICey(wvcfmf{C&2mkCdsO`+Ot0ko8G^zZ%B*6Oeu2+A*{oQwY`{I;abG3T2rW}l))wcX_isUrWU~l>VOiO=> z-P$LZd*qnMElJmld+uv2xjor<`nheF>r1m2zF(TN>fFDnH^jDU*P1_^5q-hi?S8Os zZRQV|C-?Pw+a1mFXEZi-mrTDTZejml>c0EIeed<6QrXfE<%BHmeyiX3-)d)jB881JWAMk_I_!2P689ZJ6T-G@y GGywqdP7${N diff --git a/docs/inherit_graph_7.map b/docs/inherit_graph_7.map index bbe5013..60d15a9 100644 --- a/docs/inherit_graph_7.map +++ b/docs/inherit_graph_7.map @@ -1,3 +1,3 @@ - + diff --git a/docs/inherit_graph_7.md5 b/docs/inherit_graph_7.md5 index c4700d3..64e363d 100644 --- a/docs/inherit_graph_7.md5 +++ b/docs/inherit_graph_7.md5 @@ -1 +1 @@ -cbacda5af4aefcc61b1fdc5ee24d6e91 \ No newline at end of file +4a1e69ae57e72a272248c69d80b8a271 \ No newline at end of file diff --git a/docs/inherit_graph_7.png b/docs/inherit_graph_7.png index 8f951469a37c3f748191d018e670705e4b4cb2fb..fbb493a21968e2a5b9ef2a2ae2d70c30147a7b60 100644 GIT binary patch delta 451 zcmX@ce1=)EGr-TCmrII^fq{Y7)59eQNaq2uDhC^oTzuqC$V5fa`bJL|$B>N1x3ezh z9#Plzu=8-UB}G)Gk~#DycOpx z`c4*JzrnwNrNx*FjOrnj*SFFIEYHqX+jMrcy?hdtp3{DRcapOE+KS>89PV36|Kt?K z%`}*I?_;R7mTO9R`#z(ny6ZjhYajIquuWQZ;mVx*H$U=yKQF&E_|g0@)z;bJyRBw( zPWP&LcTV$XOj7!J^F>zQLte~&CgrRBPN#6gEY7^r@Yvj*Bp;6YaHp4hgFahu|C}xw zerV>AD^};SZmO)h5&A7}`d)t3j*cwzH^l+U{8^&n?6Y@GFOt1~@6P6}>u#J}cr)~x zlk1MfeD7?h&(_ZM>AP{!Bjf#Lmi?hptcN7gQGJK$DL0GfcWPs=zfX;<`oSz@@%-K1 hS_TG528O7Q-0@NOmmRHkegzCt22WQ%mvv4FO#rGF$Zr4u delta 445 zcmV;u0Yd)F1I7a(iBL{Q4GJ0x0000DNk~Le0001Q0000b2nGNE089qAYLOuoe|t$p zK~#90?VC}ugCGn=q4W0Wu3QMZ4;G^PpkK~7Labnd-g)=@RcuUh38YN*DW&8HBGcz- z4@f%{4;YFE48;TH?|31`=*Dq;!WVMFG)>vHtn!v+aq~QPaftk8T~|?$tnxNWN|XMC z5Zo{f#WC)Az)(D3C>}5r4;Zmwf2qNHpIx&$GWFg!+1`Kejtz+?j)+ynb1rwjH9>D? zAI}@&Gg~%ON~bgR&1m^;9lu)TU11+gsZvX0+YCR>^zHtuc53|7s;K=0wy4r>;+2vw z?Ljr4YwVo)=A2D}_r7UAqif~0atv5A0loIFyUkJw2=QvD-Dj+qwvB&Ve|a^uB*$`T zvz!=a-R2uw>6R+g?2@+}Smi;j@{R$Q_9>|oJRAG - + diff --git a/docs/inherit_graph_8.md5 b/docs/inherit_graph_8.md5 index 130e135..e9ad747 100644 --- a/docs/inherit_graph_8.md5 +++ b/docs/inherit_graph_8.md5 @@ -1 +1 @@ -5cba821b2e25837e7cc09e36ed19471f \ No newline at end of file +68030e9b530bae97698bee7f96df9f98 \ No newline at end of file diff --git a/docs/inherit_graph_8.png b/docs/inherit_graph_8.png index 8e502f4ec8ad57653834c4def2733a69216faf2e..a57f1a41eddef5d81431b980b5f0e6d03c3b192f 100644 GIT binary patch delta 506 zcmbQhGK*z`BnKM<1A|jDx5Gq5(faeAE{-7;bKcIroqO1T$JKRVa>*o}ORPK5hF?n^Hl*(LI8|27FK}R@$fQNuP(NEtccIMUx7&(k9`G{>GMd#3 z2qrKCX(+YZ{f|_K+5JeV=W|+KD$T#O&r4xZxXiUxx|JCYoZuFY5S^V44KX10a zJ)77+ZRgLAL88a(Go+G)qR$mAnYN(*&Zm&sXQZnC-BP#Qs~rROX}!Y zVUm8}%8o0&*&ic+?c6$}*v#wAv>TpVuNRew9?MT};B{fS;oyQ!{oBKFBgZ9WZLQAf sPqybj3w~^voV>PHMwS^A8wVtRvM$`K_264=h!u$M>FVdQ&MBb@01r9mJ^%m! delta 496 zcmbQmGJ$1+BnJ}%1H;*ebHpbqiq;?Xba4#HXnZ^4;=~pO0hgy)hYbWjUohflHWV=B zKjZxQf!&J55iBkaJ668>uByYst81Vw>}1j)V!xHO;rIdLDhR6i!t}gm-t(xShVFH* zmt_VWU0+)!b9`IwQB_9y-}{QseVuiF>&0E`mVRldZc8-CDwuzfc^(+m&%1bdQuCcd z5|_Jo?u%Hpfz__j=-3mDSBl8DGhwN#l` zy}Vg}xISfNv{`p?$oHA;TAm3H?)jGJ-TlF1>GA8ARA(T@Ky5_0oZ>YD?Cydv#0A;LzemrrS?mr3yTrS)cHF{k5e$Jg@Ut?w4GrH;-dp zoSbKD-90;%4|^xdeds|))BdNQ-ZbSpW6YfAH@B^gOa7Q6b3CZZL7?{j>!YXQzd5k% fIRAnXhCXuZKQ~?{y4b}K7`F_bu6{1-oD!M - + diff --git a/docs/inherit_graph_9.md5 b/docs/inherit_graph_9.md5 index 0318c62..fb46520 100644 --- a/docs/inherit_graph_9.md5 +++ b/docs/inherit_graph_9.md5 @@ -1 +1 @@ -7af2076992cb5ce99f4e7887b1303fc7 \ No newline at end of file +3af45897891386250a4c4b19fa1e50a9 \ No newline at end of file diff --git a/docs/inherit_graph_9.png b/docs/inherit_graph_9.png index 06d7d0aaeecbe5d23462abf7ca5da761062c0fcb..874e24017811f05db168ba36abd93e486aea076f 100644 GIT binary patch delta 600 zcmV-e0;m1n1mFZAiBL{Q4GJ0x0000DNk~Le000220000b2nGNE0N;)R$dMrxe-%kY zK~#90?VQbR10fKF8I&?oi5p1+mR!?HZXi+W$jwzab(oxXh48=vI|H8ReJ2~k{J=BJ zV#&?{000000ALGB8_wtRI}x2`1Oq@!2;t{?z5d2+Z)qnYIuX(5xUc}o^5LBOiW{B; zyRs~cdNcs!xLhu5yB{0}0Ed8Je}O3=SYQeW7MKEp1*U*tfhn@rS}hPg{r<2KLXdEg z^}E`SUu*bT(afioQF+Jya*Uo25y3h)e<3x+8rzl<$OxfHp^<+tC^kIT2FZ7=VXp4`^{e^NW=`lZ$o zu2@Ns3y!O`S{I=8NGkPjeSb7QuHIZ1loNigHm!-PCs*fm%Bgg%rF=}OVOx&X(e;wF zzt(xtWJWD2{ctEISWSA5mfR%$*BaEh`rP78L;EI2(#OjSHg}A*j*B@ud9$CCOZ4pM z8p753GEBK8II?3(vvqp m4e$MZb_@Uj000009OVxuQEd3PZv^uI0000NFbrYOE;YK}@2%nieK?&?e^C$42Y?7V01R{hh@b<&2CuR4>@Q#*I8UG?avo1s%H;$wDY;B6N2(8v- zuLI{C2j@c!V~yJ0ICT=)M3!O?P47!6i_F+4=FH_( - + - - + + SinricPro Library: Class Hierarchy @@ -23,8 +23,8 @@

    - - + @@ -33,21 +33,22 @@
    +
    SinricPro Library
    - + +/* @license-end */ +

    @@ -61,7 +62,7 @@
    @@ -75,14 +76,20 @@
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    Class Hierarchy
    +
    Class Hierarchy
    @@ -90,227 +97,302 @@
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    @@ -319,7 +401,7 @@ diff --git a/docs/jquery.js b/docs/jquery.js index 103c32d..1dffb65 100644 --- a/docs/jquery.js +++ b/docs/jquery.js @@ -1,12 +1,11 @@ -/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
    ",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
    "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
    ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
    "),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
    "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element -},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** +!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(y){"use strict";y.ui=y.ui||{};y.ui.version="1.13.2";var n,i=0,h=Array.prototype.hasOwnProperty,a=Array.prototype.slice;y.cleanData=(n=y.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=y._data(i,"events"))&&e.remove&&y(i).triggerHandler("remove");n(t)}),y.widget=function(t,i,e){var s,n,o,h={},a=t.split(".")[0],r=a+"-"+(t=t.split(".")[1]);return e||(e=i,i=y.Widget),Array.isArray(e)&&(e=y.extend.apply(null,[{}].concat(e))),y.expr.pseudos[r.toLowerCase()]=function(t){return!!y.data(t,r)},y[a]=y[a]||{},s=y[a][t],n=y[a][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},y.extend(n,s,{version:e.version,_proto:y.extend({},e),_childConstructors:[]}),(o=new i).options=y.widget.extend({},o.options),y.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}h[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=y.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},h,{constructor:n,namespace:a,widgetName:t,widgetFullName:r}),s?(y.each(s._childConstructors,function(t,e){var i=e.prototype;y.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),y.widget.bridge(t,n),n},y.widget.extend=function(t){for(var e,i,s=a.call(arguments,1),n=0,o=s.length;n",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
    "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n
    ").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e
    ").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0'+ + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ data.children[i].text+''+ makeTree(data.children[i],relPath)+'
  • '; } @@ -36,15 +44,92 @@ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { } return result; } - - $('#main-nav').append(makeTree(menudata,relPath)); - $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + var searchBoxHtml; if (searchEnabled) { if (serverSide) { - $('#main-menu').append('
  • '); + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; } else { - $('#main-menu').append('
  • '); + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); } $('#main-menu').smartmenus(); } diff --git a/docs/menudata.js b/docs/menudata.js index 078fd5b..b93e23b 100644 --- a/docs/menudata.js +++ b/docs/menudata.js @@ -24,7 +24,7 @@ */ var menudata={children:[ {text:"Main Page",url:"index.html"}, -{text:"Modules",url:"modules.html"}, +{text:"Topics",url:"topics.html"}, {text:"Classes",url:"annotated.html",children:[ {text:"Class List",url:"annotated.html"}, {text:"Class Index",url:"classes.html"}, diff --git a/docs/minus.svg b/docs/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/docs/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/minusd.svg b/docs/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/docs/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/namespace_s_i_n_r_i_c_p_r_o__3__0__0.html b/docs/namespace_s_i_n_r_i_c_p_r_o__3__0__0.html new file mode 100644 index 0000000..b43a323 --- /dev/null +++ b/docs/namespace_s_i_n_r_i_c_p_r_o__3__0__0.html @@ -0,0 +1,1997 @@ + + + + + + + +SinricPro Library: SINRICPRO_3_0_0 Namespace Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    SinricPro Library +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    SINRICPRO_3_0_0 Namespace Reference
    +
    +
    + +

    SinricPro namespace. +More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    class  AirQualitySensor
     AirQuality. More...
     
    class  BrightnessController
     BrightnessController. More...
     
    class  ChannelController
     ChannelController. More...
     
    class  ColorController
     ColorController. More...
     
    class  ColorTemperatureController
     ColorTemperatureController. More...
     
    class  ContactSensor
     ContactSensor. More...
     
    class  Doorbell
     Dorbell. More...
     
    class  DoorController
     DoorController - only used for GarageDoor device and cannot used as capability for a custom device! More...
     
    class  EqualizerController
     EqualizerController. More...
     
    class  InputController
     InputController. More...
     
    class  KeypadController
     KeypadController. More...
     
    class  LockController
     LockController. More...
     
    class  MediaController
     MediaController. More...
     
    class  ModeController
     ModeController. More...
     
    class  MotionSensor
     MotionSensor. More...
     
    class  MuteController
     MuteController. More...
     
    class  PercentageController
     PercentageController. More...
     
    class  PowerLevelController
     PowerLevelController. More...
     
    class  PowerSensor
     PowerSensor. More...
     
    class  PowerStateController
     PowerStateController. More...
     
    class  PushNotification
     PushNotification. More...
     
    class  RangeController
     RangeControllerFloatInt. More...
     
    class  SinricProAirQualitySensor
     Device to report air quality events. More...
     
    class  SinricProBlinds
     Device to control interior blinds. More...
     
    class  SinricProCamera
     Camera suporting basic on / off command. More...
     
    class  SinricProClass
     The main class of this library, handling communication between SinricPro Server and your devices. More...
     
    class  SinricProContactsensor
     Device to report contact sensor events. More...
     
    class  SinricProDevice
     Base class for all device types. More...
     
    class  SinricProDimSwitch
     Device which supports on / off and dimming commands. More...
     
    class  SinricProDoorbell
     Device to report doorbell events. More...
     
    class  SinricProFan
     Device to turn on / off a fan and change it's speed by using powerlevel. More...
     
    class  SinricProFanUS
     Device to control a fan with on / off commands and its speed by a range value. More...
     
    class  SinricProGarageDoor
     Device to control a garage door. More...
     
    class  SinricProLight
     Device to control a light. More...
     
    class  SinricProLock
     Device to control a smart lock. More...
     
    class  SinricProMotionsensor
     Device to report motion detection events. More...
     
    class  SinricProPowerSensor
     Device to report power usage. More...
     
    class  SinricProSpeaker
     Device to control a smart speaker. More...
     
    class  SinricProSwitch
     Device suporting basic on / off command. More...
     
    class  SinricProTemperaturesensor
     Device to report actual temperature and humidity. More...
     
    class  SinricProThermostat
     Device to control Thermostat. More...
     
    class  SinricProTV
     Device to control a TV. More...
     
    class  SinricProWindowAC
     Device to control Window Air Conditioner. More...
     
    class  TemperatureSensor
     TemperatureSensor. More...
     
    class  ThermostatController
     ThermostatController. More...
     
    class  ToggleController
     ToggleController. More...
     
    class  VolumeController
     VolumeController. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    using ConnectedCallbackHandler = std::function< void(void)>
     Callback definition for onConnected function.
     
    using DisconnectedCallbackHandler = std::function< void(void)>
     Callback definition for onDisconnected function.
     
    using BrightnessCallback = std::function< bool(const String &, int &)>
     Callback definition for onBrightness function.
     
    using AdjustBrightnessCallback = std::function< bool(const String &, int &)>
     Callback definition for onAdjustBrightness function.
     
    using ChangeChannelCallback = std::function< bool(const String &, String &)>
     Callback definition for onChangeChannel function.
     
    using ChangeChannelNumberCallback = std::function< bool(const String &, int, String &)>
     Callback definition for onChangeChannelNumber function.
     
    using SkipChannelsCallback = std::function< bool(const String &, int, String &)>
     Callback definition for onSkipChannels function.
     
    using ColorCallback = std::function< bool(const String &, byte &, byte &, byte &)>
     Callback definition for onColor function.
     
    using ColorTemperatureCallback = std::function< bool(const String &, int &)>
     Callback definition for onColorTemperature function.
     
    using IncreaseColorTemperatureCallback = std::function< bool(const String &, int &)>
     Callback definition for onIncreaseColorTemperature function.
     
    using DecreaseColorTemperatureCallback = std::function< bool(const String &, int &)>
     Callback definition for onDecreaseColorTemperature function.
     
    using DoorCallback = std::function< bool(const String &, bool &)>
     Callback definition for onDoorState function.
     
    using SetBandsCallback = std::function< bool(const String &, const String &, int &)>
     Callback definition for onSetBands function.
     
    using AdjustBandsCallback = std::function< bool(const String &, const String &, int &)>
     Callback definition for onAdjustBands function.
     
    using ResetBandsCallback = std::function< bool(const String &, const String &, int &)>
     Callback definition for onResetBands function.
     
    using SelectInputCallback = std::function< bool(const String &, String &)>
     Callback definition for onSelectInput function.
     
    using KeystrokeCallback = std::function< bool(const String &, String &)>
     Callback definition for onKeystroke function.
     
    using LockStateCallback = std::function< bool(const String &, bool &)>
     Callback definition for onLockState function.
     
    using MediaControlCallback = std::function< bool(const String &, String &)>
     Callback definition for onMediaControl function.
     
    using ModeCallback = std::function< bool(const String &, String &)>
     Callback definition for onSetMode function.
     
    using GenericModeCallback = std::function< bool(const String &, const String &, String &)>
     Callback definition for onSetMode function for a specific instance.
     
    using MuteCallback = std::function< bool(const String &, bool &)>
     Callback definition for onMute function.
     
    using SetPercentageCallback = std::function< bool(const String &, int &)>
     Callback definition for onSetPercentage function.
     
    using AdjustPercentageCallback = std::function< bool(const String &, int &)>
     Callback definition for onAdjustPercentage function.
     
    using SetPowerLevelCallback = std::function< bool(const String &, int &)>
     Definition for setPowerLevel callback.
     
    using AdjustPowerLevelCallback = std::function< bool(const String &, int &)>
     Definition for onAdjustPowerLevel callback.
     
    using PowerStateCallback = std::function< bool(const String &, bool &)>
     Callback definition for onPowerState function.
     
    using GenericRangeValueCallback_int = bool(*)(const String &, const String &, int &)
     Callback definition for onRangeValue function.
     
    using GenericSetRangeValueCallback_int = GenericRangeValueCallback_int
     Callback definition for onRangeValue function on a specific instance.
     
    using AdjustRangeValueCallback = bool(*)(const String &, int &)
     Callback definition for onAdjustRangeValue function.
     
    using GenericAdjustRangeValueCallback_int = GenericRangeValueCallback_int
     Callback definition for onAdjustRangeValue function on a specific instance for custom devices.
     
    using ThermostatModeCallback = std::function< bool(const String &, String &)>
     Callback definition for onThermostatMode function.
     
    using SetTargetTemperatureCallback = std::function< bool(const String &, float &)>
     Callback definition for onTargetTemperature function.
     
    using AdjustTargetTemperatureCallback = std::function< bool(const String &, float &)>
     Callback definition for onAdjustTargetTemperature function.
     
    using GenericToggleStateCallback = std::function< bool(const String &, const String &, bool &)>
     Callback definition for onToggleState function.
     
    using SetVolumeCallback = std::function< bool(const String &, int &)>
     Callback definition for onSetVolume function.
     
    using AdjustVolumeCallback = std::function< bool(const String &, int &, bool)>
     Callback definition for onAdjustVolume function.
     
    +

    Detailed Description

    +

    SinricPro namespace.

    +

    Typedef Documentation

    + +

    ◆ AdjustBandsCallback

    + +
    +
    + + + + +
    using AdjustBandsCallback = std::function<bool(const String &, const String &, int &)>
    +
    + +

    Callback definition for onAdjustBands function.

    +

    Gets called when device receive a adjustBands request
    +

    Parameters
    + + + + + + +
    [in]deviceIdString which contains the ID of device
    [in]bandsString with requested bands to change
    + BASS, MIDRANGE, TREBBLE
    [in]levelDeltaInteger with relative level value device should change bands about
    [out]bandsString with changed bands
    + BASS, MIDRANGE, TREBBLE
    [out]levelDeltaInteger value with level bands changed to
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    std::map<String, int> equalizerBands;
    +
    +
    bool onAdjustBands(const String &deviceId, String &bands, int &levelDelta) {
    +
    equalizerBands[bands] += levelDelta; // calculate absolute bands level
    +
    Serial.printf("Device %s bands %s changed about %d to %d\r\n", deviceId.c_str(), bands.c_str(), levelDelta, equalizerBands[bands]);
    +
    levelDelta = equalizerBands[bands]; // return absolute bands level
    +
    return true; // request handled properly
    +
    }
    +
    AirQuality.
    Definition AirQualitySensor.h:19
    +
    +
    +
    + +

    ◆ AdjustBrightnessCallback

    + +
    +
    + + + + +
    using AdjustBrightnessCallback = std::function<bool(const String &, int &)>
    +
    + +

    Callback definition for onAdjustBrightness function.

    +

    Gets called when device receive a adjustBrightness request
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]brightnessRelative integer value the device should change the brightness about
    [out]brightnessAbsolute integer value with new brightness the device is set to
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    +
    +
    bool onAdjustBrightness(const String &deviceId, int &brightnessDelta) {
    +
    absoluteBrightness += brightnessDelta; // calculate absolute brigthness
    +
    Serial.printf("Device %s brightness changed about %i to %d\r\n", deviceId.c_str(), brightnessDelta, absoluteBrightness);
    +
    brightnessDelta = absoluteBrightness; // return absolute brightness
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ AdjustPercentageCallback

    + +
    +
    + + + + +
    using AdjustPercentageCallback = std::function<bool(const String &, int &)>
    +
    + +

    Callback definition for onAdjustPercentage function.

    +

    Gets called when device receive a adjustPercentage request
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]percentageDeltaInteger with relative percentage the device should change about (-100..100)
    [out]percentageDeltaInteger with absolute percentage device has been set to
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    +
    +
    bool onAdjustPercentage(const String &deviceId, int &percentageDelta) {
    +
    absolutePercentage += percentageDelta; // calculate absolute percentage
    +
    Serial.printf("Device %s percentage changed about %i to %d\r\n", deviceId.c_str(), percentageDelta, absolutePercentage);
    +
    percentageDelta = absolutePercentage; // return absolute percentage
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ AdjustPowerLevelCallback

    + +
    +
    + + + + +
    using AdjustPowerLevelCallback = std::function<bool(const String &, int &)>
    +
    + +

    Definition for onAdjustPowerLevel callback.

    +

    Gets called when device receive a adjustPowerLevel reuqest
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]powerLevelinteger -100..100 delta value which power level have to be changed
    [out]powerLevelinteger 0..100 report the absolute powerlevel that the device have been set to
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest can`t be handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    +
    +
    bool onAdjustPowerLevel(const String &deviceId, int &powerDelta) {
    +
    absolutePowerLevel += powerDelta; // calculate absolute power level
    +
    Serial.printf("Device %s brightness changed about %i to %d\r\n", deviceId.c_str(), powerDelta, absolutePowerLevel);
    +
    powerDelta = absolutePowerLevel; // return absolute power level
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ AdjustRangeValueCallback

    + +
    +
    + + + + +
    using AdjustRangeValueCallback = bool (*)(const String &, int &)
    +
    + +

    Callback definition for onAdjustRangeValue function.

    +

    Gets called when device receive a adjustRangeValue reuqest
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]rangeValuedelta value for range value have to change
    [out]rangeValuereturning the absolute range value
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    +
    +
    bool onAdjustRangeValue(const String &deviceId, int &rangeValueDelta) {
    +
    globalRangeValue += rangeValue; // calculate absolute rangeValue
    +
    Serial.printf("Device %s range value has been changed about %i to %d\r\n", deviceId.c_str(), rangeValueDelta, globalRangeValue);
    +
    rangeValueDelta = globalRangeValue; // return absolute rangeValue
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ AdjustTargetTemperatureCallback

    + +
    +
    + + + + +
    using AdjustTargetTemperatureCallback = std::function<bool(const String &, float &)>
    +
    + +

    Callback definition for onAdjustTargetTemperature function.

    +

    Gets called when device receive a adjustTargetTemperature reuqest
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]temperatureFloat relative temperature device should change about
    [out]temperatureFloat absolute temperature device is set to
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    +
    +
    bool onAdjustTargetTemperature(const String &deviceId, float &tempDelta) {
    +
    globalTargetTemp += tempDelta; // change global target temperature about tempDelta
    +
    Serial.printf("Device %s target temperature changed about %f to %f\r\n", deviceId.c_str(), tempDelta, globalTargetTemp);
    +
    tempDelta = globalTargetTemp; // return absolute target temperature
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ AdjustVolumeCallback

    + +
    +
    + + + + +
    using AdjustVolumeCallback = std::function<bool(const String &, int &, bool)>
    +
    + +

    Callback definition for onAdjustVolume function.

    +

    Gets called when device receive a adjustVolume request
    +

    Parameters
    + + + + + +
    [in]deviceIdString which contains the ID of device
    [in]volumeDeltaInteger with relative volume the device should change about (-100..100)
    [out]volumeDeltaInteger with absolute volume device has been set to
    [in]volumeDefaultBool false if the user specified the amount by which to change the volume; otherwise true
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    +
    +
    bool onAdjustVolume(const String &deviceId, int &volumeDelta, bool volumeDefault) {
    +
    absoluteVolume += volumeDelta; // calculate absolute volume
    +
    Serial.printf("Device %s volume changed about %i to %d (default: %s)\r\n", deviceId.c_str(), volumeDelta, absoluteVolume, volumeDefault);
    +
    volumeDelta = absoluteVolume; // return absolute volume
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ BrightnessCallback

    + +
    +
    + + + + +
    using BrightnessCallback = std::function<bool(const String &, int &)>
    +
    + +

    Callback definition for onBrightness function.

    +

    Gets called when device receive a setBrightness request
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]brightnessAbsolute integer value the device should set its brightness to
    [out]brightnessAbsolute integer value with new brightness the device is set to
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onBrightness(const String &deviceId, int &brightness) {
    +
    Serial.printf("Device %s brightness %d\r\n", deviceId.c_str(), brightness);
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ ChangeChannelCallback

    + +
    +
    + + + + +
    using ChangeChannelCallback = std::function<bool(const String &, String &)>
    +
    + +

    Callback definition for onChangeChannel function.

    +

    Gets called when device receive a changeChannel request by using channel name

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]channelString with channel name device is requested to switch to
    [out]channelString with channel name device has switchted to
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    // channelNames used to convert channelNumber into channelName
    +
    // please put in your TV channel names
    +
    // channel numbers starts counting from 0!
    +
    // so "ZDF" is channel 2
    +
    const char* channelNames[] = {
    +
    "A/V",
    +
    "ard",
    +
    "ZDF",
    +
    "n. d. r.",
    +
    "kabel eins",
    +
    "VOX",
    +
    "Sat.1",
    +
    "ProSieben",
    +
    "rtl",
    +
    "RTL II",
    +
    "SUPER RTL",
    +
    "KiKA"
    +
    };
    +
    +
    int tvChannel; // current channel selected
    +
    +
    #define MAX_CHANNELS sizeof(channelNames) / sizeof(channelNames[0]) // just to determine how many channels are in channelNames array
    +
    +
    // map channelNumbers used to convert channelName into channelNumber
    +
    // This map is initialized in "setupChannelNumbers()" function by using the "channelNames" array
    +
    std::map<String, unsigned int> channelNumbers;
    +
    +
    void setupChannelNumbers() {
    +
    for (unsigned int i=0; i < MAX_CHANNELS; i++) {
    +
    channelNumbers[channelNames[i]] = i;
    +
    }
    +
    }
    +
    +
    bool onChangeChannel(const String &deviceId, String &channel) {
    +
    tvChannel = channelNumbers[channel]; // save new channelNumber in tvChannel variable
    +
    Serial.printf("Change channel to \"%s\" (channel number %d)\r\n", channel.c_str(), tvChannel);
    +
    return true;
    +
    }
    +
    +
    +
    + +

    ◆ ChangeChannelNumberCallback

    + +
    +
    + + + + +
    using ChangeChannelNumberCallback = std::function<bool(const String &, int, String &)>
    +
    + +

    Callback definition for onChangeChannelNumber function.

    +

    Gets called when device receive a changeChannel request by using channel number

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]channelNumberInteger with channel number device is requested to switch to
    [out]channelNameString with channel name device has switchted to
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    // channelNames used to convert channelNumber into channelName
    +
    // please put in your TV channel names
    +
    // channel numbers starts counting from 0!
    +
    // so "ZDF" is channel 2
    +
    const char* channelNames[] = {
    +
    "A/V",
    +
    "ard",
    +
    "ZDF",
    +
    "n. d. r.",
    +
    "kabel eins",
    +
    "VOX",
    +
    "Sat.1",
    +
    "ProSieben",
    +
    "rtl",
    +
    "RTL II",
    +
    "SUPER RTL",
    +
    "KiKA"
    +
    };
    +
    +
    int tvChannel; // current channel selected
    +
    +
    #define MAX_CHANNELS sizeof(channelNames) / sizeof(channelNames[0]) // just to determine how many channels are in channelNames array
    +
    +
    // map channelNumbers used to convert channelName into channelNumber
    +
    // This map is initialized in "setupChannelNumbers()" function by using the "channelNames" array
    +
    std::map<String, unsigned int> channelNumbers;
    +
    +
    void setupChannelNumbers() {
    +
    for (unsigned int i=0; i < MAX_CHANNELS; i++) {
    +
    channelNumbers[channelNames[i]] = i;
    +
    }
    +
    }
    +
    +
    bool onChangeChannelNumber(const String& deviceId, int channelNumber, String& channelName) {
    +
    tvChannel = channelNumber; // update tvChannel to new channel number
    +
    if (tvChannel < 0) tvChannel = 0;
    +
    if (tvChannel > MAX_CHANNELS-1) tvChannel = MAX_CHANNELS-1;
    +
    +
    channelName = channelNames[tvChannel]; // return the channelName
    +
    +
    Serial.printf("Change to channel to %d (channel name \"%s\")\r\n", tvChannel, channelName.c_str());
    +
    return true;
    +
    }
    +
    +
    +
    + +

    ◆ ColorCallback

    + +
    +
    + + + + +
    using ColorCallback = std::function<bool(const String &, byte &, byte &, byte &)>
    +
    + +

    Callback definition for onColor function.

    +

    Gets called when device receive a setColor request
    +

    Parameters
    + + + + + + + + +
    [in]deviceIdString which contains the ID of device
    [in]rByte value for red
    [in]gByte value for green
    [in]bByte value for blue
    [out]rByte value for red
    [out]gByte value for green
    [out]bByte value for blue
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onColor(const String &deviceId, byte &r, byte &g, byte &b) {
    +
    Serial.printf("Device %s color is set to red=%d, green=%d, blue=%d\r\n", deviceId.c_str(), r, g, b);
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ ColorTemperatureCallback

    + +
    +
    + + + + +
    using ColorTemperatureCallback = std::function<bool(const String &, int &)>
    +
    + +

    Callback definition for onColorTemperature function.

    +

    Gets called when device receive a setColorTemperature request
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]colorTemperatureInteger value with color temperature the device should set to
    + 2200 = warm white
    + 2700 = soft white
    + 4000 = white
    + 5500 = daylight white
    + 7000 = cool white
    [out]colorTemperatureInteger value with color temperature the device is set to
    + 2200 = warm white
    + 2700 = soft white
    + 4000 = white
    + 5500 = daylight white
    + 7000 = cool white
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onColorTemperature(const String &deviceId, int &colorTemperature) {
    +
    Serial.printf("Device %s colorTemperature is set to %i\r\n", deviceId.c_str(), colorTemperature);
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ ConnectedCallbackHandler

    + +
    +
    + + + + +
    using ConnectedCallbackHandler = std::function<void(void)>
    +
    + +

    Callback definition for onConnected function.

    +

    Gets called when device is connected to SinricPro server

    Parameters
    + + +
    void
    +
    +
    +
    Returns
    void
    + +
    +
    + +

    ◆ DecreaseColorTemperatureCallback

    + +
    +
    + + + + +
    using DecreaseColorTemperatureCallback = std::function<bool(const String &, int &)>
    +
    + +

    Callback definition for onDecreaseColorTemperature function.

    +

    Gets called when device receive a decreaseColorTemperature request
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]colorTemperatureInteger value -1 = Device should decrease color temperature
    [out]colorTemperatureInteger value return the new color temperarature
    + 2200 = warm white
    + 2700 = soft white
    + 4000 = white
    + 5500 = daylight white
    + 7000 = cool white
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    +
    +
    bool onDecreaseColorTemperature(const String &deviceId, int &colorTemperature) {
    +
    globalColorTemperature -= 1000; // decrease globalColorTemperature about 1000;
    +
    Serial.printf("Device %s colorTemperature changed %i\r\n", deviceId.c_str(), colorTemperature);
    +
    colorTemperature = globalColorTemperature; // return new colorTemperature
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ DisconnectedCallbackHandler

    + +
    +
    + + + + +
    using DisconnectedCallbackHandler = std::function<void(void)>
    +
    + +

    Callback definition for onDisconnected function.

    +

    Gets called when device is disconnected from SinricPro server

    Parameters
    + + +
    void
    +
    +
    +
    Returns
    void
    + +
    +
    + +

    ◆ DoorCallback

    + +
    +
    + + + + +
    using DoorCallback = std::function<bool(const String &, bool &)>
    +
    + +

    Callback definition for onDoorState function.

    +

    Gets called when device receive a open or close request
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]doorStatefalse = open, device is requested to open the garage door
    +true = close, device is requested to close the garage door
    [out]doorStatebool with actual state false = open, true = closed
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onDoorState(const String &deviceId, bool &doorState) {
    +
    Serial.printf("Device %s garage door is now %s\r\n", deviceId.c_str(), doorState?"closed":"open");
    +
    return true;
    +
    }
    +
    +
    +
    + +

    ◆ GenericAdjustRangeValueCallback_int

    + +
    +
    + +

    Callback definition for onAdjustRangeValue function on a specific instance for custom devices.

    +

    Gets called when device receive a adjustRangeValue reuqest
    +

    Parameters
    + + + + + +
    [in]deviceIdString which contains the ID of device
    [in]instanceString instance name
    [in]rangeValuedelta value for range value have to change
    [out]rangeValuereturning the absolute range value
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    +
    +
    bool onAdjustRangeValue(const String &deviceId, const String& instance, int &rangeValueDelta) {
    +
    globalRangeValue += rangeValueDelta; // calculate absolute rangeValue
    +
    Serial.printf("Device %s range value for %s has been changed about %i to %d\r\n", deviceId.c_str(), instance.c_str(), rangeValueDelta, globalRangeValue);
    +
    rangeValueDelta = globalRangeValue; // return absolute rangeValue
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ GenericModeCallback

    + +
    +
    + + + + +
    using GenericModeCallback = std::function<bool(const String &, const String &, String &)>
    +
    + +

    Callback definition for onSetMode function for a specific instance.

    +

    Gets called when device receive a setBands request
    +

    Parameters
    + + + + + +
    [in]deviceIdString which contains the ID of device
    [in]instanceString name of the instance
    [in]modeString device mode should set to
    [out]modeString devices mode is set to
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onSetMode(const String &deviceId, const String &instance, String &mode) {
    +
    Serial.printf("Device %s mode %s set to %s\r\n", deviceId.c_str(), instance.c_str(), mode);
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ GenericRangeValueCallback_int

    + +
    +
    + + + + +
    using GenericRangeValueCallback_int = bool (*)(const String &, const String &, int &)
    +
    + +

    Callback definition for onRangeValue function.

    +

    Gets called when device receive a setRangeValue reuqest
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]rangeValuefor range value device has to be set
    [out]rangeValuereturning the current range value
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onRangeValue(const String &deviceId, int &rangeValue) {
    +
    Serial.printf("Device %s range value has been set to %d\r\n", deviceId.c_str(), rangeValue);
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ GenericSetRangeValueCallback_int

    + +
    +
    + +

    Callback definition for onRangeValue function on a specific instance.

    +

    Gets called when device receive a setRangeValue reuqest
    +

    Parameters
    + + + + + +
    [in]deviceIdString which contains the ID of device
    [in]instanceString instance name
    [in]rangeValuefor range value device has to be set
    [out]rangeValuereturning the current range value
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onRangeValue(const String &deviceId, const String &instance, int &rangeValue) {
    +
    Serial.printf("Device %s range value for %s has been set to %d\r\n", deviceId.c_str(), instance.c_str(), rangeValue);
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ GenericToggleStateCallback

    + +
    +
    + + + + +
    using GenericToggleStateCallback = std::function<bool(const String &, const String&, bool &)>
    +
    + +

    Callback definition for onToggleState function.

    +

    Gets called when device receive a setPowerState reuqest
    +

    Parameters
    + + + + + +
    [in]deviceIdString which contains the ID of device
    [in]instanceString which instance is requested
    [in]statetrue = device is requested to turn on
    + false = device is requested to turn off
    [out]statetrue = device has been turned on
    + false = device has been turned off
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onToggleState(const String &deviceId, const String &instance, bool &state) {
    +
    Serial.printf("Device %s state \"%s\" turned %s\r\n", deviceId.c_str(), instance.c_str(), state ? "on" : "off");
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ IncreaseColorTemperatureCallback

    + +
    +
    + + + + +
    using IncreaseColorTemperatureCallback = std::function<bool(const String &, int &)>
    +
    + +

    Callback definition for onIncreaseColorTemperature function.

    +

    Gets called when device receive a increaseColorTemperature request
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]colorTemperatureInteger value 1 = Device should increase color temperature
    [out]colorTemperatureInteger value return the new color temperarature
    + 2200 = warm white
    + 2700 = soft white
    + 4000 = white
    + 5500 = daylight white
    + 7000 = cool white
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    +
    +
    bool onIncreaseColorTemperature(const String &deviceId, int &colorTemperature) {
    +
    globalColorTemperature += 1000; // increase globalColorTemperature about 1000;
    +
    Serial.printf("Device %s colorTemperature changed to %i\r\n", deviceId.c_str(), colorTemperature);
    +
    colorTemperature = globalColorTemperature; // return new colorTemperature
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ KeystrokeCallback

    + +
    +
    + + + + +
    using KeystrokeCallback = std::function<bool(const String &, String &)>
    +
    + +

    Callback definition for onKeystroke function.

    +

    Gets called when device receive a setBands request
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]keystrokeString keystroke
    + INFO, MORE, SELECT, UP, DOWN, LEFT, RIGHT, PAGE_UP, PAGE_DOWN, PAGE_LEFT, PAGE_RIGHT
    [out]keystrokeString keystroke
    + INFO, MORE, SELECT, UP, DOWN, LEFT, RIGHT, PAGE_UP, PAGE_DOWN, PAGE_LEFT, PAGE_RIGHT
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onKeystroke(const String& deviceId, String &keystroke) {
    +
    Serial.printf("Device %s, key %s pressed\r\n", deviceId.c_str(), keystroke.c_str());
    +
    return true;
    +
    }
    +
    +
    +
    + +

    ◆ LockStateCallback

    + +
    +
    + + + + +
    using LockStateCallback = std::function<bool(const String &, bool &)>
    +
    + +

    Callback definition for onLockState function.

    +

    Gets called when device receive a setLockState request
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]statetrue = device is requested to lock
    + false = device is requested to unlock
    [out]statetrue = device has been locked
    + false = device has been unlocked
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onLockState(const String &deviceId, bool &lockState) {
    +
    Serial.printf("Device is %s\r\n", lockState?"locked":"unlocked");
    +
    return true;
    +
    }
    +
    +
    +
    + +

    ◆ MediaControlCallback

    + +
    +
    + + + + +
    using MediaControlCallback = std::function<bool(const String &, String &)>
    +
    + +

    Callback definition for onMediaControl function.

    +

    Gets called when device receive a mediaControl request
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]controlString with requested control
    + FastForward, Next, Pause, Play, Previous, Rewind, StartOver, Stop
    [out]controlString with control
    + FastForward, Next, Pause, Play, Previous, Rewind, StartOver, Stop
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onMediaControl(const String &deviceId, String &control) {
    +
    Serial.printf("Device %s: %s\r\n", deviceId.c_str(), control.c_str());
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ ModeCallback

    + +
    +
    + + + + +
    using ModeCallback = std::function<bool(const String &, String &)>
    +
    + +

    Callback definition for onSetMode function.

    +

    Gets called when device receive a setBands request
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]modeString device mode should set to
    + MOVIE, MUSIC, NIGHT, SPORT, TV
    [out]modeString devices mode is set to
    + MOVIE, MUSIC, NIGHT, SPORT, TV
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onSetMode(const String &deviceId, String &mode) {
    +
    Serial.printf("Device %s is set to mode %s\r\n", deviceId.c_str(), mode);
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ MuteCallback

    + +
    +
    + + + + +
    using MuteCallback = std::function<bool(const String &, bool &)>
    +
    + +

    Callback definition for onMute function.

    +

    Gets called when device receive a setMute request
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]mutetrue mute device
    + false unmute device
    [out]mutetrue device is muted
    + false device is unmuted
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onMute(const String &deviceId, bool &mute) {
    +
    Serial.printf("Device %s is %s\r\n", deviceId.c_str(), mute?"muted":"unmuted");
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ PowerStateCallback

    + +
    +
    + + + + +
    using PowerStateCallback = std::function<bool(const String &, bool &)>
    +
    + +

    Callback definition for onPowerState function.

    +

    Gets called when device receive a setPowerState reuqest
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]statetrue = device is requested to turn on
    + false = device is requested to turn off
    [out]statetrue = device has been turned on
    + false = device has been turned off
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onPowerState(const String &deviceId, bool &state) {
    +
    Serial.printf("Device %s turned %s\r\n", deviceId.c_str(), state?"on":"off");
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ ResetBandsCallback

    + +
    +
    + + + + +
    using ResetBandsCallback = std::function<bool(const String &, const String &, int &)>
    +
    + +

    Callback definition for onResetBands function.

    +

    Gets called when device receive a onResetBands request
    +

    Parameters
    + + + + + +
    [in]deviceIdString which contains the ID of device
    [in]bandsString with requested bands to reset
    + BASS, MIDRANGE, TREBBLE
    [out]bandsString with changed bands
    + BASS, MIDRANGE, TREBBLE
    [out]levelInteger value with level bands changed to
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    std::map<String, int> equalizerBands;
    +
    +
    bool onResetBands(const String &deviceId, String &bands, int &level) {
    +
    equalizerBands[bands] = 0; // reset bands level to 0
    +
    Serial.printf("Device %s bands %s reset to %d\r\n", deviceId.c_str(), bands.c_str(), equalizerBands[bands]);
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ SelectInputCallback

    + +
    +
    + + + + +
    using SelectInputCallback = std::function<bool(const String &, String &)>
    +
    + +

    Callback definition for onSelectInput function.

    +

    Gets called when device receive a selectInput request
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]inputString with input name device is requested to switch to
    + AUX 1..AUX 7, BLURAY, CABLE, CD, COAX 1,COAX 2, COMPOSITE 1, DVD, GAME, HD RADIO, HDMI 1.. HDMI 10, HDMI ARC, INPUT 1..INPUT 10, IPOD, LINE 1..LINE 7, MEDIA PLAYER, OPTICAL 1, OPTICAL 2, PHONO, PLAYSTATION, PLAYSTATION 3, PLAYSTATION 4, SATELLITE, SMARTCAST, TUNER, TV, USB DAC, VIDEO 1..VIDEO 3, XBOX
    [out]inputString with input name device has switchted to
    + AUX 1..AUX 7, BLURAY, CABLE, CD, COAX 1,COAX 2, COMPOSITE 1, DVD, GAME, HD RADIO, HDMI 1.. HDMI 10, HDMI ARC, INPUT 1..INPUT 10, IPOD, LINE 1..LINE 7, MEDIA PLAYER, OPTICAL 1, OPTICAL 2, PHONO, PLAYSTATION, PLAYSTATION 3, PLAYSTATION 4, SATELLITE, SMARTCAST, TUNER, TV, USB DAC, VIDEO 1..VIDEO 3, XBOX
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onSelectInput(const String &deviceId, String &input) {
    +
    Serial.printf("Device %s input changed to %s\r\n", deviceId.c_str(), input.c_str());
    +
    return true;
    +
    }
    +
    +
    +
    + +

    ◆ SetBandsCallback

    + +
    +
    + + + + +
    using SetBandsCallback = std::function<bool(const String &, const String &, int &)>
    +
    + +

    Callback definition for onSetBands function.

    +

    Gets called when device receive a setBands request
    +

    Parameters
    + + + + + + +
    [in]deviceIdString which contains the ID of device
    [in]bandsString with requested bands to change
    + BASS, MIDRANGE, TREBBLE
    [in]levelInteger value with level bands should set to
    [out]bandsString with changed bands
    + BASS, MIDRANGE, TREBBLE
    [out]levelInteger value with level bands changed to
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    std::map<String, int> equalizerBands;
    +
    +
    bool onSetBands(const String &deviceId, String &bands, int &level) {
    +
    Serial.printf("Device %s bands %s set to %d\r\n", deviceId.c_str(), bands.c_str(), level);
    + +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ SetPercentageCallback

    + +
    +
    + + + + +
    using SetPercentageCallback = std::function<bool(const String &, int &)>
    +
    + +

    Callback definition for onSetPercentage function.

    +

    Gets called when device receive a setPercentage request
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]percentageInteger with percentage device should set to
    [out]percentageInteger with percentage device has been set to
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onSetPercentage(const String &deviceId, int &percentage) {
    +
    Serial.printf("Device %s percentage %d\r\n", deviceId.c_str(), percentage);
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ SetPowerLevelCallback

    + +
    +
    + + + + +
    using SetPowerLevelCallback = std::function<bool(const String &, int &)>
    +
    + +

    Definition for setPowerLevel callback.

    +

    Gets called when device receive a setPowerLevel reuqest
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]powerLevelinteger 0..100 new powerlevel the device should be set to
    [out]powerLevelinteger 0..100 report the powerlevel that the device have been set to
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onPowerLevel(const String &deviceId, int &powerLevel) {
    +
    Serial.printf("Device %s powerlevel %d\r\n", deviceId.c_str(), powerLevel);
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ SetTargetTemperatureCallback

    + +
    +
    + + + + +
    using SetTargetTemperatureCallback = std::function<bool(const String &, float &)>
    +
    + +

    Callback definition for onTargetTemperature function.

    +

    Gets called when device receive a targetTemperature request
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]temperatureFloat device is requested to set the target temperature to
    [out]temperatureFloat target temperature temperature device is set to
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onTargetTemperature(const String &deviceId, float &targetTemp) {
    +
    Serial.printf("Device %s target temperature set to %f\r\n", deviceId.c_str(), targetTemp);
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ SetVolumeCallback

    + +
    +
    + + + + +
    using SetVolumeCallback = std::function<bool(const String &, int &)>
    +
    + +

    Callback definition for onSetVolume function.

    +

    Gets called when device receive a setVolume request
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]volumeInteger with volume device should set to
    [out]volumeInteger with volume device has been set to
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onSetVolume(const String &deviceId, int &volume) {
    +
    Serial.printf("Device %s volume set to %d\r\n", deviceId.c_str(), volume);
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    + +

    ◆ SkipChannelsCallback

    + +
    +
    + + + + +
    using SkipChannelsCallback = std::function<bool(const String &, int, String &)>
    +
    + +

    Callback definition for onSkipChannels function.

    +

    Gets called when device receive a changeChannel request by using channel number

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]channelCountInteger with channels device is requested to skip -n..+n
    [out]channelNameString with channel name device has switchted to
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    // channelNames used to convert channelNumber into channelName
    +
    // please put in your TV channel names
    +
    // channel numbers starts counting from 0!
    +
    // so "ZDF" is channel 2
    +
    const char* channelNames[] = {
    +
    "A/V",
    +
    "ard",
    +
    "ZDF",
    +
    "n. d. r.",
    +
    "kabel eins",
    +
    "VOX",
    +
    "Sat.1",
    +
    "ProSieben",
    +
    "rtl",
    +
    "RTL II",
    +
    "SUPER RTL",
    +
    "KiKA"
    +
    };
    +
    +
    int tvChannel; // current channel selected
    +
    +
    #define MAX_CHANNELS sizeof(channelNames) / sizeof(channelNames[0]) // just to determine how many channels are in channelNames array
    +
    +
    // map channelNumbers used to convert channelName into channelNumber
    +
    // This map is initialized in "setupChannelNumbers()" function by using the "channelNames" array
    +
    std::map<String, unsigned int> channelNumbers;
    +
    +
    void setupChannelNumbers() {
    +
    for (unsigned int i=0; i < MAX_CHANNELS; i++) {
    +
    channelNumbers[channelNames[i]] = i;
    +
    }
    +
    }
    +
    +
    bool onSkipChannels(const String &deviceId, const int channelCount, String &channelName) {
    +
    tvChannel += channelCount; // calculate new channel number
    +
    if (tvChannel < 0) tvChannel = 0;
    +
    if (tvChannel > MAX_CHANNELS-1) tvChannel = MAX_CHANNELS-1;
    +
    channelName = String(channelNames[tvChannel]); // return channel name
    +
    +
    Serial.printf("Skip channel: %i (number: %i / name: \"%s\")\r\n", channelCount, tvChannel, channelName.c_str());
    +
    +
    return true;
    +
    }
    +
    +
    +
    + +

    ◆ ThermostatModeCallback

    + +
    +
    + + + + +
    using ThermostatModeCallback = std::function<bool(const String &, String &)>
    +
    + +

    Callback definition for onThermostatMode function.

    +

    Gets called when device receive a setThermostatMode request
    +

    Parameters
    + + + + +
    [in]deviceIdString which contains the ID of device
    [in]modeString with mode device should set to
    [out]modeString device mode is set to
    +
    +
    +
    Returns
    the success of the request
    +
    Return values
    + + + +
    truerequest handled properly
    falserequest was not handled properly because of some error
    +
    +
    +

    +Example-Code

    +
    bool onThermostatMode(const String& deviceId, String& mode) {
    +
    Serial.printf("Deivce %s thermostat mode set to %s\r\n", deviceId.c_str(), mode);
    +
    return true; // request handled properly
    +
    }
    +
    +
    +
    +
    +
    + + + + diff --git a/docs/namespacemembers.html b/docs/namespacemembers.html index 4e141c7..749bb93 100644 --- a/docs/namespacemembers.html +++ b/docs/namespacemembers.html @@ -1,9 +1,9 @@ - + - - + + SinricPro Library: Namespace Members @@ -23,8 +23,8 @@
    - - + @@ -33,21 +33,22 @@
    +
    SinricPro Library
    - + +/* @license-end */ +
    @@ -61,7 +62,7 @@
    @@ -75,181 +76,114 @@
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    -

    - a -

    diff --git a/docs/namespacemembers_type.html b/docs/namespacemembers_type.html index 047259a..2d9c6dc 100644 --- a/docs/namespacemembers_type.html +++ b/docs/namespacemembers_type.html @@ -1,9 +1,9 @@ - + - - + + SinricPro Library: Namespace Members @@ -23,8 +23,8 @@
    - - + @@ -33,21 +33,22 @@
    +
    SinricPro Library
    - + +/* @license-end */ +
    @@ -61,7 +62,7 @@
    @@ -75,181 +76,114 @@
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  - -

    - a -

    diff --git a/docs/nav_fd.png b/docs/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/docs/nav_hd.png b/docs/nav_hd.png new file mode 100644 index 0000000000000000000000000000000000000000..de80f18ad6488b9990303f267a76fdc83f0ffd80 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^j6lr8!2~3AUOE6t21`#D$B+ufw|9379#G(63FK{W z5s6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/docs/navtree.css b/docs/navtree.css index 33341a6..69211d4 100644 --- a/docs/navtree.css +++ b/docs/navtree.css @@ -22,8 +22,13 @@ #nav-tree .selected { background-image: url('tab_a.png'); background-repeat:repeat-x; - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + color: var(--nav-text-active-color); + text-shadow: var(--nav-text-active-shadow); +} + +#nav-tree .selected .arrow { + color: var(--nav-arrow-selected-color); + text-shadow: none; } #nav-tree img { @@ -37,13 +42,12 @@ text-decoration:none; padding:0px; margin:0px; - outline:none; } #nav-tree .label { margin:0px; padding:0px; - font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + font: 12px var(--font-family-nav); } #nav-tree .label a { @@ -52,7 +56,7 @@ #nav-tree .selected a { text-decoration:none; - color:#fff; + color:var(--nav-text-active-color); } #nav-tree .children_ul { @@ -67,7 +71,6 @@ #nav-tree { padding: 0px 0px; - background-color: #FAFAFF; font-size:14px; overflow:auto; } @@ -86,7 +89,8 @@ display:block; position: absolute; left: 0px; - width: 250px; + width: $width; + overflow : hidden; } .ui-resizable .ui-resizable-handle { @@ -94,7 +98,7 @@ } .ui-resizable-e { - background-image:url("splitbar.png"); + background-image:var(--nav-splitbar-image); background-size:100%; background-repeat:repeat-y; background-attachment: scroll; @@ -117,9 +121,8 @@ } #nav-tree { - background-image:url('nav_h.png'); background-repeat:repeat-x; - background-color: #F9FAFC; + background-color: var(--nav-background-color); -webkit-overflow-scrolling : touch; /* iOS 5+ */ } diff --git a/docs/navtree.js b/docs/navtree.js index 1e272d3..93dd3d4 100644 --- a/docs/navtree.js +++ b/docs/navtree.js @@ -94,7 +94,7 @@ function cachedLink() } } -function getScript(scriptName,func,show) +function getScript(scriptName,func) { var head = document.getElementsByTagName("head")[0]; var script = document.createElement('script'); @@ -124,7 +124,7 @@ function createIndent(o,domNode,node,level) node.plus_img.innerHTML=arrowRight; node.expanded = false; } else { - expandNode(o, node, false, false); + expandNode(o, node, false, true); } } node.expandToggle.appendChild(imgNode); @@ -265,15 +265,15 @@ function showRoot() })(); } -function expandNode(o, node, imm, showRoot) +function expandNode(o, node, imm, setFocus) { if (node.childrenData && !node.expanded) { if (typeof(node.childrenData)==='string') { var varName = node.childrenData; getScript(node.relpath+varName,function(){ node.childrenData = getData(varName); - expandNode(o, node, imm, showRoot); - }, showRoot); + expandNode(o, node, imm, setFocus); + }); } else { if (!node.childrenVisited) { getNode(o, node); @@ -281,6 +281,9 @@ function expandNode(o, node, imm, showRoot) $(node.getChildrenUL()).slideDown("fast"); node.plus_img.innerHTML = arrowDown; node.expanded = true; + if (setFocus) { + $(node.expandToggle).focus(); + } } } } @@ -325,11 +328,14 @@ function selectAndHighlight(hash,n) $(n.itemDiv).addClass('selected'); $(n.itemDiv).attr('id','selected'); } + var topOffset=5; + if (typeof page_layout!=='undefined' && page_layout==1) { + topOffset+=$('#top').outerHeight(); + } if ($('#nav-tree-contents .item:first').hasClass('selected')) { - $('#nav-sync').css('top','30px'); - } else { - $('#nav-sync').css('top','5px'); + topOffset+=25; } + $('#nav-sync').css('top',topOffset+'px'); showRoot(); } @@ -341,7 +347,7 @@ function showNode(o, node, index, hash) getScript(node.relpath+varName,function(){ node.childrenData = getData(varName); showNode(o,node,index,hash); - },true); + }); } else { if (!node.childrenVisited) { getNode(o, node); @@ -359,11 +365,11 @@ function showNode(o, node, index, hash) n.childrenData = getData(varName); node.expanded=false; showNode(o,node,index,hash); // retry with child node expanded - },true); + }); } else { var rootBase = stripPath(o.toroot.replace(/\..+$/, '')); if (rootBase=="index" || rootBase=="pages" || rootBase=="search") { - expandNode(o, n, true, true); + expandNode(o, n, true, false); } selectAndHighlight(hash,n); } @@ -441,7 +447,7 @@ function navTo(o,root,hash,relpath) if (navTreeSubIndices[i]) { gotoNode(o,i,root,hash,relpath); } - },true); + }); } } @@ -542,5 +548,12 @@ function initNavTree(toroot,relpath) navTo(o,toroot,hashUrl(),relpath); } }) + + $("div.toc a[href]").click(function(e) { + e.preventDefault(); + var docContent = $('#doc-content'); + var aname = $(this).attr("href"); + gotoAnchor($(aname),aname,true); + }) } /* @license-end */ diff --git a/docs/navtreedata.js b/docs/navtreedata.js index 0151515..bb2b216 100644 --- a/docs/navtreedata.js +++ b/docs/navtreedata.js @@ -25,30 +25,8 @@ var NAVTREE = [ [ "SinricPro Library", "index.html", [ - [ "SinricPro (ESP8266 / ESP32 SDK)", "index.html", [ - [ "Note", "index.html#autotoc_md1", null ], - [ "Installation", "index.html#autotoc_md2", [ - [ "VS Code & PlatformIO:", "index.html#autotoc_md3", null ], - [ "ArduinoIDE", "index.html#autotoc_md4", null ] - ] ], - [ "Dependencies", "index.html#autotoc_md6", null ], - [ "Full user documentation", "index.html#autotoc_md8", null ], - [ "Examples", "index.html#autotoc_md10", null ], - [ "Usage", "index.html#autotoc_md12", [ - [ "Include SinricPro-Library (SinricPro.h) and SinricPro-Device-Libraries (eg. SinricProSwitch.h)", "index.html#autotoc_md13", null ], - [ "Define your credentials from SinricPro-Portal (portal.sinric.pro)", "index.html#autotoc_md14", null ], - [ "Define callback routine(s)", "index.html#autotoc_md15", null ], - [ "In setup()", "index.html#autotoc_md16", null ], - [ "In loop()", "index.html#autotoc_md17", null ] - ] ], - [ "How to add a device?", "index.html#autotoc_md19", null ], - [ "How to retrieve a device for sending an event?", "index.html#autotoc_md21", null ], - [ "How to send a push notification?", "index.html#autotoc_md22", null ], - [ "Devices", "index.html#autotoc_md24", [ - [ "* Custom devices", "index.html#autotoc_md25", null ] - ] ] - ] ], - [ "Modules", "modules.html", "modules" ], + [ "SinricPro (ESP8266 / ESP32 / RP2040)", "index.html", "index" ], + [ "Topics", "topics.html", "topics" ], [ "Namespace Members", "namespacemembers.html", [ [ "All", "namespacemembers.html", null ], [ "Typedefs", "namespacemembers_type.html", null ] @@ -68,7 +46,7 @@ var NAVTREE = var NAVTREEINDEX = [ "annotated.html", -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html#aa2d3dbea5b07e4c5f39d3d20aa2167a4" +"index.html#autotoc_md1" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/docs/navtreeindex0.js b/docs/navtreeindex0.js index 4e69a9a..ad8f198 100644 --- a/docs/navtreeindex0.js +++ b/docs/navtreeindex0.js @@ -1,253 +1,253 @@ var NAVTREEINDEX0 = { "annotated.html":[3,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_air_quality_sensor.html":[1,2,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_air_quality_sensor.html#a733195bdc5b15c858e4e890847b3a0d5":[1,2,0,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_brightness_controller.html":[1,2,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_brightness_controller.html#a0633e5fa2981189f4a093bab00a8c7f1":[1,2,1,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_brightness_controller.html#a2a96c414210f61de3ce53a4ca8c963b3":[1,2,1,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_brightness_controller.html#abbaab3067b1fcdcc5928451b818a4420":[1,2,1,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html":[1,2,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html#a92f3b83744b5bb82d32628eef39c1eb9":[1,2,2,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html#ab1123d03d471fad4896eb2960ed41855":[1,2,2,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html#afd8aee20590bfadec181c6ee515125ec":[1,2,2,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html#aff5839c3020c3006af1a2a8c37cc858e":[1,2,2,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_controller.html":[1,2,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_controller.html#a059ff103149869b7c49cdb8911875b7b":[1,2,3,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_controller.html#a3599a6d00eb0f9127a7c1188885c5bc0":[1,2,3,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html":[1,2,4], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html#a0f90d7f5a5b365116f97beca7630ccc9":[1,2,4,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html#a7468976e7fffeee14cc869b7236cbb50":[1,2,4,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html#a7ea9fd9861a5668a41d06267bfbec82a":[1,2,4,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html#a8535c44fd2517ed09ebe6a203cc25b67":[1,2,4,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_contact_sensor.html":[1,2,5], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_contact_sensor.html#a452a4cfa3177d8d8d31c5919e9ccbb19":[1,2,5,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_door_controller.html":[3,0,0,28], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_door_controller.html#a375cda2b0bc05e1a66e3bc29d059d9a7":[3,0,0,28,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_door_controller.html#a6b536531ab89b39f1a48cb107e22185e":[3,0,0,28,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_doorbell.html":[1,2,6], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_doorbell.html#a168f5a4ddcbf381fd548bf10ee05b272":[1,2,6,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html":[1,2,7], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html#a41a5c1506545c44c2408054a8675c7a8":[1,2,7,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html#a4aaa7a29394560be7537a86b0304d199":[1,2,7,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html#a4ad5674e36d96a73147388251b794c82":[1,2,7,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html#aa6c3aabc2b442d82ac5456ccaac3f60d":[1,2,7,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_input_controller.html":[1,2,8], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_input_controller.html#a18f8f71ecf0d7292a63d9486f94e5180":[1,2,8,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_input_controller.html#a973241ac912a18b142d236dda7f80e97":[1,2,8,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_keypad_controller.html":[1,2,9], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_keypad_controller.html#ab24b4858dcc69145a367e964c2ae7961":[1,2,9,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_lock_controller.html":[1,2,10], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_lock_controller.html#a8fb3fec204da21e69d05f89a9ecb4739":[1,2,10,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_lock_controller.html#aee42cc397234a454fd353ca6bc12a859":[1,2,10,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_media_controller.html":[1,2,11], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_media_controller.html#a7af593cbf79d38f6b90efb5afee45077":[1,2,11,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_media_controller.html#afc2620621377fff928737b5a8a537020":[1,2,11,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html":[1,2,12], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html#a41f8465e89d147c08ab8cbc6839d34da":[1,2,12,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html#a6b15ba168b3a673b98da43ac5e4ef76c":[1,2,12,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html#a7c84d5c26f2ded88e4941313015f7f4c":[1,2,12,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html#ada087c948c3ab923bdb7818daa6b2b79":[1,2,12,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_motion_sensor.html":[1,2,13], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_motion_sensor.html#a9be024aa2bb70f0146a02dd1b79d3faa":[1,2,13,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mute_controller.html":[1,2,14], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mute_controller.html#a4717d892b64a14052712152924bd5b29":[1,2,14,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mute_controller.html#ab5fc79cc8903c3ccc1c106abf61d7cfd":[1,2,14,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_percentage_controller.html":[1,2,15], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_percentage_controller.html#a77ac70c4880e38dae4f640dceaeb2816":[1,2,15,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_percentage_controller.html#adf688c12e451e52b05670f150bdabcc8":[1,2,15,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_percentage_controller.html#aeef432df118679c689ccd8a48d47dc3d":[1,2,15,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html":[1,2,16], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html#a0685d34694badb4442fed6b69b69b366":[1,2,16,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html#a13b10bdb1844babe4de320fff9172d96":[1,2,16,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html#a2f1f88c7b4d9503bfcfe5557c5e55ed4":[1,2,16,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_sensor.html":[1,2,17], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_sensor.html#aec04692842ae1953973503f6be6d9afc":[1,2,17,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html":[1,2,18], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html#a32f3257da431a1035f23a265ff0cc4cf":[1,2,18,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html#acfd5f3a30933ace93751bd823630cded":[1,2,18,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html":[1,2,19], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html#a04266791a4b23e9614b8773edb5f67b6":[1,2,19,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html":[1,2,20], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html#a1d726751c416fe6dd408e5dd19f6b53b":[1,2,20,4], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html#a6d6d8070b49c8b5272460836a1120b33":[1,2,20,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html#a94adbcdf6ce61cb6552a5f9915e705ae":[1,2,20,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html#aaf84aa417e2246843a27e819898e64b5":[1,2,20,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html#ae85696d55112ae7343f9807faee6e064":[1,2,20,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_air_quality_sensor.html":[1,1,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_air_quality_sensor.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,0,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_air_quality_sensor.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,0,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_air_quality_sensor.html#a733195bdc5b15c858e4e890847b3a0d5":[1,1,0,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_air_quality_sensor.html#acfd5f3a30933ace93751bd823630cded":[1,1,0,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html":[1,1,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,1,5], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html#a1d726751c416fe6dd408e5dd19f6b53b":[1,1,1,7], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,1,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html#a6d6d8070b49c8b5272460836a1120b33":[1,1,1,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html#a94adbcdf6ce61cb6552a5f9915e705ae":[1,1,1,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html#aaf84aa417e2246843a27e819898e64b5":[1,1,1,6], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html#acfd5f3a30933ace93751bd823630cded":[1,1,1,4], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html#ae85696d55112ae7343f9807faee6e064":[1,1,1,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_camera.html":[1,1,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_camera.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,2,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_camera.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,2,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_camera.html#acfd5f3a30933ace93751bd823630cded":[1,1,2,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html":[1,0,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#a1b5b66fb0c539b9b5f5f58a135056c75":[1,0,0,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#a27a9bb7f1e8bde0f39398649493b6f93":[1,0,0,6], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#a37c2d0658e498b1bf878f8a3d9a7c5b4":[1,0,0,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#a654bb017ca55b448d55bb36e0346f38a":[1,0,0,4], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#a84a491d393b5c7c1433a2a9e62a58766":[1,0,0,5], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#ac33a355adfc413d4ff36974d735115bd":[1,0,0,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#afb2be26eef972203404140612fa31326":[1,0,0,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_contactsensor.html":[1,1,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_contactsensor.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,3,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_contactsensor.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,3,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_contactsensor.html#a452a4cfa3177d8d8d31c5919e9ccbb19":[1,1,3,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_contactsensor.html#acfd5f3a30933ace93751bd823630cded":[1,1,3,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_device.html":[3,0,0,5], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html":[1,1,4], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,4,5], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html#a0685d34694badb4442fed6b69b69b366":[1,1,4,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html#a13b10bdb1844babe4de320fff9172d96":[1,1,4,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html#a2f1f88c7b4d9503bfcfe5557c5e55ed4":[1,1,4,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,4,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html#acfd5f3a30933ace93751bd823630cded":[1,1,4,4], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_doorbell.html":[1,1,5], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_doorbell.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,5,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_doorbell.html#a168f5a4ddcbf381fd548bf10ee05b272":[1,1,5,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_doorbell.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,5,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_doorbell.html#acfd5f3a30933ace93751bd823630cded":[1,1,5,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html":[1,1,6], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,6,5], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html#a0685d34694badb4442fed6b69b69b366":[1,1,6,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html#a13b10bdb1844babe4de320fff9172d96":[1,1,6,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html#a2f1f88c7b4d9503bfcfe5557c5e55ed4":[1,1,6,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,6,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html#acfd5f3a30933ace93751bd823630cded":[1,1,6,4], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html":[1,1,7], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,7,5], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html#a1d726751c416fe6dd408e5dd19f6b53b":[1,1,7,7], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,7,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html#a6d6d8070b49c8b5272460836a1120b33":[1,1,7,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html#a94adbcdf6ce61cb6552a5f9915e705ae":[1,1,7,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html#aaf84aa417e2246843a27e819898e64b5":[1,1,7,6], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html#acfd5f3a30933ace93751bd823630cded":[1,1,7,4], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html#ae85696d55112ae7343f9807faee6e064":[1,1,7,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_garage_door.html":[1,1,8], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_garage_door.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,8,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_garage_door.html#a375cda2b0bc05e1a66e3bc29d059d9a7":[1,1,8,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_garage_door.html#a6b536531ab89b39f1a48cb107e22185e":[1,1,8,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html":[1,1,9], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,9,11], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a059ff103149869b7c49cdb8911875b7b":[1,1,9,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a0633e5fa2981189f4a093bab00a8c7f1":[1,1,9,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a0f90d7f5a5b365116f97beca7630ccc9":[1,1,9,9], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a2a96c414210f61de3ce53a4ca8c963b3":[1,1,9,7], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,9,6], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a3599a6d00eb0f9127a7c1188885c5bc0":[1,1,9,8], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a7468976e7fffeee14cc869b7236cbb50":[1,1,9,4], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a7ea9fd9861a5668a41d06267bfbec82a":[1,1,9,5], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#a8535c44fd2517ed09ebe6a203cc25b67":[1,1,9,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#abbaab3067b1fcdcc5928451b818a4420":[1,1,9,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html#acfd5f3a30933ace93751bd823630cded":[1,1,9,10], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_lock.html":[1,1,10], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_lock.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,10,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_lock.html#a8fb3fec204da21e69d05f89a9ecb4739":[1,1,10,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_lock.html#aee42cc397234a454fd353ca6bc12a859":[1,1,10,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_motionsensor.html":[1,1,11], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_motionsensor.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,11,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_motionsensor.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,11,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_motionsensor.html#a9be024aa2bb70f0146a02dd1b79d3faa":[1,1,11,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_motionsensor.html#acfd5f3a30933ace93751bd823630cded":[1,1,11,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_power_sensor.html":[1,1,12], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_power_sensor.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,12,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_power_sensor.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,12,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_power_sensor.html#acfd5f3a30933ace93751bd823630cded":[1,1,12,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_power_sensor.html#aec04692842ae1953973503f6be6d9afc":[1,1,12,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html":[1,1,13], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,13,17], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a18f8f71ecf0d7292a63d9486f94e5180":[1,1,13,6], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a2c868c87f96e3924c8b309e1bcfb507e":[1,1,13,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,13,4], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a41a5c1506545c44c2408054a8675c7a8":[1,1,13,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a41f8465e89d147c08ab8cbc6839d34da":[1,1,13,14], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a4717d892b64a14052712152924bd5b29":[1,1,13,15], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a4aaa7a29394560be7537a86b0304d199":[1,1,13,7], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a4ad5674e36d96a73147388251b794c82":[1,1,13,11], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a5db8c85f222debbece54c794015f9402":[1,1,13,10], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a6b15ba168b3a673b98da43ac5e4ef76c":[1,1,13,8], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a7af593cbf79d38f6b90efb5afee45077":[1,1,13,12], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a7c84d5c26f2ded88e4941313015f7f4c":[1,1,13,13], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#a973241ac912a18b142d236dda7f80e97":[1,1,13,18], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#aa2d3dbea5b07e4c5f39d3d20aa2167a4":[1,1,13,19], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#aa6c3aabc2b442d82ac5456ccaac3f60d":[1,1,13,5], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#ab5fc79cc8903c3ccc1c106abf61d7cfd":[1,1,13,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#acfd5f3a30933ace93751bd823630cded":[1,1,13,16], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#ada087c948c3ab923bdb7818daa6b2b79":[1,1,13,9], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html#afc2620621377fff928737b5a8a537020":[1,1,13,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_switch.html":[1,1,14], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_switch.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,14,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_switch.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,14,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_switch.html#acfd5f3a30933ace93751bd823630cded":[1,1,14,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html":[1,1,17], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,17,13], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#a18f8f71ecf0d7292a63d9486f94e5180":[1,1,17,6], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#a2c868c87f96e3924c8b309e1bcfb507e":[1,1,17,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,17,5], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#a4717d892b64a14052712152924bd5b29":[1,1,17,11], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#a5db8c85f222debbece54c794015f9402":[1,1,17,7], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#a7af593cbf79d38f6b90efb5afee45077":[1,1,17,10], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#a92f3b83744b5bb82d32628eef39c1eb9":[1,1,17,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#a973241ac912a18b142d236dda7f80e97":[1,1,17,14], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#aa2d3dbea5b07e4c5f39d3d20aa2167a4":[1,1,17,15], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#ab1123d03d471fad4896eb2960ed41855":[1,1,17,8], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#ab5fc79cc8903c3ccc1c106abf61d7cfd":[1,1,17,4], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#acfd5f3a30933ace93751bd823630cded":[1,1,17,12], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#afc2620621377fff928737b5a8a537020":[1,1,17,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#afd8aee20590bfadec181c6ee515125ec":[1,1,17,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html#aff5839c3020c3006af1a2a8c37cc858e":[1,1,17,9], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_temperaturesensor.html":[1,1,15], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_temperaturesensor.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,15,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_temperaturesensor.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,15,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_temperaturesensor.html#a75956fe7aff6e595a9b57519316ff789":[1,1,15,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_temperaturesensor.html#acfd5f3a30933ace93751bd823630cded":[1,1,15,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html":[1,1,16], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,16,5], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html#a1c73725f1f3fbb1c5b72208aae5c2bf2":[1,1,16,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html#a2ef31536973b20815dd6c80a28e19c9f":[1,1,16,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,16,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html#a75956fe7aff6e595a9b57519316ff789":[1,1,16,7], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html#ab8b7fdd977a0a38413f2279b50274890":[1,1,16,6], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html#ac51f6fecfdf4c7bc8e0712e2da47bbf4":[1,1,16,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html#acfd5f3a30933ace93751bd823630cded":[1,1,16,4], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html#ae7273cd094f64a93494ae99501fc83e8":[1,1,16,8], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html":[1,1,18], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,18,8], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#a1c73725f1f3fbb1c5b72208aae5c2bf2":[1,1,18,5], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#a1d726751c416fe6dd408e5dd19f6b53b":[1,1,18,10], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#a2ef31536973b20815dd6c80a28e19c9f":[1,1,18,6], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,18,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#a6d6d8070b49c8b5272460836a1120b33":[1,1,18,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#a94adbcdf6ce61cb6552a5f9915e705ae":[1,1,18,4], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#aaf84aa417e2246843a27e819898e64b5":[1,1,18,9], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#ab8b7fdd977a0a38413f2279b50274890":[1,1,18,11], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#ac51f6fecfdf4c7bc8e0712e2da47bbf4":[1,1,18,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#acfd5f3a30933ace93751bd823630cded":[1,1,18,7], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#ae7273cd094f64a93494ae99501fc83e8":[1,1,18,12], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html#ae85696d55112ae7343f9807faee6e064":[1,1,18,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_temperature_sensor.html":[1,2,21], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_temperature_sensor.html#a75956fe7aff6e595a9b57519316ff789":[1,2,21,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html":[1,2,22], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html#a1c73725f1f3fbb1c5b72208aae5c2bf2":[1,2,22,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html#a2ef31536973b20815dd6c80a28e19c9f":[1,2,22,2], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html#ab8b7fdd977a0a38413f2279b50274890":[1,2,22,3], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html#ac51f6fecfdf4c7bc8e0712e2da47bbf4":[1,2,22,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html#ae7273cd094f64a93494ae99501fc83e8":[1,2,22,4], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_toggle_controller.html":[1,2,23], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_toggle_controller.html#a7ccd28a4f20922847d0461649af5572d":[1,2,23,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_toggle_controller.html#a7fcc5084fea488e5b5e95f5ad7015a0f":[1,2,23,1], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html":[1,2,24], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html#a2c868c87f96e3924c8b309e1bcfb507e":[1,2,24,0], -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html#a5db8c85f222debbece54c794015f9402":[1,2,24,1] +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.html":[1,2,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.html#a733195bdc5b15c858e4e890847b3a0d5":[1,2,0,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html":[1,2,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html#a0633e5fa2981189f4a093bab00a8c7f1":[1,2,1,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html#a2a96c414210f61de3ce53a4ca8c963b3":[1,2,1,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html#abbaab3067b1fcdcc5928451b818a4420":[1,2,1,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html":[1,2,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html#a92f3b83744b5bb82d32628eef39c1eb9":[1,2,2,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html#ab1123d03d471fad4896eb2960ed41855":[1,2,2,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html#afd8aee20590bfadec181c6ee515125ec":[1,2,2,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html#aff5839c3020c3006af1a2a8c37cc858e":[1,2,2,3], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html":[1,2,3], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html#a059ff103149869b7c49cdb8911875b7b":[1,2,3,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html#a3599a6d00eb0f9127a7c1188885c5bc0":[1,2,3,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html":[1,2,4], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html#a0f90d7f5a5b365116f97beca7630ccc9":[1,2,4,3], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html#a7468976e7fffeee14cc869b7236cbb50":[1,2,4,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html#a7ea9fd9861a5668a41d06267bfbec82a":[1,2,4,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html#a8535c44fd2517ed09ebe6a203cc25b67":[1,2,4,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.html":[1,2,5], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.html#a452a4cfa3177d8d8d31c5919e9ccbb19":[1,2,5,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.html":[3,0,0,7], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.html#a375cda2b0bc05e1a66e3bc29d059d9a7":[3,0,0,7,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.html#a6b536531ab89b39f1a48cb107e22185e":[3,0,0,7,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.html":[1,2,6], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.html#a168f5a4ddcbf381fd548bf10ee05b272":[1,2,6,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html":[1,2,7], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html#a41a5c1506545c44c2408054a8675c7a8":[1,2,7,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html#a4aaa7a29394560be7537a86b0304d199":[1,2,7,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html#a4ad5674e36d96a73147388251b794c82":[1,2,7,3], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html#aa6c3aabc2b442d82ac5456ccaac3f60d":[1,2,7,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html":[1,2,8], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html#a18f8f71ecf0d7292a63d9486f94e5180":[1,2,8,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html#a973241ac912a18b142d236dda7f80e97":[1,2,8,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller.html":[1,2,9], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller.html#ab24b4858dcc69145a367e964c2ae7961":[1,2,9,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html":[1,2,10], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html#a8fb3fec204da21e69d05f89a9ecb4739":[1,2,10,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html#aee42cc397234a454fd353ca6bc12a859":[1,2,10,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html":[1,2,11], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html#a7af593cbf79d38f6b90efb5afee45077":[1,2,11,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html#afc2620621377fff928737b5a8a537020":[1,2,11,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html":[1,2,12], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html#a41f8465e89d147c08ab8cbc6839d34da":[1,2,12,3], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html#a6b15ba168b3a673b98da43ac5e4ef76c":[1,2,12,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html#a7c84d5c26f2ded88e4941313015f7f4c":[1,2,12,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html#ada087c948c3ab923bdb7818daa6b2b79":[1,2,12,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.html":[1,2,13], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.html#a9be024aa2bb70f0146a02dd1b79d3faa":[1,2,13,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html":[1,2,14], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html#a4717d892b64a14052712152924bd5b29":[1,2,14,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html#ab5fc79cc8903c3ccc1c106abf61d7cfd":[1,2,14,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html":[1,2,15], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html#a77ac70c4880e38dae4f640dceaeb2816":[1,2,15,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html#adf688c12e451e52b05670f150bdabcc8":[1,2,15,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html#aeef432df118679c689ccd8a48d47dc3d":[1,2,15,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html":[1,2,16], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html#a0685d34694badb4442fed6b69b69b366":[1,2,16,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html#a13b10bdb1844babe4de320fff9172d96":[1,2,16,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html#a2f1f88c7b4d9503bfcfe5557c5e55ed4":[1,2,16,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.html":[1,2,17], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.html#aec04692842ae1953973503f6be6d9afc":[1,2,17,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html":[1,2,18], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html#a32f3257da431a1035f23a265ff0cc4cf":[1,2,18,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html#acfd5f3a30933ace93751bd823630cded":[1,2,18,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html":[1,2,19], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html#a04266791a4b23e9614b8773edb5f67b6":[1,2,19,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html":[1,2,20], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#a1d726751c416fe6dd408e5dd19f6b53b":[1,2,20,4], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#a6d6d8070b49c8b5272460836a1120b33":[1,2,20,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#a94adbcdf6ce61cb6552a5f9915e705ae":[1,2,20,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#aaf84aa417e2246843a27e819898e64b5":[1,2,20,3], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#ae85696d55112ae7343f9807faee6e064":[1,2,20,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.html":[1,1,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,0,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.html#a733195bdc5b15c858e4e890847b3a0d5":[1,1,0,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html":[1,1,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,1,5], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#a1d726751c416fe6dd408e5dd19f6b53b":[1,1,1,7], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,1,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#a6d6d8070b49c8b5272460836a1120b33":[1,1,1,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#a94adbcdf6ce61cb6552a5f9915e705ae":[1,1,1,3], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#aaf84aa417e2246843a27e819898e64b5":[1,1,1,6], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#acfd5f3a30933ace93751bd823630cded":[1,1,1,4], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html#ae85696d55112ae7343f9807faee6e064":[1,1,1,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html":[1,1,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,2,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,2,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html#acfd5f3a30933ace93751bd823630cded":[1,1,2,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html":[1,0,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#a1b5b66fb0c539b9b5f5f58a135056c75":[1,0,0,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#a27a9bb7f1e8bde0f39398649493b6f93":[1,0,0,6], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#a37c2d0658e498b1bf878f8a3d9a7c5b4":[1,0,0,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#a654bb017ca55b448d55bb36e0346f38a":[1,0,0,4], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#ab68694b0983ae36c532cbd52adbb180d":[1,0,0,5], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#ac33a355adfc413d4ff36974d735115bd":[1,0,0,3], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#afb2be26eef972203404140612fa31326":[1,0,0,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.html":[1,1,3], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,3,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.html#a452a4cfa3177d8d8d31c5919e9ccbb19":[1,1,3,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device.html":[3,0,0,27], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html":[1,1,4], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,4,5], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html#a0685d34694badb4442fed6b69b69b366":[1,1,4,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html#a13b10bdb1844babe4de320fff9172d96":[1,1,4,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html#a2f1f88c7b4d9503bfcfe5557c5e55ed4":[1,1,4,3], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,4,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html#acfd5f3a30933ace93751bd823630cded":[1,1,4,4], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html":[1,1,5], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,5,3], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html#a168f5a4ddcbf381fd548bf10ee05b272":[1,1,5,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,5,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html#acfd5f3a30933ace93751bd823630cded":[1,1,5,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html":[1,1,6], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,6,5], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html#a0685d34694badb4442fed6b69b69b366":[1,1,6,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html#a13b10bdb1844babe4de320fff9172d96":[1,1,6,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html#a2f1f88c7b4d9503bfcfe5557c5e55ed4":[1,1,6,3], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,6,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html#acfd5f3a30933ace93751bd823630cded":[1,1,6,4], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html":[1,1,7], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,7,5], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#a1d726751c416fe6dd408e5dd19f6b53b":[1,1,7,7], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,7,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#a6d6d8070b49c8b5272460836a1120b33":[1,1,7,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#a94adbcdf6ce61cb6552a5f9915e705ae":[1,1,7,3], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#aaf84aa417e2246843a27e819898e64b5":[1,1,7,6], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#acfd5f3a30933ace93751bd823630cded":[1,1,7,4], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html#ae85696d55112ae7343f9807faee6e064":[1,1,7,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html":[1,1,8], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,8,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html#a375cda2b0bc05e1a66e3bc29d059d9a7":[1,1,8,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html#a6b536531ab89b39f1a48cb107e22185e":[1,1,8,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html":[1,1,9], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,9,11], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a059ff103149869b7c49cdb8911875b7b":[1,1,9,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a0633e5fa2981189f4a093bab00a8c7f1":[1,1,9,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a0f90d7f5a5b365116f97beca7630ccc9":[1,1,9,9], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a2a96c414210f61de3ce53a4ca8c963b3":[1,1,9,7], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,9,6], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a3599a6d00eb0f9127a7c1188885c5bc0":[1,1,9,8], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a7468976e7fffeee14cc869b7236cbb50":[1,1,9,4], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a7ea9fd9861a5668a41d06267bfbec82a":[1,1,9,5], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#a8535c44fd2517ed09ebe6a203cc25b67":[1,1,9,3], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#abbaab3067b1fcdcc5928451b818a4420":[1,1,9,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html#acfd5f3a30933ace93751bd823630cded":[1,1,9,10], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html":[1,1,10], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,10,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html#a8fb3fec204da21e69d05f89a9ecb4739":[1,1,10,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html#aee42cc397234a454fd353ca6bc12a859":[1,1,10,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.html":[1,1,11], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,11,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.html#a9be024aa2bb70f0146a02dd1b79d3faa":[1,1,11,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.html":[1,1,12], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,12,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.html#aec04692842ae1953973503f6be6d9afc":[1,1,12,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html":[1,1,13], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,13,17], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a18f8f71ecf0d7292a63d9486f94e5180":[1,1,13,6], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a2c868c87f96e3924c8b309e1bcfb507e":[1,1,13,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,13,4], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a41a5c1506545c44c2408054a8675c7a8":[1,1,13,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a41f8465e89d147c08ab8cbc6839d34da":[1,1,13,14], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a4717d892b64a14052712152924bd5b29":[1,1,13,15], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a4aaa7a29394560be7537a86b0304d199":[1,1,13,7], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a4ad5674e36d96a73147388251b794c82":[1,1,13,11], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a5db8c85f222debbece54c794015f9402":[1,1,13,10], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a6b15ba168b3a673b98da43ac5e4ef76c":[1,1,13,8], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a7af593cbf79d38f6b90efb5afee45077":[1,1,13,12], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a7c84d5c26f2ded88e4941313015f7f4c":[1,1,13,13], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#a973241ac912a18b142d236dda7f80e97":[1,1,13,18], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#aa2d3dbea5b07e4c5f39d3d20aa2167a4":[1,1,13,19], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#aa6c3aabc2b442d82ac5456ccaac3f60d":[1,1,13,5], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#ab5fc79cc8903c3ccc1c106abf61d7cfd":[1,1,13,3], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#acfd5f3a30933ace93751bd823630cded":[1,1,13,16], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#ada087c948c3ab923bdb7818daa6b2b79":[1,1,13,9], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html#afc2620621377fff928737b5a8a537020":[1,1,13,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html":[1,1,14], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,14,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,14,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html#acfd5f3a30933ace93751bd823630cded":[1,1,14,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html":[1,1,17], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,17,13], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a18f8f71ecf0d7292a63d9486f94e5180":[1,1,17,6], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a2c868c87f96e3924c8b309e1bcfb507e":[1,1,17,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,17,5], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a4717d892b64a14052712152924bd5b29":[1,1,17,11], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a5db8c85f222debbece54c794015f9402":[1,1,17,7], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a7af593cbf79d38f6b90efb5afee45077":[1,1,17,10], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a92f3b83744b5bb82d32628eef39c1eb9":[1,1,17,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#a973241ac912a18b142d236dda7f80e97":[1,1,17,14], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#aa2d3dbea5b07e4c5f39d3d20aa2167a4":[1,1,17,15], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#ab1123d03d471fad4896eb2960ed41855":[1,1,17,8], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#ab5fc79cc8903c3ccc1c106abf61d7cfd":[1,1,17,4], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#acfd5f3a30933ace93751bd823630cded":[1,1,17,12], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#afc2620621377fff928737b5a8a537020":[1,1,17,3], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#afd8aee20590bfadec181c6ee515125ec":[1,1,17,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html#aff5839c3020c3006af1a2a8c37cc858e":[1,1,17,9], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.html":[1,1,15], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,15,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.html#a75956fe7aff6e595a9b57519316ff789":[1,1,15,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html":[1,1,16], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,16,5], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#a1c73725f1f3fbb1c5b72208aae5c2bf2":[1,1,16,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#a2ef31536973b20815dd6c80a28e19c9f":[1,1,16,3], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,16,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#a75956fe7aff6e595a9b57519316ff789":[1,1,16,7], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#ab8b7fdd977a0a38413f2279b50274890":[1,1,16,6], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#ac51f6fecfdf4c7bc8e0712e2da47bbf4":[1,1,16,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#acfd5f3a30933ace93751bd823630cded":[1,1,16,4], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html#ae7273cd094f64a93494ae99501fc83e8":[1,1,16,8], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html":[1,1,18], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a04266791a4b23e9614b8773edb5f67b6":[1,1,18,8], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a1c73725f1f3fbb1c5b72208aae5c2bf2":[1,1,18,5], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a1d726751c416fe6dd408e5dd19f6b53b":[1,1,18,10], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a2ef31536973b20815dd6c80a28e19c9f":[1,1,18,6], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a32f3257da431a1035f23a265ff0cc4cf":[1,1,18,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a6d6d8070b49c8b5272460836a1120b33":[1,1,18,3], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#a94adbcdf6ce61cb6552a5f9915e705ae":[1,1,18,4], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#aaf84aa417e2246843a27e819898e64b5":[1,1,18,9], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#ab8b7fdd977a0a38413f2279b50274890":[1,1,18,11], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#ac51f6fecfdf4c7bc8e0712e2da47bbf4":[1,1,18,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#acfd5f3a30933ace93751bd823630cded":[1,1,18,7], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#ae7273cd094f64a93494ae99501fc83e8":[1,1,18,12], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html#ae85696d55112ae7343f9807faee6e064":[1,1,18,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html":[1,2,21], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html#a75956fe7aff6e595a9b57519316ff789":[1,2,21,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html":[1,2,22], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#a1c73725f1f3fbb1c5b72208aae5c2bf2":[1,2,22,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#a2ef31536973b20815dd6c80a28e19c9f":[1,2,22,2], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#ab8b7fdd977a0a38413f2279b50274890":[1,2,22,3], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#ac51f6fecfdf4c7bc8e0712e2da47bbf4":[1,2,22,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#ae7273cd094f64a93494ae99501fc83e8":[1,2,22,4], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.html":[1,2,23], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.html#a7ccd28a4f20922847d0461649af5572d":[1,2,23,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.html#a7fcc5084fea488e5b5e95f5ad7015a0f":[1,2,23,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html":[1,2,24], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html#a2c868c87f96e3924c8b309e1bcfb507e":[1,2,24,0], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html#a5db8c85f222debbece54c794015f9402":[1,2,24,1], +"class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html#aa2d3dbea5b07e4c5f39d3d20aa2167a4":[1,2,24,2], +"classes.html":[3,1], +"functions.html":[3,3,0], +"functions_func.html":[3,3,1], +"group___capabilities.html":[1,2], +"group___devices.html":[1,1], +"group___sinric_pro.html":[1,0], +"hierarchy.html":[3,2], +"index.html":[0], +"index.html":[] }; diff --git a/docs/navtreeindex1.js b/docs/navtreeindex1.js index 116b7fe..5856395 100644 --- a/docs/navtreeindex1.js +++ b/docs/navtreeindex1.js @@ -1,15 +1,5 @@ var NAVTREEINDEX1 = { -"class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html#aa2d3dbea5b07e4c5f39d3d20aa2167a4":[1,2,24,2], -"classes.html":[3,1], -"functions.html":[3,3,0], -"functions_func.html":[3,3,1], -"group___capabilities.html":[1,2], -"group___devices.html":[1,1], -"group___sinric_pro.html":[1,0], -"hierarchy.html":[3,2], -"index.html":[0], -"index.html":[], "index.html#autotoc_md1":[0,0], "index.html#autotoc_md10":[0,4], "index.html#autotoc_md12":[0,5], @@ -28,8 +18,8 @@ var NAVTREEINDEX1 = "index.html#autotoc_md4":[0,1,1], "index.html#autotoc_md6":[0,2], "index.html#autotoc_md8":[0,3], -"modules.html":[1], "namespacemembers.html":[2,0], "namespacemembers_type.html":[2,1], -"pages.html":[] +"pages.html":[], +"topics.html":[1] }; diff --git a/docs/plus.svg b/docs/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/docs/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/plusd.svg b/docs/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/docs/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/resize.js b/docs/resize.js index e1ad0fe..aaeb6fc 100644 --- a/docs/resize.js +++ b/docs/resize.js @@ -22,38 +22,45 @@ @licend The above is the entire license notice for the JavaScript code in this file */ +var once=1; function initResizable() { var cookie_namespace = 'doxygen'; - var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + var sidenav,navtree,content,header,barWidth=6,desktop_vp=768,titleHeight; - function readCookie(cookie) + function readSetting(cookie) { - var myCookie = cookie_namespace+"_"+cookie+"="; - if (document.cookie) { - var index = document.cookie.indexOf(myCookie); - if (index != -1) { - var valStart = index + myCookie.length; - var valEnd = document.cookie.indexOf(";", valStart); - if (valEnd == -1) { - valEnd = document.cookie.length; + if (window.chrome) { + var val = localStorage.getItem(cookie_namespace+'_width'); + if (val) return val; + } else { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; } - var val = document.cookie.substring(valStart, valEnd); - return val; } } - return 0; + return 250; } - function writeCookie(cookie, val, expiration) + function writeSetting(cookie, val) { - if (val==undefined) return; - if (expiration == null) { + if (window.chrome) { + localStorage.setItem(cookie_namespace+"_width",val); + } else { var date = new Date(); date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week expiration = date.toGMTString(); + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; SameSite=Lax; expires=" + expiration+"; path=/"; } - document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; } function resizeWidth() @@ -61,13 +68,19 @@ function initResizable() var windowWidth = $(window).width() + "px"; var sidenavWidth = $(sidenav).outerWidth(); content.css({marginLeft:parseInt(sidenavWidth)+"px"}); - writeCookie('width',sidenavWidth-barWidth, null); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); + } + writeSetting('width',sidenavWidth-barWidth); } function restoreWidth(navWidth) { var windowWidth = $(window).width() + "px"; content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + } sidenav.css({width:navWidth + "px"}); } @@ -75,23 +88,20 @@ function initResizable() { var headerHeight = header.outerHeight(); var footerHeight = footer.outerHeight(); - var windowHeight = $(window).height() - headerHeight - footerHeight; - content.css({height:windowHeight + "px"}); - navtree.css({height:windowHeight + "px"}); - sidenav.css({height:windowHeight + "px"}); - var width=$(window).width(); - if (width!=collapsedWidth) { - if (width=desktop_vp) { - if (!collapsed) { - collapseExpand(); - } - } else if (width>desktop_vp && collapsedWidth0) { - restoreWidth(0); - collapsed=true; + newWidth=0; } else { - var width = readCookie('width'); - if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } - collapsed=false; + var width = readSetting('width'); + newWidth = (width>250 && width<$(window).width()) ? width : 250; } + restoreWidth(newWidth); + var sidenavWidth = $(sidenav).outerWidth(); + writeSetting('width',sidenavWidth-barWidth); } header = $("#top"); @@ -126,7 +138,7 @@ function initResizable() $('#nav-sync').css({ right:'34px' }); barWidth=20; } - var width = readCookie('width'); + var width = readSetting('width'); if (width) { restoreWidth(width); } else { resizeWidth(); } resizeHeight(); var url = location.href; @@ -134,7 +146,10 @@ function initResizable() if (i>=0) window.location.hash=url.substr(i); var _preventDefault = function(evt) { evt.preventDefault(); }; $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); - $(".ui-resizable-handle").dblclick(collapseExpand); + if (once) { + $(".ui-resizable-handle").dblclick(collapseExpand); + once=0 + } $(window).on('load',resizeHeight); } /* @license-end */ diff --git a/docs/search/all_0.js b/docs/search/all_0.js index 3c159a0..aacd505 100644 --- a/docs/search/all_0.js +++ b/docs/search/all_0.js @@ -1,12 +1,19 @@ var searchData= [ - ['adjustbandscallback_0',['AdjustBandsCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a28446c362f1f44e269b50619761c9e9b',1,'SINRICPRO_2_9_17']]], - ['adjustbrightnesscallback_1',['AdjustBrightnessCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a3ff8d93d9483f41bf8504fd3e9cc8f49',1,'SINRICPRO_2_9_17']]], - ['adjustpercentagecallback_2',['AdjustPercentageCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a088a491b8656c376085bc31d558fd05d',1,'SINRICPRO_2_9_17']]], - ['adjustpowerlevelcallback_3',['AdjustPowerLevelCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a3ec3aad26d06f5b943a6906e11afc1f3',1,'SINRICPRO_2_9_17']]], - ['adjustrangevaluecallback_4',['AdjustRangeValueCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a2ba46d8544d48aee620fff9a930c01ff',1,'SINRICPRO_2_9_17']]], - ['adjusttargettemperaturecallback_5',['AdjustTargetTemperatureCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a8d55dffbb520779ef95fc29e49032886',1,'SINRICPRO_2_9_17']]], - ['adjustvolumecallback_6',['AdjustVolumeCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#ac6304129491317f85cee56ca5925dfab',1,'SINRICPRO_2_9_17']]], - ['airqualitysensor_7',['AirQualitySensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_air_quality_sensor.html',1,'SINRICPRO_2_9_17']]], - ['airqualitysensor_3c_20sinricproairqualitysensor_20_3e_8',['AirQualitySensor< SinricProAirQualitySensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_air_quality_sensor.html',1,'SINRICPRO_2_9_17']]] + ['a_20device_0',['How to add a device?',['../index.html#autotoc_md19',1,'']]], + ['a_20device_20for_20sending_20an_20event_1',['How to retrieve a device for sending an event?',['../index.html#autotoc_md21',1,'']]], + ['a_20push_20notification_2',['How to send a push notification?',['../index.html#autotoc_md22',1,'']]], + ['add_20a_20device_3',['How to add a device?',['../index.html#autotoc_md19',1,'']]], + ['adjustbandscallback_4',['AdjustBandsCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a28446c362f1f44e269b50619761c9e9b',1,'SINRICPRO_3_0_0']]], + ['adjustbrightnesscallback_5',['AdjustBrightnessCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a3ff8d93d9483f41bf8504fd3e9cc8f49',1,'SINRICPRO_3_0_0']]], + ['adjustpercentagecallback_6',['AdjustPercentageCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a088a491b8656c376085bc31d558fd05d',1,'SINRICPRO_3_0_0']]], + ['adjustpowerlevelcallback_7',['AdjustPowerLevelCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a3ec3aad26d06f5b943a6906e11afc1f3',1,'SINRICPRO_3_0_0']]], + ['adjustrangevaluecallback_8',['AdjustRangeValueCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a2ba46d8544d48aee620fff9a930c01ff',1,'SINRICPRO_3_0_0']]], + ['adjusttargettemperaturecallback_9',['AdjustTargetTemperatureCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a8d55dffbb520779ef95fc29e49032886',1,'SINRICPRO_3_0_0']]], + ['adjustvolumecallback_10',['AdjustVolumeCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ac6304129491317f85cee56ca5925dfab',1,'SINRICPRO_3_0_0']]], + ['airqualitysensor_11',['AirQualitySensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.html',1,'SINRICPRO_3_0_0']]], + ['airqualitysensor_3c_20sinricproairqualitysensor_20_3e_12',['AirQualitySensor< SinricProAirQualitySensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.html',1,'SINRICPRO_3_0_0']]], + ['an_20event_13',['How to retrieve a device for sending an event?',['../index.html#autotoc_md21',1,'']]], + ['and_20sinricpro_20device_20libraries_20eg_20sinricproswitch_20h_14',['Include SinricPro-Library (SinricPro.h) and SinricPro-Device-Libraries (eg. SinricProSwitch.h)',['../index.html#autotoc_md13',1,'']]], + ['arduinoide_15',['ArduinoIDE',['../index.html#autotoc_md4',1,'']]] ]; diff --git a/docs/search/all_1.js b/docs/search/all_1.js index f07d733..5d98904 100644 --- a/docs/search/all_1.js +++ b/docs/search/all_1.js @@ -1,7 +1,7 @@ var searchData= [ - ['begin_9',['begin',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#a1b5b66fb0c539b9b5f5f58a135056c75',1,'SINRICPRO_2_9_17::SinricProClass']]], - ['brightnesscallback_10',['BrightnessCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#aff9938ddc803e4339a3db9b31503e12d',1,'SINRICPRO_2_9_17']]], - ['brightnesscontroller_11',['BrightnessController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_brightness_controller.html',1,'SINRICPRO_2_9_17']]], - ['brightnesscontroller_3c_20sinricprolight_20_3e_12',['BrightnessController< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_brightness_controller.html',1,'SINRICPRO_2_9_17']]] + ['begin_0',['begin',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#a1b5b66fb0c539b9b5f5f58a135056c75',1,'SINRICPRO_3_0_0::SinricProClass']]], + ['brightnesscallback_1',['BrightnessCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#aff9938ddc803e4339a3db9b31503e12d',1,'SINRICPRO_3_0_0']]], + ['brightnesscontroller_2',['BrightnessController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html',1,'SINRICPRO_3_0_0']]], + ['brightnesscontroller_3c_20sinricprolight_20_3e_3',['BrightnessController< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/all_10.js b/docs/search/all_10.js index 576917a..fe212cd 100644 --- a/docs/search/all_10.js +++ b/docs/search/all_10.js @@ -1,6 +1,68 @@ var searchData= [ - ['volumecontroller_217',['VolumeController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html',1,'SINRICPRO_2_9_17']]], - ['volumecontroller_3c_20sinricprospeaker_20_3e_218',['VolumeController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html',1,'SINRICPRO_2_9_17']]], - ['volumecontroller_3c_20sinricprotv_20_3e_219',['VolumeController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html',1,'SINRICPRO_2_9_17']]] + ['s_0',['Define callback routine(s)',['../index.html#autotoc_md15',1,'']]], + ['selectinputcallback_1',['SelectInputCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a2f7a91a480cd401f4df2f7ddda4a8f13',1,'SINRICPRO_3_0_0']]], + ['send_20a_20push_20notification_2',['How to send a push notification?',['../index.html#autotoc_md22',1,'']]], + ['sendairqualityevent_3',['sendAirQualityEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.html#a733195bdc5b15c858e4e890847b3a0d5',1,'SINRICPRO_3_0_0::AirQualitySensor']]], + ['sendbandsevent_4',['sendBandsEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html#a4ad5674e36d96a73147388251b794c82',1,'SINRICPRO_3_0_0::EqualizerController']]], + ['sendbrightnessevent_5',['sendBrightnessEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html#a2a96c414210f61de3ce53a4ca8c963b3',1,'SINRICPRO_3_0_0::BrightnessController']]], + ['sendchangechannelevent_6',['sendChangeChannelEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html#aff5839c3020c3006af1a2a8c37cc858e',1,'SINRICPRO_3_0_0::ChannelController']]], + ['sendcolorevent_7',['sendColorEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html#a3599a6d00eb0f9127a7c1188885c5bc0',1,'SINRICPRO_3_0_0::ColorController']]], + ['sendcolortemperatureevent_8',['sendColorTemperatureEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html#a0f90d7f5a5b365116f97beca7630ccc9',1,'SINRICPRO_3_0_0::ColorTemperatureController']]], + ['sendcontactevent_9',['sendContactEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.html#a452a4cfa3177d8d8d31c5919e9ccbb19',1,'SINRICPRO_3_0_0::ContactSensor']]], + ['senddoorbellevent_10',['sendDoorbellEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.html#a168f5a4ddcbf381fd548bf10ee05b272',1,'SINRICPRO_3_0_0::Doorbell']]], + ['senddoorstateevent_11',['sendDoorStateEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.html#a375cda2b0bc05e1a66e3bc29d059d9a7',1,'SINRICPRO_3_0_0::DoorController']]], + ['sending_20an_20event_12',['How to retrieve a device for sending an event?',['../index.html#autotoc_md21',1,'']]], + ['sendlockstateevent_13',['sendLockStateEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html#a8fb3fec204da21e69d05f89a9ecb4739',1,'SINRICPRO_3_0_0::LockController']]], + ['sendmediacontrolevent_14',['sendMediaControlEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html#a7af593cbf79d38f6b90efb5afee45077',1,'SINRICPRO_3_0_0::MediaController']]], + ['sendmodeevent_15',['sendmodeevent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html#a41f8465e89d147c08ab8cbc6839d34da',1,'SINRICPRO_3_0_0::ModeController::sendModeEvent(String mode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)'],['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html#a7c84d5c26f2ded88e4941313015f7f4c',1,'SINRICPRO_3_0_0::ModeController::sendModeEvent(String instance, String mode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)']]], + ['sendmotionevent_16',['sendMotionEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.html#a9be024aa2bb70f0146a02dd1b79d3faa',1,'SINRICPRO_3_0_0::MotionSensor']]], + ['sendmuteevent_17',['sendMuteEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html#a4717d892b64a14052712152924bd5b29',1,'SINRICPRO_3_0_0::MuteController']]], + ['sendpowerlevelevent_18',['sendPowerLevelEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html#a2f1f88c7b4d9503bfcfe5557c5e55ed4',1,'SINRICPRO_3_0_0::PowerLevelController']]], + ['sendpowersensorevent_19',['sendPowerSensorEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.html#aec04692842ae1953973503f6be6d9afc',1,'SINRICPRO_3_0_0::PowerSensor']]], + ['sendpowerstateevent_20',['sendPowerStateEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html#acfd5f3a30933ace93751bd823630cded',1,'SINRICPRO_3_0_0::PowerStateController']]], + ['sendpushnotification_21',['sendPushNotification',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html#a04266791a4b23e9614b8773edb5f67b6',1,'SINRICPRO_3_0_0::PushNotification']]], + ['sendrangevalueevent_22',['sendrangevalueevent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#a1d726751c416fe6dd408e5dd19f6b53b',1,'SINRICPRO_3_0_0::RangeController::sendRangeValueEvent(int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)'],['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#aaf84aa417e2246843a27e819898e64b5',1,'SINRICPRO_3_0_0::RangeController::sendRangeValueEvent(const String &instance, int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)']]], + ['sendselectinputevent_23',['sendSelectInputEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html#a973241ac912a18b142d236dda7f80e97',1,'SINRICPRO_3_0_0::InputController']]], + ['sendsetpercentageevent_24',['sendSetPercentageEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html#adf688c12e451e52b05670f150bdabcc8',1,'SINRICPRO_3_0_0::PercentageController']]], + ['sendtargettemperatureevent_25',['sendTargetTemperatureEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#ab8b7fdd977a0a38413f2279b50274890',1,'SINRICPRO_3_0_0::ThermostatController']]], + ['sendtemperatureevent_26',['sendTemperatureEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html#a75956fe7aff6e595a9b57519316ff789',1,'SINRICPRO_3_0_0::TemperatureSensor']]], + ['sendthermostatmodeevent_27',['sendThermostatModeEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#ae7273cd094f64a93494ae99501fc83e8',1,'SINRICPRO_3_0_0::ThermostatController']]], + ['sendtogglestateevent_28',['sendToggleStateEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.html#a7fcc5084fea488e5b5e95f5ad7015a0f',1,'SINRICPRO_3_0_0::ToggleController']]], + ['sendvolumeevent_29',['sendVolumeEvent',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html#aa2d3dbea5b07e4c5f39d3d20aa2167a4',1,'SINRICPRO_3_0_0::VolumeController']]], + ['setbandscallback_30',['SetBandsCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#aaabec5dea3546d52e744a4b0b90c02f4',1,'SINRICPRO_3_0_0']]], + ['setpercentagecallback_31',['SetPercentageCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a3ab0c4ff332f49884fe6a75cb2a293c2',1,'SINRICPRO_3_0_0']]], + ['setpowerlevelcallback_32',['SetPowerLevelCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a5be6c20c0ba9e9b19bd76d42918451b2',1,'SINRICPRO_3_0_0']]], + ['settargettemperaturecallback_33',['SetTargetTemperatureCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a64ecf52eb927d219b3acabf01ad0d31f',1,'SINRICPRO_3_0_0']]], + ['setup_34',['In setup()',['../index.html#autotoc_md16',1,'']]], + ['setvolumecallback_35',['SetVolumeCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a5744ad6a31085c216c2193b0f2d86673',1,'SINRICPRO_3_0_0']]], + ['sinric_20pro_36',['Define your credentials from SinricPro-Portal (portal.sinric.pro)',['../index.html#autotoc_md14',1,'']]], + ['sinricpro_37',['SinricPro',['../group___sinric_pro.html',1,'']]], + ['sinricpro_20esp8266_20esp32_20rp2040_38',['SinricPro (ESP8266 / ESP32 / RP2040)',['../index.html',1,'']]], + ['sinricpro_20library_20sinricpro_20h_20and_20sinricpro_20device_20libraries_20eg_20sinricproswitch_20h_39',['Include SinricPro-Library (SinricPro.h) and SinricPro-Device-Libraries (eg. SinricProSwitch.h)',['../index.html#autotoc_md13',1,'']]], + ['sinricpro_20portal_20portal_20sinric_20pro_40',['Define your credentials from SinricPro-Portal (portal.sinric.pro)',['../index.html#autotoc_md14',1,'']]], + ['sinricpro_5f3_5f0_5f0_41',['SINRICPRO_3_0_0',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html',1,'']]], + ['sinricproairqualitysensor_42',['SinricProAirQualitySensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.html',1,'SINRICPRO_3_0_0']]], + ['sinricproblinds_43',['SinricProBlinds',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html',1,'SINRICPRO_3_0_0']]], + ['sinricprocamera_44',['SinricProCamera',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html',1,'SINRICPRO_3_0_0']]], + ['sinricproclass_45',['SinricProClass',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html',1,'SINRICPRO_3_0_0']]], + ['sinricprocontactsensor_46',['SinricProContactsensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.html',1,'SINRICPRO_3_0_0']]], + ['sinricprodevice_47',['SinricProDevice',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device.html',1,'SINRICPRO_3_0_0']]], + ['sinricprodimswitch_48',['SinricProDimSwitch',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html',1,'SINRICPRO_3_0_0']]], + ['sinricprodoorbell_49',['SinricProDoorbell',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html',1,'SINRICPRO_3_0_0']]], + ['sinricprofan_50',['SinricProFan',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html',1,'SINRICPRO_3_0_0']]], + ['sinricprofanus_51',['SinricProFanUS',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html',1,'SINRICPRO_3_0_0']]], + ['sinricprogaragedoor_52',['SinricProGarageDoor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html',1,'SINRICPRO_3_0_0']]], + ['sinricprolight_53',['SinricProLight',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html',1,'SINRICPRO_3_0_0']]], + ['sinricprolock_54',['SinricProLock',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html',1,'SINRICPRO_3_0_0']]], + ['sinricpromotionsensor_55',['SinricProMotionsensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.html',1,'SINRICPRO_3_0_0']]], + ['sinricpropowersensor_56',['SinricProPowerSensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.html',1,'SINRICPRO_3_0_0']]], + ['sinricprospeaker_57',['SinricProSpeaker',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html',1,'SINRICPRO_3_0_0']]], + ['sinricproswitch_58',['SinricProSwitch',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html',1,'SINRICPRO_3_0_0']]], + ['sinricproswitch_20h_59',['Include SinricPro-Library (SinricPro.h) and SinricPro-Device-Libraries (eg. SinricProSwitch.h)',['../index.html#autotoc_md13',1,'']]], + ['sinricprotemperaturesensor_60',['SinricProTemperaturesensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.html',1,'SINRICPRO_3_0_0']]], + ['sinricprothermostat_61',['SinricProThermostat',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html',1,'SINRICPRO_3_0_0']]], + ['sinricprotv_62',['SinricProTV',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html',1,'SINRICPRO_3_0_0']]], + ['sinricprowindowac_63',['SinricProWindowAC',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html',1,'SINRICPRO_3_0_0']]], + ['skipchannelscallback_64',['SkipChannelsCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a434616b976d1339be63540d16977fa3d',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/all_11.js b/docs/search/all_11.js new file mode 100644 index 0000000..3b5e2da --- /dev/null +++ b/docs/search/all_11.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['temperaturesensor_0',['TemperatureSensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html',1,'SINRICPRO_3_0_0']]], + ['temperaturesensor_3c_20sinricprotemperaturesensor_20_3e_1',['TemperatureSensor< SinricProTemperaturesensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html',1,'SINRICPRO_3_0_0']]], + ['temperaturesensor_3c_20sinricprothermostat_20_3e_2',['TemperatureSensor< SinricProThermostat >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html',1,'SINRICPRO_3_0_0']]], + ['thermostatcontroller_3',['ThermostatController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html',1,'SINRICPRO_3_0_0']]], + ['thermostatcontroller_3c_20sinricprothermostat_20_3e_4',['ThermostatController< SinricProThermostat >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html',1,'SINRICPRO_3_0_0']]], + ['thermostatcontroller_3c_20sinricprowindowac_20_3e_5',['ThermostatController< SinricProWindowAC >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html',1,'SINRICPRO_3_0_0']]], + ['thermostatmodecallback_6',['ThermostatModeCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a6cb473352a45a2ae76a46a4292c95a8c',1,'SINRICPRO_3_0_0']]], + ['to_20add_20a_20device_7',['How to add a device?',['../index.html#autotoc_md19',1,'']]], + ['to_20retrieve_20a_20device_20for_20sending_20an_20event_8',['How to retrieve a device for sending an event?',['../index.html#autotoc_md21',1,'']]], + ['to_20send_20a_20push_20notification_9',['How to send a push notification?',['../index.html#autotoc_md22',1,'']]], + ['togglecontroller_10',['ToggleController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.html',1,'SINRICPRO_3_0_0']]] +]; diff --git a/docs/search/all_12.js b/docs/search/all_12.js new file mode 100644 index 0000000..2bc5c6b --- /dev/null +++ b/docs/search/all_12.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['usage_0',['Usage',['../index.html#autotoc_md12',1,'']]], + ['user_20documentation_1',['Full user documentation',['../index.html#autotoc_md8',1,'']]] +]; diff --git a/docs/search/all_13.js b/docs/search/all_13.js new file mode 100644 index 0000000..92b0d16 --- /dev/null +++ b/docs/search/all_13.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['volumecontroller_0',['VolumeController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html',1,'SINRICPRO_3_0_0']]], + ['volumecontroller_3c_20sinricprospeaker_20_3e_1',['VolumeController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html',1,'SINRICPRO_3_0_0']]], + ['volumecontroller_3c_20sinricprotv_20_3e_2',['VolumeController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html',1,'SINRICPRO_3_0_0']]], + ['vs_20code_20platformio_3a_3',['VS Code & PlatformIO:',['../index.html#autotoc_md3',1,'']]] +]; diff --git a/docs/search/all_14.js b/docs/search/all_14.js new file mode 100644 index 0000000..55966e6 --- /dev/null +++ b/docs/search/all_14.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['your_20credentials_20from_20sinricpro_20portal_20portal_20sinric_20pro_0',['Define your credentials from SinricPro-Portal (portal.sinric.pro)',['../index.html#autotoc_md14',1,'']]] +]; diff --git a/docs/search/all_2.js b/docs/search/all_2.js index c7bb170..858aa73 100644 --- a/docs/search/all_2.js +++ b/docs/search/all_2.js @@ -1,17 +1,22 @@ var searchData= [ - ['capabilities_13',['Capabilities',['../group___capabilities.html',1,'']]], - ['changechannelcallback_14',['ChangeChannelCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a8bc108630d532266ae36cda5ec7b4857',1,'SINRICPRO_2_9_17']]], - ['changechannelnumbercallback_15',['ChangeChannelNumberCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#ab21b05b6f4a6be7e89a7173b7fafb552',1,'SINRICPRO_2_9_17']]], - ['channelcontroller_16',['ChannelController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html',1,'SINRICPRO_2_9_17']]], - ['channelcontroller_3c_20sinricprotv_20_3e_17',['ChannelController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html',1,'SINRICPRO_2_9_17']]], - ['colorcallback_18',['ColorCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#ad8bcf09f6da3f41fffb001868cd3f84e',1,'SINRICPRO_2_9_17']]], - ['colorcontroller_19',['ColorController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_controller.html',1,'SINRICPRO_2_9_17']]], - ['colorcontroller_3c_20sinricprolight_20_3e_20',['ColorController< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_controller.html',1,'SINRICPRO_2_9_17']]], - ['colortemperaturecallback_21',['ColorTemperatureCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a9828094e72d45dc55a1023fd677f0cc5',1,'SINRICPRO_2_9_17']]], - ['colortemperaturecontroller_22',['ColorTemperatureController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html',1,'SINRICPRO_2_9_17']]], - ['colortemperaturecontroller_3c_20sinricprolight_20_3e_23',['ColorTemperatureController< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html',1,'SINRICPRO_2_9_17']]], - ['connectedcallbackhandler_24',['ConnectedCallbackHandler',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#af256b98e6806c944c9c386821a45d01e',1,'SINRICPRO_2_9_17']]], - ['contactsensor_25',['ContactSensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_contact_sensor.html',1,'SINRICPRO_2_9_17']]], - ['contactsensor_3c_20sinricprocontactsensor_20_3e_26',['ContactSensor< SinricProContactsensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_contact_sensor.html',1,'SINRICPRO_2_9_17']]] + ['callback_20routine_20s_0',['Define callback routine(s)',['../index.html#autotoc_md15',1,'']]], + ['capabilities_1',['Capabilities',['../group___capabilities.html',1,'']]], + ['changechannelcallback_2',['ChangeChannelCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a8bc108630d532266ae36cda5ec7b4857',1,'SINRICPRO_3_0_0']]], + ['changechannelnumbercallback_3',['ChangeChannelNumberCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ab21b05b6f4a6be7e89a7173b7fafb552',1,'SINRICPRO_3_0_0']]], + ['channelcontroller_4',['ChannelController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html',1,'SINRICPRO_3_0_0']]], + ['channelcontroller_3c_20sinricprotv_20_3e_5',['ChannelController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html',1,'SINRICPRO_3_0_0']]], + ['code_6',['code',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#operator',1,'[] Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#PowerStateCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#SetRangeValueCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#GenericSetRangeValueCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#AdjustRangeValueCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#GenericAdjustRangeValueCallback',1,'Example-Code'],['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#handle',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ThermostatModeCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#TargetTemperatureCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#AdjustTargetTemperatureCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ToggleStateCallback',1,'Example-Code'],['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#onConnected',1,'Example-Code'],['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#onDisconnected',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#SetVolumeCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#AdjustVolumeCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ColorTemperatureCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#BrightnessCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#AdjustBrightnessCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ChangeChannel',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ChangeChannelNumber',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#SkipChannels',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ColorCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#SelectInput',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#IncreaseColorTemperatureCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#DecreaseColorTemperatureCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#DoorStateCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#SetBandsCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#AdjustBandsCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ResetBandsCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#KeystrokeCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#LockStateCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#MediaControlCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ModeCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#GenericModeCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#MuteCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#SetPercentageCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#AdjustPercentageCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#SetPowerLevelCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#AdjustPowerLevelCallback',1,'Example-Code']]], + ['code_20platformio_3a_7',['VS Code & PlatformIO:',['../index.html#autotoc_md3',1,'']]], + ['colorcallback_8',['ColorCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ad8bcf09f6da3f41fffb001868cd3f84e',1,'SINRICPRO_3_0_0']]], + ['colorcontroller_9',['ColorController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html',1,'SINRICPRO_3_0_0']]], + ['colorcontroller_3c_20sinricprolight_20_3e_10',['ColorController< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html',1,'SINRICPRO_3_0_0']]], + ['colortemperaturecallback_11',['ColorTemperatureCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a9828094e72d45dc55a1023fd677f0cc5',1,'SINRICPRO_3_0_0']]], + ['colortemperaturecontroller_12',['ColorTemperatureController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html',1,'SINRICPRO_3_0_0']]], + ['colortemperaturecontroller_3c_20sinricprolight_20_3e_13',['ColorTemperatureController< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html',1,'SINRICPRO_3_0_0']]], + ['connectedcallbackhandler_14',['ConnectedCallbackHandler',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#af256b98e6806c944c9c386821a45d01e',1,'SINRICPRO_3_0_0']]], + ['contactsensor_15',['ContactSensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.html',1,'SINRICPRO_3_0_0']]], + ['contactsensor_3c_20sinricprocontactsensor_20_3e_16',['ContactSensor< SinricProContactsensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.html',1,'SINRICPRO_3_0_0']]], + ['credentials_20from_20sinricpro_20portal_20portal_20sinric_20pro_17',['Define your credentials from SinricPro-Portal (portal.sinric.pro)',['../index.html#autotoc_md14',1,'']]], + ['custom_20devices_18',['* Custom devices',['../index.html#autotoc_md25',1,'']]] ]; diff --git a/docs/search/all_3.js b/docs/search/all_3.js index 9dade9b..30e5d1a 100644 --- a/docs/search/all_3.js +++ b/docs/search/all_3.js @@ -1,11 +1,18 @@ var searchData= [ - ['decreasecolortemperaturecallback_27',['DecreaseColorTemperatureCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#ae64ac4d2aa913eeb244091c7a13d2ecc',1,'SINRICPRO_2_9_17']]], - ['devices_28',['Devices',['../group___devices.html',1,'']]], - ['disconnectedcallbackhandler_29',['DisconnectedCallbackHandler',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a6cc95068e9f18665e76c37a621ca2ceb',1,'SINRICPRO_2_9_17']]], - ['doorbell_30',['Doorbell',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_doorbell.html',1,'SINRICPRO_2_9_17']]], - ['doorbell_3c_20sinricprodoorbell_20_3e_31',['Doorbell< SinricProDoorbell >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_doorbell.html',1,'SINRICPRO_2_9_17']]], - ['doorcallback_32',['DoorCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#aaa6633dc67bd8f69e2f14cc0dc0a4466',1,'SINRICPRO_2_9_17']]], - ['doorcontroller_33',['DoorController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_door_controller.html',1,'SINRICPRO_2_9_17']]], - ['doorcontroller_3c_20sinricprogaragedoor_20_3e_34',['DoorController< SinricProGarageDoor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_door_controller.html',1,'SINRICPRO_2_9_17']]] + ['decreasecolortemperaturecallback_0',['DecreaseColorTemperatureCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ae64ac4d2aa913eeb244091c7a13d2ecc',1,'SINRICPRO_3_0_0']]], + ['define_20callback_20routine_20s_1',['Define callback routine(s)',['../index.html#autotoc_md15',1,'']]], + ['define_20your_20credentials_20from_20sinricpro_20portal_20portal_20sinric_20pro_2',['Define your credentials from SinricPro-Portal (portal.sinric.pro)',['../index.html#autotoc_md14',1,'']]], + ['dependencies_3',['Dependencies',['../index.html#autotoc_md6',1,'']]], + ['device_4',['How to add a device?',['../index.html#autotoc_md19',1,'']]], + ['device_20for_20sending_20an_20event_5',['How to retrieve a device for sending an event?',['../index.html#autotoc_md21',1,'']]], + ['device_20libraries_20eg_20sinricproswitch_20h_6',['Include SinricPro-Library (SinricPro.h) and SinricPro-Device-Libraries (eg. SinricProSwitch.h)',['../index.html#autotoc_md13',1,'']]], + ['devices_7',['devices',['../index.html#autotoc_md25',1,'* Custom devices'],['../group___devices.html',1,'Devices'],['../index.html#autotoc_md24',1,'Devices']]], + ['disconnectedcallbackhandler_8',['DisconnectedCallbackHandler',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a6cc95068e9f18665e76c37a621ca2ceb',1,'SINRICPRO_3_0_0']]], + ['documentation_9',['Full user documentation',['../index.html#autotoc_md8',1,'']]], + ['doorbell_10',['Doorbell',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.html',1,'SINRICPRO_3_0_0']]], + ['doorbell_3c_20sinricprodoorbell_20_3e_11',['Doorbell< SinricProDoorbell >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.html',1,'SINRICPRO_3_0_0']]], + ['doorcallback_12',['DoorCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#aaa6633dc67bd8f69e2f14cc0dc0a4466',1,'SINRICPRO_3_0_0']]], + ['doorcontroller_13',['DoorController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.html',1,'SINRICPRO_3_0_0']]], + ['doorcontroller_3c_20sinricprogaragedoor_20_3e_14',['DoorController< SinricProGarageDoor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.html',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/all_4.js b/docs/search/all_4.js index 7e2f788..d1909a4 100644 --- a/docs/search/all_4.js +++ b/docs/search/all_4.js @@ -1,5 +1,11 @@ var searchData= [ - ['equalizercontroller_35',['EqualizerController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html',1,'SINRICPRO_2_9_17']]], - ['equalizercontroller_3c_20sinricprospeaker_20_3e_36',['EqualizerController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html',1,'SINRICPRO_2_9_17']]] + ['eg_20sinricproswitch_20h_0',['Include SinricPro-Library (SinricPro.h) and SinricPro-Device-Libraries (eg. SinricProSwitch.h)',['../index.html#autotoc_md13',1,'']]], + ['equalizercontroller_1',['EqualizerController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html',1,'SINRICPRO_3_0_0']]], + ['equalizercontroller_3c_20sinricprospeaker_20_3e_2',['EqualizerController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html',1,'SINRICPRO_3_0_0']]], + ['esp32_20rp2040_3',['SinricPro (ESP8266 / ESP32 / RP2040)',['../index.html',1,'']]], + ['esp8266_20esp32_20rp2040_4',['SinricPro (ESP8266 / ESP32 / RP2040)',['../index.html',1,'']]], + ['event_5',['How to retrieve a device for sending an event?',['../index.html#autotoc_md21',1,'']]], + ['example_20code_6',['example code',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#operator',1,'[] Example-Code'],['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#handle',1,'Example-Code'],['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#onDisconnected',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#AdjustVolumeCallback',1,'Example-Code'],['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#onConnected',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#BrightnessCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#AdjustBrightnessCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ChangeChannel',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ChangeChannelNumber',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#SkipChannels',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ColorCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ColorTemperatureCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#IncreaseColorTemperatureCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#DecreaseColorTemperatureCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#DoorStateCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#SetBandsCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#AdjustBandsCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ResetBandsCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#SelectInput',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#KeystrokeCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#LockStateCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#MediaControlCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ModeCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#GenericModeCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#MuteCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#SetPercentageCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#AdjustPercentageCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#SetPowerLevelCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#AdjustPowerLevelCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#PowerStateCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#SetRangeValueCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#GenericSetRangeValueCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#AdjustRangeValueCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#GenericAdjustRangeValueCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ThermostatModeCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#TargetTemperatureCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#AdjustTargetTemperatureCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ToggleStateCallback',1,'Example-Code'],['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#SetVolumeCallback',1,'Example-Code']]], + ['examples_7',['Examples',['../index.html#autotoc_md10',1,'']]] ]; diff --git a/docs/search/all_5.js b/docs/search/all_5.js index dd05930..39403e8 100644 --- a/docs/search/all_5.js +++ b/docs/search/all_5.js @@ -1,9 +1,6 @@ var searchData= [ - ['genericadjustrangevaluecallback_5fint_37',['GenericAdjustRangeValueCallback_int',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a38dc8a8eb0e769ed32348b7166e39ad3',1,'SINRICPRO_2_9_17']]], - ['genericmodecallback_38',['GenericModeCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#ac29fade927b50eac618999f84b29d02b',1,'SINRICPRO_2_9_17']]], - ['genericrangevaluecallback_5fint_39',['GenericRangeValueCallback_int',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a0acdc221a5d0592fea85aa0c7f236cf0',1,'SINRICPRO_2_9_17']]], - ['genericsetrangevaluecallback_5fint_40',['GenericSetRangeValueCallback_int',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a29997b424c4b141240a08d26406e4a14',1,'SINRICPRO_2_9_17']]], - ['generictogglestatecallback_41',['GenericToggleStateCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a87371479ad42795e9dc9344bd02a6312',1,'SINRICPRO_2_9_17']]], - ['gettimestamp_42',['getTimestamp',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#afb2be26eef972203404140612fa31326',1,'SINRICPRO_2_9_17::SinricProClass']]] + ['for_20sending_20an_20event_0',['How to retrieve a device for sending an event?',['../index.html#autotoc_md21',1,'']]], + ['from_20sinricpro_20portal_20portal_20sinric_20pro_1',['Define your credentials from SinricPro-Portal (portal.sinric.pro)',['../index.html#autotoc_md14',1,'']]], + ['full_20user_20documentation_2',['Full user documentation',['../index.html#autotoc_md8',1,'']]] ]; diff --git a/docs/search/all_6.js b/docs/search/all_6.js index 8732581..4a152e7 100644 --- a/docs/search/all_6.js +++ b/docs/search/all_6.js @@ -1,4 +1,9 @@ var searchData= [ - ['handle_43',['handle',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#a37c2d0658e498b1bf878f8a3d9a7c5b4',1,'SINRICPRO_2_9_17::SinricProClass']]] + ['genericadjustrangevaluecallback_5fint_0',['GenericAdjustRangeValueCallback_int',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a38dc8a8eb0e769ed32348b7166e39ad3',1,'SINRICPRO_3_0_0']]], + ['genericmodecallback_1',['GenericModeCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#ac29fade927b50eac618999f84b29d02b',1,'SINRICPRO_3_0_0']]], + ['genericrangevaluecallback_5fint_2',['GenericRangeValueCallback_int',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a0acdc221a5d0592fea85aa0c7f236cf0',1,'SINRICPRO_3_0_0']]], + ['genericsetrangevaluecallback_5fint_3',['GenericSetRangeValueCallback_int',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a29997b424c4b141240a08d26406e4a14',1,'SINRICPRO_3_0_0']]], + ['generictogglestatecallback_4',['GenericToggleStateCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a87371479ad42795e9dc9344bd02a6312',1,'SINRICPRO_3_0_0']]], + ['gettimestamp_5',['getTimestamp',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#afb2be26eef972203404140612fa31326',1,'SINRICPRO_3_0_0::SinricProClass']]] ]; diff --git a/docs/search/all_7.js b/docs/search/all_7.js index 7863ae7..c522a91 100644 --- a/docs/search/all_7.js +++ b/docs/search/all_7.js @@ -1,7 +1,8 @@ var searchData= [ - ['increasecolortemperaturecallback_44',['IncreaseColorTemperatureCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#aed3d41935f8162074c2a2cc0168164dd',1,'SINRICPRO_2_9_17']]], - ['inputcontroller_45',['InputController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_input_controller.html',1,'SINRICPRO_2_9_17']]], - ['inputcontroller_3c_20sinricprospeaker_20_3e_46',['InputController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_input_controller.html',1,'SINRICPRO_2_9_17']]], - ['inputcontroller_3c_20sinricprotv_20_3e_47',['InputController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_input_controller.html',1,'SINRICPRO_2_9_17']]] + ['h_20and_20sinricpro_20device_20libraries_20eg_20sinricproswitch_20h_0',['Include SinricPro-Library (SinricPro.h) and SinricPro-Device-Libraries (eg. SinricProSwitch.h)',['../index.html#autotoc_md13',1,'']]], + ['handle_1',['handle',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#a37c2d0658e498b1bf878f8a3d9a7c5b4',1,'SINRICPRO_3_0_0::SinricProClass']]], + ['how_20to_20add_20a_20device_2',['How to add a device?',['../index.html#autotoc_md19',1,'']]], + ['how_20to_20retrieve_20a_20device_20for_20sending_20an_20event_3',['How to retrieve a device for sending an event?',['../index.html#autotoc_md21',1,'']]], + ['how_20to_20send_20a_20push_20notification_4',['How to send a push notification?',['../index.html#autotoc_md22',1,'']]] ]; diff --git a/docs/search/all_8.js b/docs/search/all_8.js index beaca4a..7ef7ec3 100644 --- a/docs/search/all_8.js +++ b/docs/search/all_8.js @@ -1,5 +1,11 @@ var searchData= [ - ['keypadcontroller_48',['KeypadController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_keypad_controller.html',1,'SINRICPRO_2_9_17']]], - ['keystrokecallback_49',['KeystrokeCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a3dd7e26af9b9026ccc6f5328f563a8c3',1,'SINRICPRO_2_9_17']]] + ['in_20loop_0',['In loop()',['../index.html#autotoc_md17',1,'']]], + ['in_20setup_1',['In setup()',['../index.html#autotoc_md16',1,'']]], + ['include_20sinricpro_20library_20sinricpro_20h_20and_20sinricpro_20device_20libraries_20eg_20sinricproswitch_20h_2',['Include SinricPro-Library (SinricPro.h) and SinricPro-Device-Libraries (eg. SinricProSwitch.h)',['../index.html#autotoc_md13',1,'']]], + ['increasecolortemperaturecallback_3',['IncreaseColorTemperatureCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#aed3d41935f8162074c2a2cc0168164dd',1,'SINRICPRO_3_0_0']]], + ['inputcontroller_4',['InputController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html',1,'SINRICPRO_3_0_0']]], + ['inputcontroller_3c_20sinricprospeaker_20_3e_5',['InputController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html',1,'SINRICPRO_3_0_0']]], + ['inputcontroller_3c_20sinricprotv_20_3e_6',['InputController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html',1,'SINRICPRO_3_0_0']]], + ['installation_7',['Installation',['../index.html#autotoc_md2',1,'']]] ]; diff --git a/docs/search/all_9.js b/docs/search/all_9.js index 7a2cf2a..f6a845e 100644 --- a/docs/search/all_9.js +++ b/docs/search/all_9.js @@ -1,6 +1,5 @@ var searchData= [ - ['lockcontroller_50',['LockController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_lock_controller.html',1,'SINRICPRO_2_9_17']]], - ['lockcontroller_3c_20sinricprolock_20_3e_51',['LockController< SinricProLock >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_lock_controller.html',1,'SINRICPRO_2_9_17']]], - ['lockstatecallback_52',['LockStateCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a53b5285d1315f98fa2c5dd27c7547ea5',1,'SINRICPRO_2_9_17']]] + ['keypadcontroller_0',['KeypadController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller.html',1,'SINRICPRO_3_0_0']]], + ['keystrokecallback_1',['KeystrokeCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a3dd7e26af9b9026ccc6f5328f563a8c3',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/all_a.js b/docs/search/all_a.js index 44917ee..2d6864c 100644 --- a/docs/search/all_a.js +++ b/docs/search/all_a.js @@ -1,16 +1,9 @@ var searchData= [ - ['mediacontrolcallback_53',['MediaControlCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a9e92d9efafd5313ef1b056030655c526',1,'SINRICPRO_2_9_17']]], - ['mediacontroller_54',['MediaController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_media_controller.html',1,'SINRICPRO_2_9_17']]], - ['mediacontroller_3c_20sinricprospeaker_20_3e_55',['MediaController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_media_controller.html',1,'SINRICPRO_2_9_17']]], - ['mediacontroller_3c_20sinricprotv_20_3e_56',['MediaController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_media_controller.html',1,'SINRICPRO_2_9_17']]], - ['modecallback_57',['ModeCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#aa2d0fe1a7983a8ec5e8fb3e69a5af60f',1,'SINRICPRO_2_9_17']]], - ['modecontroller_58',['ModeController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html',1,'SINRICPRO_2_9_17']]], - ['modecontroller_3c_20sinricprospeaker_20_3e_59',['ModeController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html',1,'SINRICPRO_2_9_17']]], - ['motionsensor_60',['MotionSensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_motion_sensor.html',1,'SINRICPRO_2_9_17']]], - ['motionsensor_3c_20sinricpromotionsensor_20_3e_61',['MotionSensor< SinricProMotionsensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_motion_sensor.html',1,'SINRICPRO_2_9_17']]], - ['mutecallback_62',['MuteCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a0e4c9c4ee0b526732bc0a868ac4f2c41',1,'SINRICPRO_2_9_17']]], - ['mutecontroller_63',['MuteController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mute_controller.html',1,'SINRICPRO_2_9_17']]], - ['mutecontroller_3c_20sinricprospeaker_20_3e_64',['MuteController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mute_controller.html',1,'SINRICPRO_2_9_17']]], - ['mutecontroller_3c_20sinricprotv_20_3e_65',['MuteController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mute_controller.html',1,'SINRICPRO_2_9_17']]] + ['libraries_20eg_20sinricproswitch_20h_0',['Include SinricPro-Library (SinricPro.h) and SinricPro-Device-Libraries (eg. SinricProSwitch.h)',['../index.html#autotoc_md13',1,'']]], + ['library_20sinricpro_20h_20and_20sinricpro_20device_20libraries_20eg_20sinricproswitch_20h_1',['Include SinricPro-Library (SinricPro.h) and SinricPro-Device-Libraries (eg. SinricProSwitch.h)',['../index.html#autotoc_md13',1,'']]], + ['lockcontroller_2',['LockController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html',1,'SINRICPRO_3_0_0']]], + ['lockcontroller_3c_20sinricprolock_20_3e_3',['LockController< SinricProLock >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html',1,'SINRICPRO_3_0_0']]], + ['lockstatecallback_4',['LockStateCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a53b5285d1315f98fa2c5dd27c7547ea5',1,'SINRICPRO_3_0_0']]], + ['loop_5',['In loop()',['../index.html#autotoc_md17',1,'']]] ]; diff --git a/docs/search/all_b.js b/docs/search/all_b.js index b2cb85e..46f6c3d 100644 --- a/docs/search/all_b.js +++ b/docs/search/all_b.js @@ -1,38 +1,16 @@ var searchData= [ - ['onadjustbands_66',['onAdjustBands',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html#a41a5c1506545c44c2408054a8675c7a8',1,'SINRICPRO_2_9_17::EqualizerController']]], - ['onadjustbrightness_67',['onAdjustBrightness',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_brightness_controller.html#a0633e5fa2981189f4a093bab00a8c7f1',1,'SINRICPRO_2_9_17::BrightnessController']]], - ['onadjustpercentage_68',['onAdjustPercentage',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_percentage_controller.html#a77ac70c4880e38dae4f640dceaeb2816',1,'SINRICPRO_2_9_17::PercentageController']]], - ['onadjustpowerlevel_69',['onAdjustPowerLevel',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html#a13b10bdb1844babe4de320fff9172d96',1,'SINRICPRO_2_9_17::PowerLevelController']]], - ['onadjustrangevalue_70',['onAdjustRangeValue',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html#ae85696d55112ae7343f9807faee6e064',1,'SINRICPRO_2_9_17::RangeController']]], - ['onadjusttargettemperature_71',['onAdjustTargetTemperature',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html#ac51f6fecfdf4c7bc8e0712e2da47bbf4',1,'SINRICPRO_2_9_17::ThermostatController']]], - ['onadjustvolume_72',['onAdjustVolume',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html#a2c868c87f96e3924c8b309e1bcfb507e',1,'SINRICPRO_2_9_17::VolumeController']]], - ['onbrightness_73',['onBrightness',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_brightness_controller.html#abbaab3067b1fcdcc5928451b818a4420',1,'SINRICPRO_2_9_17::BrightnessController']]], - ['onchangechannel_74',['onChangeChannel',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html#a92f3b83744b5bb82d32628eef39c1eb9',1,'SINRICPRO_2_9_17::ChannelController']]], - ['onchangechannelnumber_75',['onChangeChannelNumber',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html#afd8aee20590bfadec181c6ee515125ec',1,'SINRICPRO_2_9_17::ChannelController']]], - ['oncolor_76',['onColor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_controller.html#a059ff103149869b7c49cdb8911875b7b',1,'SINRICPRO_2_9_17::ColorController']]], - ['oncolortemperature_77',['onColorTemperature',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html#a8535c44fd2517ed09ebe6a203cc25b67',1,'SINRICPRO_2_9_17::ColorTemperatureController']]], - ['onconnected_78',['onConnected',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#ac33a355adfc413d4ff36974d735115bd',1,'SINRICPRO_2_9_17::SinricProClass']]], - ['ondecreasecolortemperature_79',['onDecreaseColorTemperature',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html#a7468976e7fffeee14cc869b7236cbb50',1,'SINRICPRO_2_9_17::ColorTemperatureController']]], - ['ondisconnected_80',['onDisconnected',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#a654bb017ca55b448d55bb36e0346f38a',1,'SINRICPRO_2_9_17::SinricProClass']]], - ['ondoorstate_81',['onDoorState',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_door_controller.html#a6b536531ab89b39f1a48cb107e22185e',1,'SINRICPRO_2_9_17::DoorController']]], - ['onincreasecolortemperature_82',['onIncreaseColorTemperature',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html#a7ea9fd9861a5668a41d06267bfbec82a',1,'SINRICPRO_2_9_17::ColorTemperatureController']]], - ['onkeystroke_83',['onKeystroke',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_keypad_controller.html#ab24b4858dcc69145a367e964c2ae7961',1,'SINRICPRO_2_9_17::KeypadController']]], - ['onlockstate_84',['onLockState',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_lock_controller.html#aee42cc397234a454fd353ca6bc12a859',1,'SINRICPRO_2_9_17::LockController']]], - ['onmediacontrol_85',['onMediaControl',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_media_controller.html#afc2620621377fff928737b5a8a537020',1,'SINRICPRO_2_9_17::MediaController']]], - ['onmute_86',['onMute',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mute_controller.html#ab5fc79cc8903c3ccc1c106abf61d7cfd',1,'SINRICPRO_2_9_17::MuteController']]], - ['onpowerlevel_87',['onPowerLevel',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html#a0685d34694badb4442fed6b69b69b366',1,'SINRICPRO_2_9_17::PowerLevelController']]], - ['onpowerstate_88',['onPowerState',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html#a32f3257da431a1035f23a265ff0cc4cf',1,'SINRICPRO_2_9_17::PowerStateController']]], - ['onrangevalue_89',['onRangeValue',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html#a94adbcdf6ce61cb6552a5f9915e705ae',1,'SINRICPRO_2_9_17::RangeController::onRangeValue(SetRangeValueCallback cb)'],['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html#a6d6d8070b49c8b5272460836a1120b33',1,'SINRICPRO_2_9_17::RangeController::onRangeValue(const String &instance, GenericSetRangeValueCallback_int cb)']]], - ['onresetbands_90',['onResetBands',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html#aa6c3aabc2b442d82ac5456ccaac3f60d',1,'SINRICPRO_2_9_17::EqualizerController']]], - ['onselectinput_91',['onSelectInput',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_input_controller.html#a18f8f71ecf0d7292a63d9486f94e5180',1,'SINRICPRO_2_9_17::InputController']]], - ['onsetbands_92',['onSetBands',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html#a4aaa7a29394560be7537a86b0304d199',1,'SINRICPRO_2_9_17::EqualizerController']]], - ['onsetmode_93',['onSetMode',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html#ada087c948c3ab923bdb7818daa6b2b79',1,'SINRICPRO_2_9_17::ModeController::onSetMode(ModeCallback cb)'],['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html#a6b15ba168b3a673b98da43ac5e4ef76c',1,'SINRICPRO_2_9_17::ModeController::onSetMode(const String &instance, GenericModeCallback cb)']]], - ['onsetpercentage_94',['onSetPercentage',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_percentage_controller.html#aeef432df118679c689ccd8a48d47dc3d',1,'SINRICPRO_2_9_17::PercentageController']]], - ['onsetvolume_95',['onSetVolume',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html#a5db8c85f222debbece54c794015f9402',1,'SINRICPRO_2_9_17::VolumeController']]], - ['onskipchannels_96',['onSkipChannels',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html#ab1123d03d471fad4896eb2960ed41855',1,'SINRICPRO_2_9_17::ChannelController']]], - ['ontargettemperature_97',['onTargetTemperature',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html#a1c73725f1f3fbb1c5b72208aae5c2bf2',1,'SINRICPRO_2_9_17::ThermostatController']]], - ['onthermostatmode_98',['onThermostatMode',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html#a2ef31536973b20815dd6c80a28e19c9f',1,'SINRICPRO_2_9_17::ThermostatController']]], - ['ontogglestate_99',['onToggleState',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_toggle_controller.html#a7ccd28a4f20922847d0461649af5572d',1,'SINRICPRO_2_9_17::ToggleController']]], - ['operator_5b_5d_100',['operator[]',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#a84a491d393b5c7c1433a2a9e62a58766',1,'SINRICPRO_2_9_17::SinricProClass']]] + ['mediacontrolcallback_0',['MediaControlCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a9e92d9efafd5313ef1b056030655c526',1,'SINRICPRO_3_0_0']]], + ['mediacontroller_1',['MediaController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html',1,'SINRICPRO_3_0_0']]], + ['mediacontroller_3c_20sinricprospeaker_20_3e_2',['MediaController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html',1,'SINRICPRO_3_0_0']]], + ['mediacontroller_3c_20sinricprotv_20_3e_3',['MediaController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html',1,'SINRICPRO_3_0_0']]], + ['modecallback_4',['ModeCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#aa2d0fe1a7983a8ec5e8fb3e69a5af60f',1,'SINRICPRO_3_0_0']]], + ['modecontroller_5',['ModeController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html',1,'SINRICPRO_3_0_0']]], + ['modecontroller_3c_20sinricprospeaker_20_3e_6',['ModeController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html',1,'SINRICPRO_3_0_0']]], + ['motionsensor_7',['MotionSensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.html',1,'SINRICPRO_3_0_0']]], + ['motionsensor_3c_20sinricpromotionsensor_20_3e_8',['MotionSensor< SinricProMotionsensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.html',1,'SINRICPRO_3_0_0']]], + ['mutecallback_9',['MuteCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#a0e4c9c4ee0b526732bc0a868ac4f2c41',1,'SINRICPRO_3_0_0']]], + ['mutecontroller_10',['MuteController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html',1,'SINRICPRO_3_0_0']]], + ['mutecontroller_3c_20sinricprospeaker_20_3e_11',['MuteController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html',1,'SINRICPRO_3_0_0']]], + ['mutecontroller_3c_20sinricprotv_20_3e_12',['MuteController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/all_c.js b/docs/search/all_c.js index 92d658e..0132777 100644 --- a/docs/search/all_c.js +++ b/docs/search/all_c.js @@ -1,48 +1,5 @@ var searchData= [ - ['percentagecontroller_101',['PercentageController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_percentage_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerlevelcontroller_102',['PowerLevelController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerlevelcontroller_3c_20sinricprodimswitch_20_3e_103',['PowerLevelController< SinricProDimSwitch >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerlevelcontroller_3c_20sinricprofan_20_3e_104',['PowerLevelController< SinricProFan >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html',1,'SINRICPRO_2_9_17']]], - ['powersensor_105',['PowerSensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_sensor.html',1,'SINRICPRO_2_9_17']]], - ['powersensor_3c_20sinricpropowersensor_20_3e_106',['PowerSensor< SinricProPowerSensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_sensor.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecallback_107',['PowerStateCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#aad370bc6b280bbdeac98181a31f22df4',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_108',['PowerStateController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricproairqualitysensor_20_3e_109',['PowerStateController< SinricProAirQualitySensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricproblinds_20_3e_110',['PowerStateController< SinricProBlinds >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprocamera_20_3e_111',['PowerStateController< SinricProCamera >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprocontactsensor_20_3e_112',['PowerStateController< SinricProContactsensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprodimswitch_20_3e_113',['PowerStateController< SinricProDimSwitch >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprodoorbell_20_3e_114',['PowerStateController< SinricProDoorbell >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprofan_20_3e_115',['PowerStateController< SinricProFan >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprofanus_20_3e_116',['PowerStateController< SinricProFanUS >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprolight_20_3e_117',['PowerStateController< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricpromotionsensor_20_3e_118',['PowerStateController< SinricProMotionsensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricpropowersensor_20_3e_119',['PowerStateController< SinricProPowerSensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprospeaker_20_3e_120',['PowerStateController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricproswitch_20_3e_121',['PowerStateController< SinricProSwitch >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprotemperaturesensor_20_3e_122',['PowerStateController< SinricProTemperaturesensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprothermostat_20_3e_123',['PowerStateController< SinricProThermostat >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprotv_20_3e_124',['PowerStateController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprowindowac_20_3e_125',['PowerStateController< SinricProWindowAC >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_126',['PushNotification',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricproairqualitysensor_20_3e_127',['PushNotification< SinricProAirQualitySensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricproblinds_20_3e_128',['PushNotification< SinricProBlinds >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprocamera_20_3e_129',['PushNotification< SinricProCamera >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprocontactsensor_20_3e_130',['PushNotification< SinricProContactsensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprodimswitch_20_3e_131',['PushNotification< SinricProDimSwitch >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprodoorbell_20_3e_132',['PushNotification< SinricProDoorbell >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprofan_20_3e_133',['PushNotification< SinricProFan >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprofanus_20_3e_134',['PushNotification< SinricProFanUS >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprogaragedoor_20_3e_135',['PushNotification< SinricProGarageDoor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprolight_20_3e_136',['PushNotification< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprolock_20_3e_137',['PushNotification< SinricProLock >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricpromotionsensor_20_3e_138',['PushNotification< SinricProMotionsensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricpropowersensor_20_3e_139',['PushNotification< SinricProPowerSensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprospeaker_20_3e_140',['PushNotification< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricproswitch_20_3e_141',['PushNotification< SinricProSwitch >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprotemperaturesensor_20_3e_142',['PushNotification< SinricProTemperaturesensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprothermostat_20_3e_143',['PushNotification< SinricProThermostat >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprotv_20_3e_144',['PushNotification< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprowindowac_20_3e_145',['PushNotification< SinricProWindowAC >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]] + ['note_0',['Note',['../index.html#autotoc_md1',1,'']]], + ['notification_1',['How to send a push notification?',['../index.html#autotoc_md22',1,'']]] ]; diff --git a/docs/search/all_d.js b/docs/search/all_d.js index 930410c..c0b6405 100644 --- a/docs/search/all_d.js +++ b/docs/search/all_d.js @@ -1,9 +1,38 @@ var searchData= [ - ['rangecontroller_146',['RangeController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html',1,'SINRICPRO_2_9_17']]], - ['rangecontroller_3c_20sinricproblinds_20_3e_147',['RangeController< SinricProBlinds >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html',1,'SINRICPRO_2_9_17']]], - ['rangecontroller_3c_20sinricprofanus_20_3e_148',['RangeController< SinricProFanUS >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html',1,'SINRICPRO_2_9_17']]], - ['rangecontroller_3c_20sinricprowindowac_20_3e_149',['RangeController< SinricProWindowAC >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html',1,'SINRICPRO_2_9_17']]], - ['resetbandscallback_150',['ResetBandsCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#aa8c78de42c40ee03966f3c96cdc05bab',1,'SINRICPRO_2_9_17']]], - ['restoredevicestates_151',['restoreDeviceStates',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html#a27a9bb7f1e8bde0f39398649493b6f93',1,'SINRICPRO_2_9_17::SinricProClass']]] + ['onadjustbands_0',['onAdjustBands',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html#a41a5c1506545c44c2408054a8675c7a8',1,'SINRICPRO_3_0_0::EqualizerController']]], + ['onadjustbrightness_1',['onAdjustBrightness',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html#a0633e5fa2981189f4a093bab00a8c7f1',1,'SINRICPRO_3_0_0::BrightnessController']]], + ['onadjustpercentage_2',['onAdjustPercentage',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html#a77ac70c4880e38dae4f640dceaeb2816',1,'SINRICPRO_3_0_0::PercentageController']]], + ['onadjustpowerlevel_3',['onAdjustPowerLevel',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html#a13b10bdb1844babe4de320fff9172d96',1,'SINRICPRO_3_0_0::PowerLevelController']]], + ['onadjustrangevalue_4',['onAdjustRangeValue',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#ae85696d55112ae7343f9807faee6e064',1,'SINRICPRO_3_0_0::RangeController']]], + ['onadjusttargettemperature_5',['onAdjustTargetTemperature',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#ac51f6fecfdf4c7bc8e0712e2da47bbf4',1,'SINRICPRO_3_0_0::ThermostatController']]], + ['onadjustvolume_6',['onAdjustVolume',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html#a2c868c87f96e3924c8b309e1bcfb507e',1,'SINRICPRO_3_0_0::VolumeController']]], + ['onbrightness_7',['onBrightness',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html#abbaab3067b1fcdcc5928451b818a4420',1,'SINRICPRO_3_0_0::BrightnessController']]], + ['onchangechannel_8',['onChangeChannel',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html#a92f3b83744b5bb82d32628eef39c1eb9',1,'SINRICPRO_3_0_0::ChannelController']]], + ['onchangechannelnumber_9',['onChangeChannelNumber',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html#afd8aee20590bfadec181c6ee515125ec',1,'SINRICPRO_3_0_0::ChannelController']]], + ['oncolor_10',['onColor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html#a059ff103149869b7c49cdb8911875b7b',1,'SINRICPRO_3_0_0::ColorController']]], + ['oncolortemperature_11',['onColorTemperature',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html#a8535c44fd2517ed09ebe6a203cc25b67',1,'SINRICPRO_3_0_0::ColorTemperatureController']]], + ['onconnected_12',['onConnected',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#ac33a355adfc413d4ff36974d735115bd',1,'SINRICPRO_3_0_0::SinricProClass']]], + ['ondecreasecolortemperature_13',['onDecreaseColorTemperature',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html#a7468976e7fffeee14cc869b7236cbb50',1,'SINRICPRO_3_0_0::ColorTemperatureController']]], + ['ondisconnected_14',['onDisconnected',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#a654bb017ca55b448d55bb36e0346f38a',1,'SINRICPRO_3_0_0::SinricProClass']]], + ['ondoorstate_15',['onDoorState',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.html#a6b536531ab89b39f1a48cb107e22185e',1,'SINRICPRO_3_0_0::DoorController']]], + ['onincreasecolortemperature_16',['onIncreaseColorTemperature',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html#a7ea9fd9861a5668a41d06267bfbec82a',1,'SINRICPRO_3_0_0::ColorTemperatureController']]], + ['onkeystroke_17',['onKeystroke',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller.html#ab24b4858dcc69145a367e964c2ae7961',1,'SINRICPRO_3_0_0::KeypadController']]], + ['onlockstate_18',['onLockState',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html#aee42cc397234a454fd353ca6bc12a859',1,'SINRICPRO_3_0_0::LockController']]], + ['onmediacontrol_19',['onMediaControl',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html#afc2620621377fff928737b5a8a537020',1,'SINRICPRO_3_0_0::MediaController']]], + ['onmute_20',['onMute',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html#ab5fc79cc8903c3ccc1c106abf61d7cfd',1,'SINRICPRO_3_0_0::MuteController']]], + ['onpowerlevel_21',['onPowerLevel',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html#a0685d34694badb4442fed6b69b69b366',1,'SINRICPRO_3_0_0::PowerLevelController']]], + ['onpowerstate_22',['onPowerState',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html#a32f3257da431a1035f23a265ff0cc4cf',1,'SINRICPRO_3_0_0::PowerStateController']]], + ['onrangevalue_23',['onrangevalue',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#a94adbcdf6ce61cb6552a5f9915e705ae',1,'SINRICPRO_3_0_0::RangeController::onRangeValue(SetRangeValueCallback cb)'],['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html#a6d6d8070b49c8b5272460836a1120b33',1,'SINRICPRO_3_0_0::RangeController::onRangeValue(const String &instance, GenericSetRangeValueCallback_int cb)']]], + ['onresetbands_24',['onResetBands',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html#aa6c3aabc2b442d82ac5456ccaac3f60d',1,'SINRICPRO_3_0_0::EqualizerController']]], + ['onselectinput_25',['onSelectInput',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html#a18f8f71ecf0d7292a63d9486f94e5180',1,'SINRICPRO_3_0_0::InputController']]], + ['onsetbands_26',['onSetBands',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html#a4aaa7a29394560be7537a86b0304d199',1,'SINRICPRO_3_0_0::EqualizerController']]], + ['onsetmode_27',['onsetmode',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html#ada087c948c3ab923bdb7818daa6b2b79',1,'SINRICPRO_3_0_0::ModeController::onSetMode(ModeCallback cb)'],['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html#a6b15ba168b3a673b98da43ac5e4ef76c',1,'SINRICPRO_3_0_0::ModeController::onSetMode(const String &instance, GenericModeCallback cb)']]], + ['onsetpercentage_28',['onSetPercentage',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html#aeef432df118679c689ccd8a48d47dc3d',1,'SINRICPRO_3_0_0::PercentageController']]], + ['onsetvolume_29',['onSetVolume',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html#a5db8c85f222debbece54c794015f9402',1,'SINRICPRO_3_0_0::VolumeController']]], + ['onskipchannels_30',['onSkipChannels',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html#ab1123d03d471fad4896eb2960ed41855',1,'SINRICPRO_3_0_0::ChannelController']]], + ['ontargettemperature_31',['onTargetTemperature',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#a1c73725f1f3fbb1c5b72208aae5c2bf2',1,'SINRICPRO_3_0_0::ThermostatController']]], + ['onthermostatmode_32',['onThermostatMode',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html#a2ef31536973b20815dd6c80a28e19c9f',1,'SINRICPRO_3_0_0::ThermostatController']]], + ['ontogglestate_33',['onToggleState',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.html#a7ccd28a4f20922847d0461649af5572d',1,'SINRICPRO_3_0_0::ToggleController']]], + ['operator_5b_5d_34',['operator[]',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#ab68694b0983ae36c532cbd52adbb180d',1,'SINRICPRO_3_0_0::SinricProClass']]] ]; diff --git a/docs/search/all_e.js b/docs/search/all_e.js index a6c111a..0d914bb 100644 --- a/docs/search/all_e.js +++ b/docs/search/all_e.js @@ -1,60 +1,48 @@ var searchData= [ - ['selectinputcallback_152',['SelectInputCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a2f7a91a480cd401f4df2f7ddda4a8f13',1,'SINRICPRO_2_9_17']]], - ['sendairqualityevent_153',['sendAirQualityEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_air_quality_sensor.html#a733195bdc5b15c858e4e890847b3a0d5',1,'SINRICPRO_2_9_17::AirQualitySensor']]], - ['sendbandsevent_154',['sendBandsEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html#a4ad5674e36d96a73147388251b794c82',1,'SINRICPRO_2_9_17::EqualizerController']]], - ['sendbrightnessevent_155',['sendBrightnessEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_brightness_controller.html#a2a96c414210f61de3ce53a4ca8c963b3',1,'SINRICPRO_2_9_17::BrightnessController']]], - ['sendchangechannelevent_156',['sendChangeChannelEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html#aff5839c3020c3006af1a2a8c37cc858e',1,'SINRICPRO_2_9_17::ChannelController']]], - ['sendcolorevent_157',['sendColorEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_controller.html#a3599a6d00eb0f9127a7c1188885c5bc0',1,'SINRICPRO_2_9_17::ColorController']]], - ['sendcolortemperatureevent_158',['sendColorTemperatureEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html#a0f90d7f5a5b365116f97beca7630ccc9',1,'SINRICPRO_2_9_17::ColorTemperatureController']]], - ['sendcontactevent_159',['sendContactEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_contact_sensor.html#a452a4cfa3177d8d8d31c5919e9ccbb19',1,'SINRICPRO_2_9_17::ContactSensor']]], - ['senddoorbellevent_160',['sendDoorbellEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_doorbell.html#a168f5a4ddcbf381fd548bf10ee05b272',1,'SINRICPRO_2_9_17::Doorbell']]], - ['senddoorstateevent_161',['sendDoorStateEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_door_controller.html#a375cda2b0bc05e1a66e3bc29d059d9a7',1,'SINRICPRO_2_9_17::DoorController']]], - ['sendlockstateevent_162',['sendLockStateEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_lock_controller.html#a8fb3fec204da21e69d05f89a9ecb4739',1,'SINRICPRO_2_9_17::LockController']]], - ['sendmediacontrolevent_163',['sendMediaControlEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_media_controller.html#a7af593cbf79d38f6b90efb5afee45077',1,'SINRICPRO_2_9_17::MediaController']]], - ['sendmodeevent_164',['sendModeEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html#a7c84d5c26f2ded88e4941313015f7f4c',1,'SINRICPRO_2_9_17::ModeController::sendModeEvent(String instance, String mode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)'],['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html#a41f8465e89d147c08ab8cbc6839d34da',1,'SINRICPRO_2_9_17::ModeController::sendModeEvent(String mode, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)']]], - ['sendmotionevent_165',['sendMotionEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_motion_sensor.html#a9be024aa2bb70f0146a02dd1b79d3faa',1,'SINRICPRO_2_9_17::MotionSensor']]], - ['sendmuteevent_166',['sendMuteEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mute_controller.html#a4717d892b64a14052712152924bd5b29',1,'SINRICPRO_2_9_17::MuteController']]], - ['sendpowerlevelevent_167',['sendPowerLevelEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html#a2f1f88c7b4d9503bfcfe5557c5e55ed4',1,'SINRICPRO_2_9_17::PowerLevelController']]], - ['sendpowersensorevent_168',['sendPowerSensorEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_sensor.html#aec04692842ae1953973503f6be6d9afc',1,'SINRICPRO_2_9_17::PowerSensor']]], - ['sendpowerstateevent_169',['sendPowerStateEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html#acfd5f3a30933ace93751bd823630cded',1,'SINRICPRO_2_9_17::PowerStateController']]], - ['sendpushnotification_170',['sendPushNotification',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html#a04266791a4b23e9614b8773edb5f67b6',1,'SINRICPRO_2_9_17::PushNotification']]], - ['sendrangevalueevent_171',['sendRangeValueEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html#aaf84aa417e2246843a27e819898e64b5',1,'SINRICPRO_2_9_17::RangeController::sendRangeValueEvent(const String &instance, int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)'],['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html#a1d726751c416fe6dd408e5dd19f6b53b',1,'SINRICPRO_2_9_17::RangeController::sendRangeValueEvent(int rangeValue, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)']]], - ['sendselectinputevent_172',['sendSelectInputEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_input_controller.html#a973241ac912a18b142d236dda7f80e97',1,'SINRICPRO_2_9_17::InputController']]], - ['sendsetpercentageevent_173',['sendSetPercentageEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_percentage_controller.html#adf688c12e451e52b05670f150bdabcc8',1,'SINRICPRO_2_9_17::PercentageController']]], - ['sendtargettemperatureevent_174',['sendTargetTemperatureEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html#ab8b7fdd977a0a38413f2279b50274890',1,'SINRICPRO_2_9_17::ThermostatController']]], - ['sendtemperatureevent_175',['sendTemperatureEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_temperature_sensor.html#a75956fe7aff6e595a9b57519316ff789',1,'SINRICPRO_2_9_17::TemperatureSensor']]], - ['sendthermostatmodeevent_176',['sendThermostatModeEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html#ae7273cd094f64a93494ae99501fc83e8',1,'SINRICPRO_2_9_17::ThermostatController']]], - ['sendtogglestateevent_177',['sendToggleStateEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_toggle_controller.html#a7fcc5084fea488e5b5e95f5ad7015a0f',1,'SINRICPRO_2_9_17::ToggleController']]], - ['sendvolumeevent_178',['sendVolumeEvent',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html#aa2d3dbea5b07e4c5f39d3d20aa2167a4',1,'SINRICPRO_2_9_17::VolumeController']]], - ['setbandscallback_179',['SetBandsCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#aaabec5dea3546d52e744a4b0b90c02f4',1,'SINRICPRO_2_9_17']]], - ['setpercentagecallback_180',['SetPercentageCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a3ab0c4ff332f49884fe6a75cb2a293c2',1,'SINRICPRO_2_9_17']]], - ['setpowerlevelcallback_181',['SetPowerLevelCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a5be6c20c0ba9e9b19bd76d42918451b2',1,'SINRICPRO_2_9_17']]], - ['settargettemperaturecallback_182',['SetTargetTemperatureCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a64ecf52eb927d219b3acabf01ad0d31f',1,'SINRICPRO_2_9_17']]], - ['setvolumecallback_183',['SetVolumeCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a5744ad6a31085c216c2193b0f2d86673',1,'SINRICPRO_2_9_17']]], - ['sinricpro_184',['SinricPro',['../group___sinric_pro.html',1,'']]], - ['sinricpro_20_28esp8266_20_2f_20esp32_20sdk_29_185',['SinricPro (ESP8266 / ESP32 SDK)',['../index.html',1,'']]], - ['sinricpro_5f2_5f9_5f17_186',['SINRICPRO_2_9_17',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html',1,'']]], - ['sinricproairqualitysensor_187',['SinricProAirQualitySensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_air_quality_sensor.html',1,'SINRICPRO_2_9_17']]], - ['sinricproblinds_188',['SinricProBlinds',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html',1,'SINRICPRO_2_9_17']]], - ['sinricprocamera_189',['SinricProCamera',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_camera.html',1,'SINRICPRO_2_9_17']]], - ['sinricproclass_190',['SinricProClass',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html',1,'SINRICPRO_2_9_17']]], - ['sinricprocontactsensor_191',['SinricProContactsensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_contactsensor.html',1,'SINRICPRO_2_9_17']]], - ['sinricprodevice_192',['SinricProDevice',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_device.html',1,'SINRICPRO_2_9_17']]], - ['sinricprodimswitch_193',['SinricProDimSwitch',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html',1,'SINRICPRO_2_9_17']]], - ['sinricprodoorbell_194',['SinricProDoorbell',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_doorbell.html',1,'SINRICPRO_2_9_17']]], - ['sinricprofan_195',['SinricProFan',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html',1,'SINRICPRO_2_9_17']]], - ['sinricprofanus_196',['SinricProFanUS',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html',1,'SINRICPRO_2_9_17']]], - ['sinricprogaragedoor_197',['SinricProGarageDoor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_garage_door.html',1,'SINRICPRO_2_9_17']]], - ['sinricprolight_198',['SinricProLight',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html',1,'SINRICPRO_2_9_17']]], - ['sinricprolock_199',['SinricProLock',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_lock.html',1,'SINRICPRO_2_9_17']]], - ['sinricpromotionsensor_200',['SinricProMotionsensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_motionsensor.html',1,'SINRICPRO_2_9_17']]], - ['sinricpropowersensor_201',['SinricProPowerSensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_power_sensor.html',1,'SINRICPRO_2_9_17']]], - ['sinricprospeaker_202',['SinricProSpeaker',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html',1,'SINRICPRO_2_9_17']]], - ['sinricproswitch_203',['SinricProSwitch',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_switch.html',1,'SINRICPRO_2_9_17']]], - ['sinricprotemperaturesensor_204',['SinricProTemperaturesensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_temperaturesensor.html',1,'SINRICPRO_2_9_17']]], - ['sinricprothermostat_205',['SinricProThermostat',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html',1,'SINRICPRO_2_9_17']]], - ['sinricprotv_206',['SinricProTV',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html',1,'SINRICPRO_2_9_17']]], - ['sinricprowindowac_207',['SinricProWindowAC',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html',1,'SINRICPRO_2_9_17']]], - ['skipchannelscallback_208',['SkipChannelsCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a434616b976d1339be63540d16977fa3d',1,'SINRICPRO_2_9_17']]] + ['percentagecontroller_0',['PercentageController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html',1,'SINRICPRO_3_0_0']]], + ['platformio_3a_1',['VS Code & PlatformIO:',['../index.html#autotoc_md3',1,'']]], + ['portal_20portal_20sinric_20pro_2',['Define your credentials from SinricPro-Portal (portal.sinric.pro)',['../index.html#autotoc_md14',1,'']]], + ['portal_20sinric_20pro_3',['Define your credentials from SinricPro-Portal (portal.sinric.pro)',['../index.html#autotoc_md14',1,'']]], + ['powerlevelcontroller_4',['PowerLevelController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerlevelcontroller_3c_20sinricprodimswitch_20_3e_5',['PowerLevelController< SinricProDimSwitch >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerlevelcontroller_3c_20sinricprofan_20_3e_6',['PowerLevelController< SinricProFan >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html',1,'SINRICPRO_3_0_0']]], + ['powersensor_7',['PowerSensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.html',1,'SINRICPRO_3_0_0']]], + ['powersensor_3c_20sinricpropowersensor_20_3e_8',['PowerSensor< SinricProPowerSensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecallback_9',['PowerStateCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#aad370bc6b280bbdeac98181a31f22df4',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_10',['PowerStateController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricproblinds_20_3e_11',['PowerStateController< SinricProBlinds >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprocamera_20_3e_12',['PowerStateController< SinricProCamera >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprodimswitch_20_3e_13',['PowerStateController< SinricProDimSwitch >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprodoorbell_20_3e_14',['PowerStateController< SinricProDoorbell >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprofan_20_3e_15',['PowerStateController< SinricProFan >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprofanus_20_3e_16',['PowerStateController< SinricProFanUS >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprolight_20_3e_17',['PowerStateController< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprospeaker_20_3e_18',['PowerStateController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricproswitch_20_3e_19',['PowerStateController< SinricProSwitch >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprothermostat_20_3e_20',['PowerStateController< SinricProThermostat >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprotv_20_3e_21',['PowerStateController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprowindowac_20_3e_22',['PowerStateController< SinricProWindowAC >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['pro_23',['Define your credentials from SinricPro-Portal (portal.sinric.pro)',['../index.html#autotoc_md14',1,'']]], + ['push_20notification_24',['How to send a push notification?',['../index.html#autotoc_md22',1,'']]], + ['pushnotification_25',['PushNotification',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricproairqualitysensor_20_3e_26',['PushNotification< SinricProAirQualitySensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricproblinds_20_3e_27',['PushNotification< SinricProBlinds >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprocamera_20_3e_28',['PushNotification< SinricProCamera >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprocontactsensor_20_3e_29',['PushNotification< SinricProContactsensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprodimswitch_20_3e_30',['PushNotification< SinricProDimSwitch >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprodoorbell_20_3e_31',['PushNotification< SinricProDoorbell >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprofan_20_3e_32',['PushNotification< SinricProFan >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprofanus_20_3e_33',['PushNotification< SinricProFanUS >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprogaragedoor_20_3e_34',['PushNotification< SinricProGarageDoor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprolight_20_3e_35',['PushNotification< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprolock_20_3e_36',['PushNotification< SinricProLock >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricpromotionsensor_20_3e_37',['PushNotification< SinricProMotionsensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricpropowersensor_20_3e_38',['PushNotification< SinricProPowerSensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprospeaker_20_3e_39',['PushNotification< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricproswitch_20_3e_40',['PushNotification< SinricProSwitch >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprotemperaturesensor_20_3e_41',['PushNotification< SinricProTemperaturesensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprothermostat_20_3e_42',['PushNotification< SinricProThermostat >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprotv_20_3e_43',['PushNotification< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprowindowac_20_3e_44',['PushNotification< SinricProWindowAC >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/all_f.js b/docs/search/all_f.js index 209abc6..62469c5 100644 --- a/docs/search/all_f.js +++ b/docs/search/all_f.js @@ -1,11 +1,12 @@ var searchData= [ - ['temperaturesensor_209',['TemperatureSensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_temperature_sensor.html',1,'SINRICPRO_2_9_17']]], - ['temperaturesensor_3c_20sinricprotemperaturesensor_20_3e_210',['TemperatureSensor< SinricProTemperaturesensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_temperature_sensor.html',1,'SINRICPRO_2_9_17']]], - ['temperaturesensor_3c_20sinricprothermostat_20_3e_211',['TemperatureSensor< SinricProThermostat >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_temperature_sensor.html',1,'SINRICPRO_2_9_17']]], - ['thermostatcontroller_212',['ThermostatController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html',1,'SINRICPRO_2_9_17']]], - ['thermostatcontroller_3c_20sinricprothermostat_20_3e_213',['ThermostatController< SinricProThermostat >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html',1,'SINRICPRO_2_9_17']]], - ['thermostatcontroller_3c_20sinricprowindowac_20_3e_214',['ThermostatController< SinricProWindowAC >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html',1,'SINRICPRO_2_9_17']]], - ['thermostatmodecallback_215',['ThermostatModeCallback',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html#a6cb473352a45a2ae76a46a4292c95a8c',1,'SINRICPRO_2_9_17']]], - ['togglecontroller_216',['ToggleController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_toggle_controller.html',1,'SINRICPRO_2_9_17']]] + ['rangecontroller_0',['RangeController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html',1,'SINRICPRO_3_0_0']]], + ['rangecontroller_3c_20sinricproblinds_20_3e_1',['RangeController< SinricProBlinds >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html',1,'SINRICPRO_3_0_0']]], + ['rangecontroller_3c_20sinricprofanus_20_3e_2',['RangeController< SinricProFanUS >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html',1,'SINRICPRO_3_0_0']]], + ['rangecontroller_3c_20sinricprowindowac_20_3e_3',['RangeController< SinricProWindowAC >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html',1,'SINRICPRO_3_0_0']]], + ['resetbandscallback_4',['ResetBandsCallback',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html#aa8c78de42c40ee03966f3c96cdc05bab',1,'SINRICPRO_3_0_0']]], + ['restoredevicestates_5',['restoreDeviceStates',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html#a27a9bb7f1e8bde0f39398649493b6f93',1,'SINRICPRO_3_0_0::SinricProClass']]], + ['retrieve_20a_20device_20for_20sending_20an_20event_6',['How to retrieve a device for sending an event?',['../index.html#autotoc_md21',1,'']]], + ['routine_20s_7',['Define callback routine(s)',['../index.html#autotoc_md15',1,'']]], + ['rp2040_8',['SinricPro (ESP8266 / ESP32 / RP2040)',['../index.html',1,'']]] ]; diff --git a/docs/search/classes_0.js b/docs/search/classes_0.js index 0d4fb69..a62d46a 100644 --- a/docs/search/classes_0.js +++ b/docs/search/classes_0.js @@ -1,5 +1,5 @@ var searchData= [ - ['airqualitysensor_220',['AirQualitySensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_air_quality_sensor.html',1,'SINRICPRO_2_9_17']]], - ['airqualitysensor_3c_20sinricproairqualitysensor_20_3e_221',['AirQualitySensor< SinricProAirQualitySensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_air_quality_sensor.html',1,'SINRICPRO_2_9_17']]] + ['airqualitysensor_0',['AirQualitySensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.html',1,'SINRICPRO_3_0_0']]], + ['airqualitysensor_3c_20sinricproairqualitysensor_20_3e_1',['AirQualitySensor< SinricProAirQualitySensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_air_quality_sensor.html',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/classes_1.js b/docs/search/classes_1.js index cfca4eb..476933d 100644 --- a/docs/search/classes_1.js +++ b/docs/search/classes_1.js @@ -1,5 +1,5 @@ var searchData= [ - ['brightnesscontroller_222',['BrightnessController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_brightness_controller.html',1,'SINRICPRO_2_9_17']]], - ['brightnesscontroller_3c_20sinricprolight_20_3e_223',['BrightnessController< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_brightness_controller.html',1,'SINRICPRO_2_9_17']]] + ['brightnesscontroller_0',['BrightnessController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html',1,'SINRICPRO_3_0_0']]], + ['brightnesscontroller_3c_20sinricprolight_20_3e_1',['BrightnessController< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_brightness_controller.html',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/classes_2.js b/docs/search/classes_2.js index 4c8e4d2..007afc2 100644 --- a/docs/search/classes_2.js +++ b/docs/search/classes_2.js @@ -1,11 +1,11 @@ var searchData= [ - ['channelcontroller_224',['ChannelController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html',1,'SINRICPRO_2_9_17']]], - ['channelcontroller_3c_20sinricprotv_20_3e_225',['ChannelController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_channel_controller.html',1,'SINRICPRO_2_9_17']]], - ['colorcontroller_226',['ColorController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_controller.html',1,'SINRICPRO_2_9_17']]], - ['colorcontroller_3c_20sinricprolight_20_3e_227',['ColorController< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_controller.html',1,'SINRICPRO_2_9_17']]], - ['colortemperaturecontroller_228',['ColorTemperatureController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html',1,'SINRICPRO_2_9_17']]], - ['colortemperaturecontroller_3c_20sinricprolight_20_3e_229',['ColorTemperatureController< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_color_temperature_controller.html',1,'SINRICPRO_2_9_17']]], - ['contactsensor_230',['ContactSensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_contact_sensor.html',1,'SINRICPRO_2_9_17']]], - ['contactsensor_3c_20sinricprocontactsensor_20_3e_231',['ContactSensor< SinricProContactsensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_contact_sensor.html',1,'SINRICPRO_2_9_17']]] + ['channelcontroller_0',['ChannelController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html',1,'SINRICPRO_3_0_0']]], + ['channelcontroller_3c_20sinricprotv_20_3e_1',['ChannelController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_channel_controller.html',1,'SINRICPRO_3_0_0']]], + ['colorcontroller_2',['ColorController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html',1,'SINRICPRO_3_0_0']]], + ['colorcontroller_3c_20sinricprolight_20_3e_3',['ColorController< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_controller.html',1,'SINRICPRO_3_0_0']]], + ['colortemperaturecontroller_4',['ColorTemperatureController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html',1,'SINRICPRO_3_0_0']]], + ['colortemperaturecontroller_3c_20sinricprolight_20_3e_5',['ColorTemperatureController< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_color_temperature_controller.html',1,'SINRICPRO_3_0_0']]], + ['contactsensor_6',['ContactSensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.html',1,'SINRICPRO_3_0_0']]], + ['contactsensor_3c_20sinricprocontactsensor_20_3e_7',['ContactSensor< SinricProContactsensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_contact_sensor.html',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/classes_3.js b/docs/search/classes_3.js index 454db62..eae1201 100644 --- a/docs/search/classes_3.js +++ b/docs/search/classes_3.js @@ -1,7 +1,7 @@ var searchData= [ - ['doorbell_232',['Doorbell',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_doorbell.html',1,'SINRICPRO_2_9_17']]], - ['doorbell_3c_20sinricprodoorbell_20_3e_233',['Doorbell< SinricProDoorbell >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_doorbell.html',1,'SINRICPRO_2_9_17']]], - ['doorcontroller_234',['DoorController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_door_controller.html',1,'SINRICPRO_2_9_17']]], - ['doorcontroller_3c_20sinricprogaragedoor_20_3e_235',['DoorController< SinricProGarageDoor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_door_controller.html',1,'SINRICPRO_2_9_17']]] + ['doorbell_0',['Doorbell',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.html',1,'SINRICPRO_3_0_0']]], + ['doorbell_3c_20sinricprodoorbell_20_3e_1',['Doorbell< SinricProDoorbell >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_doorbell.html',1,'SINRICPRO_3_0_0']]], + ['doorcontroller_2',['DoorController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.html',1,'SINRICPRO_3_0_0']]], + ['doorcontroller_3c_20sinricprogaragedoor_20_3e_3',['DoorController< SinricProGarageDoor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_door_controller.html',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/classes_4.js b/docs/search/classes_4.js index 710d247..1429ee4 100644 --- a/docs/search/classes_4.js +++ b/docs/search/classes_4.js @@ -1,5 +1,5 @@ var searchData= [ - ['equalizercontroller_236',['EqualizerController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html',1,'SINRICPRO_2_9_17']]], - ['equalizercontroller_3c_20sinricprospeaker_20_3e_237',['EqualizerController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_equalizer_controller.html',1,'SINRICPRO_2_9_17']]] + ['equalizercontroller_0',['EqualizerController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html',1,'SINRICPRO_3_0_0']]], + ['equalizercontroller_3c_20sinricprospeaker_20_3e_1',['EqualizerController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_equalizer_controller.html',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/classes_5.js b/docs/search/classes_5.js index a1fd2e0..327de72 100644 --- a/docs/search/classes_5.js +++ b/docs/search/classes_5.js @@ -1,6 +1,6 @@ var searchData= [ - ['inputcontroller_238',['InputController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_input_controller.html',1,'SINRICPRO_2_9_17']]], - ['inputcontroller_3c_20sinricprospeaker_20_3e_239',['InputController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_input_controller.html',1,'SINRICPRO_2_9_17']]], - ['inputcontroller_3c_20sinricprotv_20_3e_240',['InputController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_input_controller.html',1,'SINRICPRO_2_9_17']]] + ['inputcontroller_0',['InputController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html',1,'SINRICPRO_3_0_0']]], + ['inputcontroller_3c_20sinricprospeaker_20_3e_1',['InputController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html',1,'SINRICPRO_3_0_0']]], + ['inputcontroller_3c_20sinricprotv_20_3e_2',['InputController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_input_controller.html',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/classes_6.js b/docs/search/classes_6.js index eec7c72..ba80052 100644 --- a/docs/search/classes_6.js +++ b/docs/search/classes_6.js @@ -1,4 +1,4 @@ var searchData= [ - ['keypadcontroller_241',['KeypadController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_keypad_controller.html',1,'SINRICPRO_2_9_17']]] + ['keypadcontroller_0',['KeypadController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_keypad_controller.html',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/classes_7.js b/docs/search/classes_7.js index a1d286b..e9ed486 100644 --- a/docs/search/classes_7.js +++ b/docs/search/classes_7.js @@ -1,5 +1,5 @@ var searchData= [ - ['lockcontroller_242',['LockController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_lock_controller.html',1,'SINRICPRO_2_9_17']]], - ['lockcontroller_3c_20sinricprolock_20_3e_243',['LockController< SinricProLock >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_lock_controller.html',1,'SINRICPRO_2_9_17']]] + ['lockcontroller_0',['LockController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html',1,'SINRICPRO_3_0_0']]], + ['lockcontroller_3c_20sinricprolock_20_3e_1',['LockController< SinricProLock >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_lock_controller.html',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/classes_8.js b/docs/search/classes_8.js index dcc5378..7eddbb7 100644 --- a/docs/search/classes_8.js +++ b/docs/search/classes_8.js @@ -1,13 +1,13 @@ var searchData= [ - ['mediacontroller_244',['MediaController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_media_controller.html',1,'SINRICPRO_2_9_17']]], - ['mediacontroller_3c_20sinricprospeaker_20_3e_245',['MediaController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_media_controller.html',1,'SINRICPRO_2_9_17']]], - ['mediacontroller_3c_20sinricprotv_20_3e_246',['MediaController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_media_controller.html',1,'SINRICPRO_2_9_17']]], - ['modecontroller_247',['ModeController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html',1,'SINRICPRO_2_9_17']]], - ['modecontroller_3c_20sinricprospeaker_20_3e_248',['ModeController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mode_controller.html',1,'SINRICPRO_2_9_17']]], - ['motionsensor_249',['MotionSensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_motion_sensor.html',1,'SINRICPRO_2_9_17']]], - ['motionsensor_3c_20sinricpromotionsensor_20_3e_250',['MotionSensor< SinricProMotionsensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_motion_sensor.html',1,'SINRICPRO_2_9_17']]], - ['mutecontroller_251',['MuteController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mute_controller.html',1,'SINRICPRO_2_9_17']]], - ['mutecontroller_3c_20sinricprospeaker_20_3e_252',['MuteController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mute_controller.html',1,'SINRICPRO_2_9_17']]], - ['mutecontroller_3c_20sinricprotv_20_3e_253',['MuteController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_mute_controller.html',1,'SINRICPRO_2_9_17']]] + ['mediacontroller_0',['MediaController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html',1,'SINRICPRO_3_0_0']]], + ['mediacontroller_3c_20sinricprospeaker_20_3e_1',['MediaController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html',1,'SINRICPRO_3_0_0']]], + ['mediacontroller_3c_20sinricprotv_20_3e_2',['MediaController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_media_controller.html',1,'SINRICPRO_3_0_0']]], + ['modecontroller_3',['ModeController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html',1,'SINRICPRO_3_0_0']]], + ['modecontroller_3c_20sinricprospeaker_20_3e_4',['ModeController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mode_controller.html',1,'SINRICPRO_3_0_0']]], + ['motionsensor_5',['MotionSensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.html',1,'SINRICPRO_3_0_0']]], + ['motionsensor_3c_20sinricpromotionsensor_20_3e_6',['MotionSensor< SinricProMotionsensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_motion_sensor.html',1,'SINRICPRO_3_0_0']]], + ['mutecontroller_7',['MuteController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html',1,'SINRICPRO_3_0_0']]], + ['mutecontroller_3c_20sinricprospeaker_20_3e_8',['MuteController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html',1,'SINRICPRO_3_0_0']]], + ['mutecontroller_3c_20sinricprotv_20_3e_9',['MuteController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_mute_controller.html',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/classes_9.js b/docs/search/classes_9.js index da315d9..26e4711 100644 --- a/docs/search/classes_9.js +++ b/docs/search/classes_9.js @@ -1,47 +1,42 @@ var searchData= [ - ['percentagecontroller_254',['PercentageController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_percentage_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerlevelcontroller_255',['PowerLevelController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerlevelcontroller_3c_20sinricprodimswitch_20_3e_256',['PowerLevelController< SinricProDimSwitch >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerlevelcontroller_3c_20sinricprofan_20_3e_257',['PowerLevelController< SinricProFan >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_level_controller.html',1,'SINRICPRO_2_9_17']]], - ['powersensor_258',['PowerSensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_sensor.html',1,'SINRICPRO_2_9_17']]], - ['powersensor_3c_20sinricpropowersensor_20_3e_259',['PowerSensor< SinricProPowerSensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_sensor.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_260',['PowerStateController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricproairqualitysensor_20_3e_261',['PowerStateController< SinricProAirQualitySensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricproblinds_20_3e_262',['PowerStateController< SinricProBlinds >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprocamera_20_3e_263',['PowerStateController< SinricProCamera >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprocontactsensor_20_3e_264',['PowerStateController< SinricProContactsensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprodimswitch_20_3e_265',['PowerStateController< SinricProDimSwitch >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprodoorbell_20_3e_266',['PowerStateController< SinricProDoorbell >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprofan_20_3e_267',['PowerStateController< SinricProFan >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprofanus_20_3e_268',['PowerStateController< SinricProFanUS >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprolight_20_3e_269',['PowerStateController< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricpromotionsensor_20_3e_270',['PowerStateController< SinricProMotionsensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricpropowersensor_20_3e_271',['PowerStateController< SinricProPowerSensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprospeaker_20_3e_272',['PowerStateController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricproswitch_20_3e_273',['PowerStateController< SinricProSwitch >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprotemperaturesensor_20_3e_274',['PowerStateController< SinricProTemperaturesensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprothermostat_20_3e_275',['PowerStateController< SinricProThermostat >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprotv_20_3e_276',['PowerStateController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['powerstatecontroller_3c_20sinricprowindowac_20_3e_277',['PowerStateController< SinricProWindowAC >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_power_state_controller.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_278',['PushNotification',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricproairqualitysensor_20_3e_279',['PushNotification< SinricProAirQualitySensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricproblinds_20_3e_280',['PushNotification< SinricProBlinds >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprocamera_20_3e_281',['PushNotification< SinricProCamera >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprocontactsensor_20_3e_282',['PushNotification< SinricProContactsensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprodimswitch_20_3e_283',['PushNotification< SinricProDimSwitch >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprodoorbell_20_3e_284',['PushNotification< SinricProDoorbell >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprofan_20_3e_285',['PushNotification< SinricProFan >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprofanus_20_3e_286',['PushNotification< SinricProFanUS >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprogaragedoor_20_3e_287',['PushNotification< SinricProGarageDoor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprolight_20_3e_288',['PushNotification< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprolock_20_3e_289',['PushNotification< SinricProLock >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricpromotionsensor_20_3e_290',['PushNotification< SinricProMotionsensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricpropowersensor_20_3e_291',['PushNotification< SinricProPowerSensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprospeaker_20_3e_292',['PushNotification< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricproswitch_20_3e_293',['PushNotification< SinricProSwitch >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprotemperaturesensor_20_3e_294',['PushNotification< SinricProTemperaturesensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprothermostat_20_3e_295',['PushNotification< SinricProThermostat >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprotv_20_3e_296',['PushNotification< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]], - ['pushnotification_3c_20sinricprowindowac_20_3e_297',['PushNotification< SinricProWindowAC >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_push_notification.html',1,'SINRICPRO_2_9_17']]] + ['percentagecontroller_0',['PercentageController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_percentage_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerlevelcontroller_1',['PowerLevelController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerlevelcontroller_3c_20sinricprodimswitch_20_3e_2',['PowerLevelController< SinricProDimSwitch >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerlevelcontroller_3c_20sinricprofan_20_3e_3',['PowerLevelController< SinricProFan >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_level_controller.html',1,'SINRICPRO_3_0_0']]], + ['powersensor_4',['PowerSensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.html',1,'SINRICPRO_3_0_0']]], + ['powersensor_3c_20sinricpropowersensor_20_3e_5',['PowerSensor< SinricProPowerSensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_sensor.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_6',['PowerStateController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricproblinds_20_3e_7',['PowerStateController< SinricProBlinds >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprocamera_20_3e_8',['PowerStateController< SinricProCamera >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprodimswitch_20_3e_9',['PowerStateController< SinricProDimSwitch >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprodoorbell_20_3e_10',['PowerStateController< SinricProDoorbell >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprofan_20_3e_11',['PowerStateController< SinricProFan >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprofanus_20_3e_12',['PowerStateController< SinricProFanUS >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprolight_20_3e_13',['PowerStateController< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprospeaker_20_3e_14',['PowerStateController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricproswitch_20_3e_15',['PowerStateController< SinricProSwitch >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprothermostat_20_3e_16',['PowerStateController< SinricProThermostat >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprotv_20_3e_17',['PowerStateController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['powerstatecontroller_3c_20sinricprowindowac_20_3e_18',['PowerStateController< SinricProWindowAC >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_power_state_controller.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_19',['PushNotification',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricproairqualitysensor_20_3e_20',['PushNotification< SinricProAirQualitySensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricproblinds_20_3e_21',['PushNotification< SinricProBlinds >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprocamera_20_3e_22',['PushNotification< SinricProCamera >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprocontactsensor_20_3e_23',['PushNotification< SinricProContactsensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprodimswitch_20_3e_24',['PushNotification< SinricProDimSwitch >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprodoorbell_20_3e_25',['PushNotification< SinricProDoorbell >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprofan_20_3e_26',['PushNotification< SinricProFan >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprofanus_20_3e_27',['PushNotification< SinricProFanUS >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprogaragedoor_20_3e_28',['PushNotification< SinricProGarageDoor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprolight_20_3e_29',['PushNotification< SinricProLight >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprolock_20_3e_30',['PushNotification< SinricProLock >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricpromotionsensor_20_3e_31',['PushNotification< SinricProMotionsensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricpropowersensor_20_3e_32',['PushNotification< SinricProPowerSensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprospeaker_20_3e_33',['PushNotification< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricproswitch_20_3e_34',['PushNotification< SinricProSwitch >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprotemperaturesensor_20_3e_35',['PushNotification< SinricProTemperaturesensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprothermostat_20_3e_36',['PushNotification< SinricProThermostat >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprotv_20_3e_37',['PushNotification< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]], + ['pushnotification_3c_20sinricprowindowac_20_3e_38',['PushNotification< SinricProWindowAC >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_push_notification.html',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/classes_a.js b/docs/search/classes_a.js index 948812f..2c071cb 100644 --- a/docs/search/classes_a.js +++ b/docs/search/classes_a.js @@ -1,7 +1,7 @@ var searchData= [ - ['rangecontroller_298',['RangeController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html',1,'SINRICPRO_2_9_17']]], - ['rangecontroller_3c_20sinricproblinds_20_3e_299',['RangeController< SinricProBlinds >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html',1,'SINRICPRO_2_9_17']]], - ['rangecontroller_3c_20sinricprofanus_20_3e_300',['RangeController< SinricProFanUS >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html',1,'SINRICPRO_2_9_17']]], - ['rangecontroller_3c_20sinricprowindowac_20_3e_301',['RangeController< SinricProWindowAC >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_range_controller.html',1,'SINRICPRO_2_9_17']]] + ['rangecontroller_0',['RangeController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html',1,'SINRICPRO_3_0_0']]], + ['rangecontroller_3c_20sinricproblinds_20_3e_1',['RangeController< SinricProBlinds >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html',1,'SINRICPRO_3_0_0']]], + ['rangecontroller_3c_20sinricprofanus_20_3e_2',['RangeController< SinricProFanUS >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html',1,'SINRICPRO_3_0_0']]], + ['rangecontroller_3c_20sinricprowindowac_20_3e_3',['RangeController< SinricProWindowAC >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_range_controller.html',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/classes_b.js b/docs/search/classes_b.js index dc4826d..2441caf 100644 --- a/docs/search/classes_b.js +++ b/docs/search/classes_b.js @@ -1,24 +1,24 @@ var searchData= [ - ['sinricproairqualitysensor_302',['SinricProAirQualitySensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_air_quality_sensor.html',1,'SINRICPRO_2_9_17']]], - ['sinricproblinds_303',['SinricProBlinds',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_blinds.html',1,'SINRICPRO_2_9_17']]], - ['sinricprocamera_304',['SinricProCamera',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_camera.html',1,'SINRICPRO_2_9_17']]], - ['sinricproclass_305',['SinricProClass',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_class.html',1,'SINRICPRO_2_9_17']]], - ['sinricprocontactsensor_306',['SinricProContactsensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_contactsensor.html',1,'SINRICPRO_2_9_17']]], - ['sinricprodevice_307',['SinricProDevice',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_device.html',1,'SINRICPRO_2_9_17']]], - ['sinricprodimswitch_308',['SinricProDimSwitch',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_dim_switch.html',1,'SINRICPRO_2_9_17']]], - ['sinricprodoorbell_309',['SinricProDoorbell',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_doorbell.html',1,'SINRICPRO_2_9_17']]], - ['sinricprofan_310',['SinricProFan',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan.html',1,'SINRICPRO_2_9_17']]], - ['sinricprofanus_311',['SinricProFanUS',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_fan_u_s.html',1,'SINRICPRO_2_9_17']]], - ['sinricprogaragedoor_312',['SinricProGarageDoor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_garage_door.html',1,'SINRICPRO_2_9_17']]], - ['sinricprolight_313',['SinricProLight',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_light.html',1,'SINRICPRO_2_9_17']]], - ['sinricprolock_314',['SinricProLock',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_lock.html',1,'SINRICPRO_2_9_17']]], - ['sinricpromotionsensor_315',['SinricProMotionsensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_motionsensor.html',1,'SINRICPRO_2_9_17']]], - ['sinricpropowersensor_316',['SinricProPowerSensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_power_sensor.html',1,'SINRICPRO_2_9_17']]], - ['sinricprospeaker_317',['SinricProSpeaker',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_speaker.html',1,'SINRICPRO_2_9_17']]], - ['sinricproswitch_318',['SinricProSwitch',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_switch.html',1,'SINRICPRO_2_9_17']]], - ['sinricprotemperaturesensor_319',['SinricProTemperaturesensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_temperaturesensor.html',1,'SINRICPRO_2_9_17']]], - ['sinricprothermostat_320',['SinricProThermostat',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_thermostat.html',1,'SINRICPRO_2_9_17']]], - ['sinricprotv_321',['SinricProTV',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_t_v.html',1,'SINRICPRO_2_9_17']]], - ['sinricprowindowac_322',['SinricProWindowAC',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_sinric_pro_window_a_c.html',1,'SINRICPRO_2_9_17']]] + ['sinricproairqualitysensor_0',['SinricProAirQualitySensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_air_quality_sensor.html',1,'SINRICPRO_3_0_0']]], + ['sinricproblinds_1',['SinricProBlinds',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_blinds.html',1,'SINRICPRO_3_0_0']]], + ['sinricprocamera_2',['SinricProCamera',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_camera.html',1,'SINRICPRO_3_0_0']]], + ['sinricproclass_3',['SinricProClass',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_class.html',1,'SINRICPRO_3_0_0']]], + ['sinricprocontactsensor_4',['SinricProContactsensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_contactsensor.html',1,'SINRICPRO_3_0_0']]], + ['sinricprodevice_5',['SinricProDevice',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_device.html',1,'SINRICPRO_3_0_0']]], + ['sinricprodimswitch_6',['SinricProDimSwitch',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_dim_switch.html',1,'SINRICPRO_3_0_0']]], + ['sinricprodoorbell_7',['SinricProDoorbell',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_doorbell.html',1,'SINRICPRO_3_0_0']]], + ['sinricprofan_8',['SinricProFan',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan.html',1,'SINRICPRO_3_0_0']]], + ['sinricprofanus_9',['SinricProFanUS',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_fan_u_s.html',1,'SINRICPRO_3_0_0']]], + ['sinricprogaragedoor_10',['SinricProGarageDoor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_garage_door.html',1,'SINRICPRO_3_0_0']]], + ['sinricprolight_11',['SinricProLight',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_light.html',1,'SINRICPRO_3_0_0']]], + ['sinricprolock_12',['SinricProLock',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_lock.html',1,'SINRICPRO_3_0_0']]], + ['sinricpromotionsensor_13',['SinricProMotionsensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_motionsensor.html',1,'SINRICPRO_3_0_0']]], + ['sinricpropowersensor_14',['SinricProPowerSensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_power_sensor.html',1,'SINRICPRO_3_0_0']]], + ['sinricprospeaker_15',['SinricProSpeaker',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_speaker.html',1,'SINRICPRO_3_0_0']]], + ['sinricproswitch_16',['SinricProSwitch',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_switch.html',1,'SINRICPRO_3_0_0']]], + ['sinricprotemperaturesensor_17',['SinricProTemperaturesensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_temperaturesensor.html',1,'SINRICPRO_3_0_0']]], + ['sinricprothermostat_18',['SinricProThermostat',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_thermostat.html',1,'SINRICPRO_3_0_0']]], + ['sinricprotv_19',['SinricProTV',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_t_v.html',1,'SINRICPRO_3_0_0']]], + ['sinricprowindowac_20',['SinricProWindowAC',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_sinric_pro_window_a_c.html',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/classes_c.js b/docs/search/classes_c.js index ea23053..82062ff 100644 --- a/docs/search/classes_c.js +++ b/docs/search/classes_c.js @@ -1,10 +1,10 @@ var searchData= [ - ['temperaturesensor_323',['TemperatureSensor',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_temperature_sensor.html',1,'SINRICPRO_2_9_17']]], - ['temperaturesensor_3c_20sinricprotemperaturesensor_20_3e_324',['TemperatureSensor< SinricProTemperaturesensor >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_temperature_sensor.html',1,'SINRICPRO_2_9_17']]], - ['temperaturesensor_3c_20sinricprothermostat_20_3e_325',['TemperatureSensor< SinricProThermostat >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_temperature_sensor.html',1,'SINRICPRO_2_9_17']]], - ['thermostatcontroller_326',['ThermostatController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html',1,'SINRICPRO_2_9_17']]], - ['thermostatcontroller_3c_20sinricprothermostat_20_3e_327',['ThermostatController< SinricProThermostat >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html',1,'SINRICPRO_2_9_17']]], - ['thermostatcontroller_3c_20sinricprowindowac_20_3e_328',['ThermostatController< SinricProWindowAC >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_thermostat_controller.html',1,'SINRICPRO_2_9_17']]], - ['togglecontroller_329',['ToggleController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_toggle_controller.html',1,'SINRICPRO_2_9_17']]] + ['temperaturesensor_0',['TemperatureSensor',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html',1,'SINRICPRO_3_0_0']]], + ['temperaturesensor_3c_20sinricprotemperaturesensor_20_3e_1',['TemperatureSensor< SinricProTemperaturesensor >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html',1,'SINRICPRO_3_0_0']]], + ['temperaturesensor_3c_20sinricprothermostat_20_3e_2',['TemperatureSensor< SinricProThermostat >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_temperature_sensor.html',1,'SINRICPRO_3_0_0']]], + ['thermostatcontroller_3',['ThermostatController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html',1,'SINRICPRO_3_0_0']]], + ['thermostatcontroller_3c_20sinricprothermostat_20_3e_4',['ThermostatController< SinricProThermostat >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html',1,'SINRICPRO_3_0_0']]], + ['thermostatcontroller_3c_20sinricprowindowac_20_3e_5',['ThermostatController< SinricProWindowAC >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_thermostat_controller.html',1,'SINRICPRO_3_0_0']]], + ['togglecontroller_6',['ToggleController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_toggle_controller.html',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/classes_d.js b/docs/search/classes_d.js index eec743e..403193d 100644 --- a/docs/search/classes_d.js +++ b/docs/search/classes_d.js @@ -1,6 +1,6 @@ var searchData= [ - ['volumecontroller_330',['VolumeController',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html',1,'SINRICPRO_2_9_17']]], - ['volumecontroller_3c_20sinricprospeaker_20_3e_331',['VolumeController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html',1,'SINRICPRO_2_9_17']]], - ['volumecontroller_3c_20sinricprotv_20_3e_332',['VolumeController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__2__9__17_1_1_volume_controller.html',1,'SINRICPRO_2_9_17']]] + ['volumecontroller_0',['VolumeController',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html',1,'SINRICPRO_3_0_0']]], + ['volumecontroller_3c_20sinricprospeaker_20_3e_1',['VolumeController< SinricProSpeaker >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html',1,'SINRICPRO_3_0_0']]], + ['volumecontroller_3c_20sinricprotv_20_3e_2',['VolumeController< SinricProTV >',['../class_s_i_n_r_i_c_p_r_o__3__0__0_1_1_volume_controller.html',1,'SINRICPRO_3_0_0']]] ]; diff --git a/docs/search/close.svg b/docs/search/close.svg index a933eea..337d6cc 100644 --- a/docs/search/close.svg +++ b/docs/search/close.svg @@ -1,27 +1,14 @@ + - - - - image/svg+xml - - - - - + + + + + + diff --git a/docs/search/mag_d.svg b/docs/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/docs/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/docs/search/mag_sel.svg b/docs/search/mag_sel.svg index 03626f6..553dba8 100644 --- a/docs/search/mag_sel.svg +++ b/docs/search/mag_sel.svg @@ -1,59 +1,17 @@ - + - - - - image/svg+xml - - - - - + > - + /> + /> diff --git a/docs/search/mag_seld.svg b/docs/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/docs/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/docs/search/namespaces_0.js b/docs/search/namespaces_0.js index def7f6f..c64683a 100644 --- a/docs/search/namespaces_0.js +++ b/docs/search/namespaces_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['sinricpro_5f2_5f9_5f17_333',['SINRICPRO_2_9_17',['../namespace_s_i_n_r_i_c_p_r_o__2__9__17.html',1,'']]] + ['sinricpro_5f3_5f0_5f0_0',['SINRICPRO_3_0_0',['../namespace_s_i_n_r_i_c_p_r_o__3__0__0.html',1,'']]] ]; diff --git a/docs/search/pages_0.js b/docs/search/pages_0.js index d7aaa6f..fe5ef05 100644 --- a/docs/search/pages_0.js +++ b/docs/search/pages_0.js @@ -1,4 +1,5 @@ var searchData= [ - ['sinricpro_20_28esp8266_20_2f_20esp32_20sdk_29_439',['SinricPro (ESP8266 / ESP32 SDK)',['../index.html',1,'']]] + ['esp32_20rp2040_0',['SinricPro (ESP8266 / ESP32 / RP2040)',['../index.html',1,'']]], + ['esp8266_20esp32_20rp2040_1',['SinricPro (ESP8266 / ESP32 / RP2040)',['../index.html',1,'']]] ]; diff --git a/docs/search/pages_1.js b/docs/search/pages_1.js new file mode 100644 index 0000000..f21a22e --- /dev/null +++ b/docs/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['rp2040_0',['SinricPro (ESP8266 / ESP32 / RP2040)',['../index.html',1,'']]] +]; diff --git a/docs/search/pages_2.js b/docs/search/pages_2.js new file mode 100644 index 0000000..549248b --- /dev/null +++ b/docs/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['sinricpro_20esp8266_20esp32_20rp2040_0',['SinricPro (ESP8266 / ESP32 / RP2040)',['../index.html',1,'']]] +]; diff --git a/docs/search/search.css b/docs/search/search.css index 9074198..19f76f9 100644 --- a/docs/search/search.css +++ b/docs/search/search.css @@ -1,10 +1,33 @@ -/*---------------- Search Box */ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} #MSearchBox { + display: inline-block; white-space : nowrap; - background: white; + background: var(--search-background-color); border-radius: 0.65em; - box-shadow: inset 0.5px 0.5px 3px 0px #555; + box-shadow: var(--search-box-shadow); z-index: 102; } @@ -17,28 +40,47 @@ #MSearchSelect { display: inline-block; vertical-align: middle; - height: 1.4em; - padding: 0 0 0 0.3em; - margin: 0; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; } + #MSearchField { display: inline-block; vertical-align: middle; width: 7.5em; - height: 1.1em; + height: 19px; margin: 0 0.15em; padding: 0; line-height: 1em; border:none; - color: #909090; + color: var(--search-foreground-color); outline: none; - font-family: Arial, Verdana, sans-serif; + font-family: var(--font-family-search); -webkit-border-radius: 0px; border-radius: 0px; background: none; } +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} #MSearchBox .right { display: inline-block; @@ -59,23 +101,15 @@ } #MSearchCloseImg { - height: 1.4em; padding: 0.3em; margin: 0; } .MSearchBoxActive #MSearchField { - color: #000000; + color: var(--search-active-color); } -#main-menu > li:last-child { - /* This
  • object is the parent of the search bar */ - display: flex; - justify-content: center; - align-items: center; - height: 36px; - margin-right: 1em; -} + /*---------------- Search filter selection */ @@ -83,8 +117,8 @@ display: none; position: absolute; left: 0; top: 0; - border: 1px solid #90A5CE; - background-color: #F9FAFC; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); z-index: 10001; padding-top: 4px; padding-bottom: 4px; @@ -97,7 +131,7 @@ } .SelectItem { - font: 8pt Arial, Verdana, sans-serif; + font: 8pt var(--font-family-search); padding-left: 2px; padding-right: 12px; border: 0px; @@ -105,7 +139,7 @@ span.SelectionMark { margin-right: 4px; - font-family: monospace; + font-family: var(--font-family-monospace); outline-style: none; text-decoration: none; } @@ -113,7 +147,7 @@ span.SelectionMark { a.SelectItem { display: block; outline-style: none; - color: #000000; + color: var(--search-filter-foreground-color); text-decoration: none; padding-left: 6px; padding-right: 12px; @@ -121,14 +155,14 @@ a.SelectItem { a.SelectItem:focus, a.SelectItem:active { - color: #000000; + color: var(--search-filter-foreground-color); outline-style: none; text-decoration: none; } a.SelectItem:hover { - color: #FFFFFF; - background-color: #3D578C; + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); outline-style: none; text-decoration: none; cursor: pointer; @@ -138,7 +172,7 @@ a.SelectItem:hover { /*---------------- Search results window */ iframe#MSearchResults { - width: 60ex; + /*width: 60ex;*/ height: 15em; } @@ -146,9 +180,12 @@ iframe#MSearchResults { display: none; position: absolute; left: 0; top: 0; - border: 1px solid #000; - background-color: #EEF1F7; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); z-index:10000; + width: 300px; + height: 400px; + overflow: auto; } /* ----------------------------------- */ @@ -156,7 +193,6 @@ iframe#MSearchResults { #SRIndex { clear:both; - padding-bottom: 15px; } .SREntry { @@ -169,8 +205,9 @@ iframe#MSearchResults { padding: 1px 5px; } -body.SRPage { +div.SRPage { margin: 5px 2px; + background-color: var(--search-results-background-color); } .SRChildren { @@ -182,17 +219,18 @@ body.SRPage { } .SRSymbol { - font-weight: bold; - color: #425E97; - font-family: Arial, Verdana, sans-serif; + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); text-decoration: none; outline: none; } a.SRScope { display: block; - color: #425E97; - font-family: Arial, Verdana, sans-serif; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; text-decoration: none; outline: none; } @@ -204,14 +242,14 @@ a.SRScope:focus, a.SRScope:active { span.SRScope { padding-left: 4px; - font-family: Arial, Verdana, sans-serif; + font-family: var(--font-family-search); } .SRPage .SRStatus { padding: 2px 5px; font-size: 8pt; font-style: italic; - font-family: Arial, Verdana, sans-serif; + font-family: var(--font-family-search); } .SRResult { @@ -225,14 +263,10 @@ div.searchresults { /*---------------- External search page results */ -.searchresult { - background-color: #F0F3F8; -} - .pages b { color: white; padding: 5px 5px 3px 5px; - background-image: url("../tab_a.png"); + background-image: var(--nav-gradient-active-image-parent); background-repeat: repeat-x; text-shadow: 0 1px 1px #000000; } diff --git a/docs/search/search.js b/docs/search/search.js index fb226f7..6fd40c6 100644 --- a/docs/search/search.js +++ b/docs/search/search.js @@ -73,6 +73,8 @@ function getYPos(item) return y; } +var searchResults = new SearchResults("searchResults"); + /* A class handling everything associated with the search panel. Parameters: @@ -80,7 +82,7 @@ function getYPos(item) storing this instance. Is needed to be able to set timeouts. resultPath - path to use for external files */ -function SearchBox(name, resultsPath, inFrame, label, extension) +function SearchBox(name, resultsPath, extension) { if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } if (!extension || extension == "") { extension = ".html"; } @@ -96,8 +98,6 @@ function SearchBox(name, resultsPath, inFrame, label, extension) this.hideTimeout = 0; this.searchIndex = 0; this.searchActive = false; - this.insideFrame = inFrame; - this.searchLabel = label; this.extension = extension; // ----------- DOM Elements @@ -136,30 +136,14 @@ function SearchBox(name, resultsPath, inFrame, label, extension) var searchSelectWindow = this.DOMSearchSelectWindow(); var searchField = this.DOMSearchSelect(); - if (this.insideFrame) - { - var left = getXPos(searchField); - var top = getYPos(searchField); - left += searchField.offsetWidth + 6; - top += searchField.offsetHeight; - - // show search selection popup - searchSelectWindow.style.display='block'; - left -= searchSelectWindow.offsetWidth; - searchSelectWindow.style.left = left + 'px'; - searchSelectWindow.style.top = top + 'px'; - } - else - { - var left = getXPos(searchField); - var top = getYPos(searchField); - top += searchField.offsetHeight; + var left = getXPos(searchField); + var top = getYPos(searchField); + top += searchField.offsetHeight; - // show search selection popup - searchSelectWindow.style.display='block'; - searchSelectWindow.style.left = left + 'px'; - searchSelectWindow.style.top = top + 'px'; - } + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; // stop selection hide timer if (this.hideTimeout) @@ -172,7 +156,7 @@ function SearchBox(name, resultsPath, inFrame, label, extension) this.OnSearchSelectHide = function() { - this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()", + this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), this.closeSelectionTimeout); } @@ -205,11 +189,13 @@ function SearchBox(name, resultsPath, inFrame, label, extension) } else { - window.frames.MSearchResults.postMessage("take_focus", "*"); + var elem = searchResults.NavNext(0); + if (elem) elem.focus(); } } else if (e.keyCode==27) // Escape out of the search field { + e.stopPropagation(); this.DOMSearchField().blur(); this.DOMPopupSearchResultsWindow().style.display = 'none'; this.DOMSearchClose().style.display = 'none'; @@ -226,7 +212,7 @@ function SearchBox(name, resultsPath, inFrame, label, extension) if (searchValue != "") // non-empty search { // set timer for search update - this.keyTimeout = setTimeout(this.name + '.Search()', + this.keyTimeout = setTimeout(this.Search.bind(this), this.keyTimeoutLength); } else // empty search field @@ -304,6 +290,7 @@ function SearchBox(name, resultsPath, inFrame, label, extension) } else if (e.keyCode==13 || e.keyCode==27) { + e.stopPropagation(); this.OnSelectItem(this.searchIndex); this.CloseSelectionWindow(); this.DOMSearchField().focus(); @@ -341,55 +328,70 @@ function SearchBox(name, resultsPath, inFrame, label, extension) idxChar = searchValue.substr(0, 2); } - var resultsPage; - var resultsPageWithSearch; - var hasResultsPage; + var jsFile; var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); if (idx!=-1) { var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; - resultsPageWithSearch = resultsPage+'?'+escape(searchValue); - hasResultsPage = true; + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; } - else // nothing available for this search term - { - resultsPage = this.resultsPath + '/nomatches' + this.extension; - resultsPageWithSearch = resultsPage; - hasResultsPage = false; + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); } - window.frames.MSearchResults.location = resultsPageWithSearch; var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } - if (domPopupSearchResultsWindow.style.display!='block') - { - var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline-block'; - if (this.insideFrame) - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - domPopupSearchResultsWindow.style.position = 'relative'; - domPopupSearchResultsWindow.style.display = 'block'; - var width = document.body.clientWidth - 8; // the -8 is for IE :-( - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResults.style.width = width + 'px'; - } - else - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - } + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); } this.lastSearchValue = searchValue; - this.lastResultsPage = resultsPage; } // -------- Activation Functions @@ -403,22 +405,15 @@ function SearchBox(name, resultsPath, inFrame, label, extension) ) { this.DOMSearchBox().className = 'MSearchBoxActive'; - - var searchField = this.DOMSearchField(); - - if (searchField.value == this.searchLabel) // clear "Search" term upon entry - { - searchField.value = ''; - this.searchActive = true; - } + this.searchActive = true; } else if (!isActive) // directly remove the panel { this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.DOMSearchField().value = this.searchLabel; this.searchActive = false; this.lastSearchValue = '' this.lastResultsPage = ''; + this.DOMSearchField().value = ''; } } } @@ -647,7 +642,7 @@ function SearchResults(name) } else // return focus to search field { - parent.document.getElementById("MSearchField").focus(); + document.getElementById("MSearchField").focus(); } } else if (this.lastKey==40) // Down @@ -677,8 +672,9 @@ function SearchResults(name) } else if (this.lastKey==27) // Escape { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); } else if (this.lastKey==13) // Enter { @@ -720,8 +716,9 @@ function SearchResults(name) } else if (this.lastKey==27) // Escape { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); } else if (this.lastKey==13) // Enter { @@ -744,9 +741,10 @@ function setClassAttr(elem,attr) elem.setAttribute('className',attr); } -function createResults() +function createResults(resultsPath) { var results = document.getElementById("SRResults"); + results.innerHTML = ''; for (var e=0; e-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/docs/tab_ad.png b/docs/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/docs/tab_sd.png b/docs/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/docs/tabs.css b/docs/tabs.css index 85a0cd5..71c8a47 100644 --- a/docs/tabs.css +++ b/docs/tabs.css @@ -1 +1 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/docs/topics.html b/docs/topics.html new file mode 100644 index 0000000..baabb44 --- /dev/null +++ b/docs/topics.html @@ -0,0 +1,111 @@ + + + + + + + +SinricPro Library: Topics + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    SinricPro Library +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Topics
    +
    +
    +
    Here is a list of all topics with brief descriptions:
    + + + + +
     SinricProMain instance of SinricProClass
     DevicesAvailable devices
     CapabilitiesCapabilities
    +
    +
    +
    + + + + diff --git a/docs/topics.js b/docs/topics.js new file mode 100644 index 0000000..ce12e82 --- /dev/null +++ b/docs/topics.js @@ -0,0 +1,6 @@ +var topics = +[ + [ "SinricPro", "group___sinric_pro.html", "group___sinric_pro" ], + [ "Devices", "group___devices.html", "group___devices" ], + [ "Capabilities", "group___capabilities.html", "group___capabilities" ] +]; \ No newline at end of file