#include <stdint.h>
#include <string.h>
-#if !defined(_WIN32) && !defined(_WIN64)
-#include <stdbool.h>
-#endif
-
#if !defined(DECLSPEC)
#if defined(_WIN32) || defined(_WIN64)
#include <windows.h>
{
cec_logical_address initiator;
cec_logical_address destination;
- bool ack;
- bool eom;
+ int8_t ack;
+ int8_t eom;
cec_opcode opcode;
cec_datapacket parameters;
- bool opcode_set;
+ int8_t opcode_set;
#ifdef __cplusplus
static void format(cec_command &command, cec_logical_address initiator, cec_logical_address destination, cec_opcode opcode)
command.initiator = initiator;
command.destination = destination;
command.opcode = opcode;
- command.opcode_set = true;
+ command.opcode_set = 1;
}
void push_back(uint8_t data)
{
- if (!opcode_set)
+ if (initiator == CECDEVICE_UNKNOWN && destination == CECDEVICE_UNKNOWN)
+ {
+ initiator = (cec_logical_address) (data >> 4);
+ destination = (cec_logical_address) (data & 0xF);
+ }
+ else if (!opcode_set)
{
- opcode_set = true;
+ opcode_set = 1;
opcode = (cec_opcode) data;
}
else
{
initiator = CECDEVICE_UNKNOWN;
destination = CECDEVICE_UNKNOWN;
- ack = false;
- eom = false;
- opcode_set = false;
+ ack = 0;
+ eom = 0;
+ opcode_set = 0;
opcode = CEC_OPCODE_FEATURE_ABORT;
parameters.clear();
};
CEC_VENDOR_UNKNOWN = 0
} vendor_id;
-//default physical address 1.0.0.0
+//default physical address 1.0.0.0, HDMI port 1
#define CEC_DEFAULT_PHYSICAL_ADDRESS 0x1000
#define MSGSTART 0xFF
#define MSGEND 0xFE
#define ESCOFFSET 3
#define CEC_MIN_VERSION 6
#define CEC_LIB_VERSION 7
-#define CEC_SETTLE_DOWN_TIME 1500
#define CEC_BUTTON_TIMEOUT 500
#ifdef __cplusplus