X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=include%2Fcectypes.h;h=5f2edc2f59a604eb01bf9065945bb1be350be150;hb=e0407d3d1acb140e344b95c248259474a44ad89b;hp=2ae9043e6d1824605e893a8e59e44d2bd3f71407;hpb=a3269a0a9e8973e29cfe073dd8e558aad173f984;p=deb_libcec.git diff --git a/include/cectypes.h b/include/cectypes.h index 2ae9043..5f2edc2 100644 --- a/include/cectypes.h +++ b/include/cectypes.h @@ -198,13 +198,14 @@ typedef enum CEC_PLAY_MODE_SLOW_REVERSE_MAX_SPEED = 0x1B } ECecPlayMode; -typedef enum +typedef enum cec_power_status { CEC_POWER_STATUS_ON = 0x00, CEC_POWER_STATUS_STANDBY = 0x01, CEC_POWER_STATUS_IN_TRANSITION_STANDBY_TO_ON = 0x02, - CEC_POWER_STATUS_IN_TRANSITION_ON_TO_STANDBY = 0x03 -} ECecPowerStatus; + CEC_POWER_STATUS_IN_TRANSITION_ON_TO_STANDBY = 0x03, + CEC_POWER_STATUS_UNKNOWN = 0x99 +} cec_power_status; typedef enum { @@ -598,6 +599,15 @@ typedef struct cec_datapacket uint8_t size; #ifdef __cplusplus + cec_datapacket &operator =(const struct cec_datapacket &packet) + { + clear(); + for (uint8_t iPtr = 0; iPtr < packet.size; iPtr++) + push_back(packet[iPtr]); + + return *this; + } + bool empty(void) const { return size == 0; } bool full(void) const { return size == 100; } uint8_t operator[](uint8_t pos) const { return pos < size ? data[pos] : 0; } @@ -641,17 +651,30 @@ typedef struct cec_command cec_opcode opcode; cec_datapacket parameters; int8_t opcode_set; - int32_t ack_timeout; + int32_t transmit_timeout; #ifdef __cplusplus + cec_command &operator =(const struct cec_command &command) + { + initiator = command.initiator; + destination = command.destination; + ack = command.ack; + eom = command.eom; + opcode = command.opcode; + opcode_set = command.opcode_set; + transmit_timeout = command.transmit_timeout; + parameters = command.parameters; + + return *this; + } + static void format(cec_command &command, cec_logical_address initiator, cec_logical_address destination, cec_opcode opcode) { command.clear(); - command.initiator = initiator; - command.destination = destination; - command.opcode = opcode; - command.opcode_set = 1; - command.ack_timeout = 1000; + command.initiator = initiator; + command.destination = destination; + command.opcode = opcode; + command.opcode_set = 1; } void push_back(uint8_t data) @@ -672,13 +695,13 @@ typedef struct cec_command void clear(void) { - initiator = CECDEVICE_UNKNOWN; - destination = CECDEVICE_UNKNOWN; - ack = 0; - eom = 0; - opcode_set = 0; - opcode = CEC_OPCODE_FEATURE_ABORT; - ack_timeout = 1000; + initiator = CECDEVICE_UNKNOWN; + destination = CECDEVICE_UNKNOWN; + ack = 0; + eom = 0; + opcode_set = 0; + opcode = CEC_OPCODE_FEATURE_ABORT; + transmit_timeout = 1000; parameters.clear(); }; #endif @@ -689,7 +712,25 @@ typedef enum cec_vendor_id CEC_VENDOR_SAMSUNG = 0x00F0, CEC_VENDOR_LG = 0xE091, CEC_VENDOR_UNKNOWN = 0 -} vendor_id; +} cec_vendor_id; + +typedef struct cec_vendor +{ + const char *AsString(void) const + { + switch (vendor) + { + case CEC_VENDOR_SAMSUNG: + return "Samsung"; + case CEC_VENDOR_LG: + return "LG"; + default: + return "Unknown"; + } + } + + cec_vendor_id vendor; +} cec_vendor; //default physical address 1.0.0.0, HDMI port 1 #define CEC_DEFAULT_PHYSICAL_ADDRESS 0x1000