parallax,elevators, utp
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
#pragma once
|
||||
|
||||
#ifndef __NO_DEF_STD_TYPES
|
||||
typedef unsigned char byte;
|
||||
typedef unsigned short word;
|
||||
typedef unsigned long dword;
|
||||
#endif
|
||||
|
||||
#pragma pack(push,1)
|
||||
|
||||
struct TCommand
|
||||
{
|
||||
byte size;
|
||||
byte command;
|
||||
};
|
||||
|
||||
#define DECLARE_CMD_DATA(cmd) cmd##_T cmd##_D
|
||||
#define DECLARE_CMD(cmd, var) cmd##_T var; \
|
||||
var.size = sizeof(var); \
|
||||
var.command = cmd;
|
||||
|
||||
/*
|
||||
* В классе CSocket должен быть реализован метод
|
||||
* write(const char *buffer, size_t size)
|
||||
*/
|
||||
|
||||
template <class CSocket>
|
||||
void sendCommand(CSocket &socket, const TCommand &command)
|
||||
{
|
||||
socket.write(reinterpret_cast<const char*>(&command), command.size);
|
||||
}
|
||||
|
||||
#pragma pack(pop)
|
||||
@@ -0,0 +1,129 @@
|
||||
#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)
|
||||
Reference in New Issue
Block a user