1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #ifndef __LAMP_CONTROLLER_H__
- #define __LAMP_CONTROLLER_H__
- #include "mcp_server.h"
- class LampController {
- private:
- bool power_ = false;
- gpio_num_t gpio_num_;
- public:
- LampController(gpio_num_t gpio_num) : gpio_num_(gpio_num) {
- gpio_config_t config = {
- .pin_bit_mask = (1ULL << gpio_num_),
- .mode = GPIO_MODE_OUTPUT,
- .pull_up_en = GPIO_PULLUP_DISABLE,
- .pull_down_en = GPIO_PULLDOWN_DISABLE,
- .intr_type = GPIO_INTR_DISABLE,
- };
- ESP_ERROR_CHECK(gpio_config(&config));
- gpio_set_level(gpio_num_, 0);
- auto& mcp_server = McpServer::GetInstance();
- mcp_server.AddTool("self.lamp.get_state", "Get the power state of the lamp", PropertyList(), [this](const PropertyList& properties) -> ReturnValue {
- return power_ ? "{\"power\": true}" : "{\"power\": false}";
- });
- mcp_server.AddTool("self.lamp.turn_on", "Turn on the lamp", PropertyList(), [this](const PropertyList& properties) -> ReturnValue {
- power_ = true;
- gpio_set_level(gpio_num_, 1);
- return true;
- });
- mcp_server.AddTool("self.lamp.turn_off", "Turn off the lamp", PropertyList(), [this](const PropertyList& properties) -> ReturnValue {
- power_ = false;
- gpio_set_level(gpio_num_, 0);
- return true;
- });
- }
- };
- #endif // __LAMP_CONTROLLER_H__
|