Files
SibIntel1/Source/MasharovDev/commands_model.h
T
2024-04-15 21:17:22 +05:00

130 lines
3.8 KiB
C

#pragma once
#include "commands.h"
#pragma pack(push,1)
/* Для всех команд:
*
* building - номер здания (нумерация по порядку с 0)
* strip - номер светодиодной ленты (ряда квартир) в здании (нумерация по порядку с 0)
* план нумерации зданий и лент будет предоставлен на чертежах в отдельных файлах
* floor - номер этажа (нумерация по порядку, номер нижнего этажа 0)
* приложение должно будет преобразовать номер квартиры в здании в пару чисел (strip,floor)
* в соответствии с планом нумерации светодиодных лент в здании
*
* state:
* 0 - выключить подсветку
* 1 - подсветка первым цветом (например, подсветка всего здания при его выборе)
* 2 - подсветка вторым цветом (например, подсветка выбранных квартир)
* 3 - подсветка белым цветом
*/
// Команда, предотвращающая переход в автоматический режим
#define CMD_NOP 0x00
struct CMD_NOP_T: public TCommand
{
};
/* Команда установки цвета
*
* code:
* 0 - цвет купола в режиме работы с приложением
* 1 - первый цвет подсветки квартир (например, подсветка всего здания при его выборе)
* 2 - второй цвет подсветки квартир (например, подсветка выбранных квартир)
*
* r,g,b - компоненты цвета
*/
#define OPT_COLOR_DOME 0
#define OPT_COLOR_ROOM_1 1
#define OPT_COLOR_ROOM_2 2
#define OPT_COLOR_ROOM_COUNT 2
#define OPT_COLOR_COUNT 3
#define CMD_GET_COLOR 0x01
struct CMD_GET_COLOR_T: public TCommand
{
byte code;
};
#define CMD_SET_COLOR 0x02
struct CMD_SET_COLOR_T: public TCommand
{
byte code;
byte r, g, b;
};
// Команда включения/выключения подсветки всего здания
#define CMD_SET_BUILDING_STATE 0x03
struct CMD_SET_BUILDING_STATE_T: public TCommand
{
byte building;
byte state;
};
// Команда включения/выключения подсветки отдельной квартиры
#define CMD_SET_ROOM_STATE 0x04
struct CMD_SET_ROOM_STATE_T: public TCommand
{
byte building;
byte strip;
byte floor;
byte state;
};
// Команда включения/выключения подсветки всего этажа
#define CMD_SET_FLOOR_STATE 0x05
struct CMD_SET_FLOOR_STATE_T: public TCommand
{
byte building;
byte floor;
byte state;
};
// Команда установки подсветки всех квартир
#define CMD_SET_ALL_STATE 0x06
struct CMD_SET_ALL_STATE_T: public TCommand
{
byte state;
};
// Команда установки скорости смены подсветки купола
// millisec - время в миллисекундах
#define CMD_SET_DOME_TIME 0x07
struct CMD_SET_DOME_TIME_T: public TCommand
{
word millisec;
};
// Команда включения/выключения отдельных частей макета
#define PART_ALL 0xFF
#define PART_DOME 0x01
#define PART_BUILDINGS 0x02
#define PART_STREET_LIGHT 0x04
#define PART_OFFICE_LIGHT 0x08
#define CMD_SET_PART_MODE 0x08
struct CMD_SET_PART_MODE_T: public TCommand
{
byte mode;
byte part;
};
/* Пример отправки команды:
*
* DECLARE_CMD(CMD_SET_BUILDING_STATE, cmd);
* cmd.building = 1;
* cmd.state = 1;
* sendCommand(socket, cmd);
*/
#pragma pack(pop)