13 #ifndef __KDRIVE_EXPRESS_ACCESS_H__
14 #define __KDRIVE_EXPRESS_ACCESS_H__
26 #define KDRIVE_MAX_TUNNEL_INFO_ITEMS (63)
227 const char* ip_address,
229 const char* iface_address,
kdriveExpress_API error_t kdrive_ap_set_ip_tunn_credentials(int32_t ap, uint8_t user_id, const char *password)
Sets the user id and the security password for the KNXnet/IP tunneling connection.
kdriveExpress_API error_t kdrive_ap_register_sec_telegram_callback(int32_t ap, kdrive_ap_telegram_callback c, void *user_data, uint32_t *key)
Registers a callback function.
kdriveExpress_API error_t kdrive_ap_get_filter_dest_addr(int32_t ap, bool_t *is_enabled)
Gets the destination individual address filter setting.
kdriveExpress_API error_t kdrive_ap_group_response(int32_t ap, uint16_t address, const uint8_t *value, uint32_t bits)
Sends a GroupValue_Response Telegram.
kdriveExpress_API error_t kdrive_ap_get_group_data(const uint8_t telegram[], uint32_t telegram_len, uint8_t *data, uint32_t *data_len)
Extracts the Group Value data from the KNX telegram.
kdriveExpress_API error_t kdrive_ap_is_ip_tunn_secure(int32_t ap, bool_t *secured)
Only has works for knxnet ip tunneling ports, returns if security is enabled or not.
kdriveExpress_API error_t kdrive_ap_get_bus_state(int32_t ap, bool_t use_cache, uint32_t *bus_state)
Reads the current bus state from the interface (use_cache == false) or gets the last status of the kn...
struct ip_rout_info_t ip_rout_info_t
Structure holding ip routing information.
kdriveExpress_API error_t kdrive_ap_set_rf_domain_addr(int32_t ap, const uint8_t da[KDRIVE_DA_LEN])
Sets the Domain Address of the Local Device (KNX Interface Device)
kdriveExpress_API error_t kdrive_ap_packet_trace_connect(int32_t ap)
Starts the Packet Trace, for a specific access port.
struct ip_tunn_dev_t ip_tunn_dev_t
Structure holding ip tunneling device information.
kdriveExpress_API error_t kdrive_ap_is_ip_rout_secure(int32_t ap, bool_t *secured)
Only has works for knxnet ip routing ports, returns if security is enabled or not.
kdriveExpress_API error_t kdrive_ap_set_ip_tunn_requested_ia(int32_t ap, uint16_t address)
Sets the (optional) requested individual address This function is used for KNXnet/IP v2 devices.
kdriveExpress_API error_t kdrive_ap_open_ip_nat(int32_t ap, const char *ip_address, const char *iface_address)
kdriveExpress_API error_t kdrive_ap_get_src(const uint8_t telegram[], uint32_t telegram_len, uint16_t *address)
Extracts the Source Address from the Telegram.
kdriveExpress_API error_t kdrive_ap_read_ip_tunn_device_info(int32_t ap, const char *ip_address, uint16_t port, const char *iface_address, ip_tunn_dev_t *device_info)
Gets the information for one specific tunneling device.
kdriveExpress_API error_t kdrive_ap_set_filter_rf_domain_addr(int32_t ap, bool_t enable)
Enable or disable filter rf domain address for L-Data.ind telegrams.
kdriveExpress_API error_t kdrive_ap_group_write(int32_t ap, uint16_t address, const uint8_t *value, uint32_t bits)
Sends a GroupValue_Write Telegram The length is specified in bits to enable values less than one byte...
kdriveExpress_API error_t kdrive_ap_set_additional_ind_addr(int32_t ap, const uint16_t addresses[], uint16_t addresses_len)
Sets the Additional Individual Addresses of the Local Device (KNX Interface Device)
kdriveExpress_API uint32_t kdrive_ap_enum_usb(int32_t ap)
Scan for all KNX USB Interface devices.
void(* kdrive_ap_telegram_callback)(const uint8_t telegram[], uint32_t telegram_len, void *user_data)
Callback function type (pointer to function definition)
Definition: kdrive_express_access.h:631
kdriveExpress_API bool_t kdrive_ap_is_group_write(const uint8_t telegram[], uint32_t telegram_len)
Determines if the specified telegram is a GroupValue_Write telegram.
kdriveExpress_API error_t kdrive_ap_get_filter_rf_domain_addr(int32_t ap, bool_t *is_enabled)
Gets the rf domain adrress filter setting.
kdriveExpress_API bool_t kdrive_ap_release(int32_t ap)
Releases the AccessPort interface.
kdriveExpress_API bool_t kdrive_ap_is_open(int32_t ap)
Returns whether the access port is open.
kdriveExpress_API int32_t kdrive_ap_create(void)
Creates an internal AccessPort interface This should be the first function called when working with t...
kdriveExpress_API error_t kdrive_ap_get_serial_no(int32_t ap, uint8_t sn[KDRIVE_SN_LEN])
Gets the Serial Number of the Local Device (KNX Interface Device)
kdriveExpress_API error_t kdrive_ap_set_ip_tunn_user_id(int32_t ap, uint8_t user_id)
Sets the security user id for the KNXnet/IP tunneling connection.
kdriveExpress_API error_t kdrive_ap_set_ind_addr(int32_t ap, uint16_t address)
Sets the Individual Address of the Local Device (KNX Interface Device)
kdriveExpress_API error_t kdrive_ap_close(int32_t ap)
Closes the access port If the access port is not open nothing happens.
kdriveExpress_API error_t kdrive_ap_set_keyring(int32_t ap, int32_t keyring)
Sets the used knx keyring project.
kdriveExpress_API error_t kdrive_ap_set_ip_rout_backbone_key(int32_t ap, const char *key)
Sets the backbone key for the KNXnet/IP routing connection.
kdriveExpress_API error_t kdrive_ap_group_read(int32_t ap, uint16_t address)
Sends a GroupValue_Read Telegram on the Access Port This function does not wait for a GroupValue_Resp...
kdriveExpress_API error_t kdrive_ap_set_packet_trace_callback(int32_t ap, kdrive_ap_packet_trace_callback c, void *user_data)
Sets the packet trace callback function, for a specific access port.
kdriveExpress_API error_t kdrive_ap_enable_queue(int32_t ap, bool_t enabled)
Enables/Disables the receive queue for the access port.
kdriveExpress_API error_t kdrive_ap_open_ip_tunn(int32_t ap, const char *ip_address, uint16_t port, const char *iface_address)
Opens a connection to a KNX IP Tunneling Interface device on a specific network interface or default ...
kdriveExpress_API error_t kdrive_ap_get_ip_tunn_user_id(int32_t ap, uint8_t *user_id)
Gets the security user id for the KNXnet/IP tunneling connection.
kdriveExpress_API error_t kdrive_ap_get_additional_ind_addr(int32_t ap, uint16_t addresses[], uint32_t *addresses_len)
Gets the Additional Individual Addresses of the Local Device (KNX Interface Device)
kdriveExpress_API error_t kdrive_ap_set_filter_dest_addr(int32_t ap, bool_t enable)
Enable or disable filter destination individual address for L-Data.ind telegrams.
kdriveExpress_API error_t kdrive_ap_open_usb(int32_t ap, uint32_t iface_index)
Opens a connection to a KNX USB Interface device iface_index should be in the range 0....
kdriveExpress_API error_t kdrive_ap_set_layer(int32_t ap, uint16_t layer)
Sets the Layer of the Local Device (KNX Interface Device)
kdriveExpress_API error_t kdrive_ap_packet_trace_disconnect(int32_t ap)
Stops the Packet Trace.
kdriveExpress_API bool_t kdrive_ap_is_data_sec(const uint8_t telegram[], uint32_t telegram_len)
Check if the telegram is a data secure one.
kdriveExpress_API error_t kdrive_ap_is_compressed_group_data(const uint8_t telegram[], uint32_t telegram_len, bool_t *is_commpressed)
Determines if the group value size is compressed (6 bits or less).
kdriveExpress_API uint32_t kdrive_ap_receive(int32_t ap, uint8_t telegram[], uint32_t telegram_len, uint32_t timeout)
Waits for an inbound KNX telegram and (if received) copies the data into the telegram buffer.
kdriveExpress_API error_t kdrive_ap_open_ip_rout(int32_t ap, const char *multicast_address, const char *iface_address, bool_t secured)
Creates an KNXnet/IP Routing access port.
kdriveExpress_API error_t kdrive_ap_get_layer(int32_t ap, uint16_t *layer)
Gets the Layer of the Local Device (KNX Interface Device) The default value is Link Layer.
kdriveExpress_API error_t kdrive_ap_get_rf_domain_addr(int32_t ap, uint8_t da[KDRIVE_DA_LEN])
Gets the Domain Address of the Local Device (KNX Interface Device)
kdriveExpress_API error_t kdrive_ap_get_max_apdu_length(int32_t ap, uint32_t *max_apdu_length)
Gets the maximum supported apdu length of the Local Device (KNX Interface Device)
kdriveExpress_API error_t kdrive_ap_set_data_sec_own_seq_num(int32_t ap, const uint8_t seq_num[6])
Set the own sending sequence number.
kdriveExpress_API error_t kdrive_ap_send(int32_t ap, const uint8_t telegram[], uint32_t telegram_len)
Sends a KNX Telegram on the Access Port.
kdriveExpress_API error_t kdrive_ap_get_apci(const uint8_t telegram[], uint32_t telegram_len, uint16_t *apci)
Extracts the APCI from the Telegram.
kdriveExpress_API error_t kdrive_ap_open_tiny_serial(int32_t ap, const char *serial_device)
Opens a connection to the KNX Tiny Serial Interface 810.
kdriveExpress_API error_t kdrive_ap_get_data_sec(int32_t ap, enum data_sec_t *dataSec)
Get the Data Security usage of the access point.
kdriveExpress_API error_t kdrive_ap_open_ip_ex(int32_t ap, const char *ip_address, const char *iface_address)
kdriveExpress_API error_t kdrive_ap_set_serial_no(int32_t ap, const uint8_t sn[KDRIVE_SN_LEN])
Sets the Serial Number of the Local Device (KNX Interface Device)
kdriveExpress_API error_t kdrive_ap_enum_usb_ex(usb_dev_t items[], uint32_t *items_length)
Scan for all KNX USB Interface devices.
kdriveExpress_API error_t kdrive_ap_set_tunnel_ind_addr(int32_t ap, uint16_t address)
Sets the used Individual Address of the tunnel connection (KNX Interface Device).
void(* kdrive_ap_packet_trace_callback)(const uint8_t telegram[], uint32_t telegram_len, int32_t direction, void *user_data)
Packet Trace callback function type (pointer to function definition)
Definition: kdrive_express_access.h:1088
kdriveExpress_API error_t kdrive_ap_set_ip_tunn_auth_code(int32_t ap, const char *authentication_code)
Sets the optional authentication code for the KNXnet/IP tunneling connection.
struct usb_dev_t usb_dev_t
Structure holding usb device information.
kdriveExpress_API bool_t kdrive_ap_is_group_response(const uint8_t telegram[], uint32_t telegram_len)
Determines if the specified telegram is a GroupValue_Response telegram.
kdriveExpress_API error_t kdrive_ap_get_message_code(const uint8_t telegram[], uint32_t telegram_len, uint8_t *message_code)
Extracts the Message Code from the Telegram.
kdriveExpress_API error_t kdrive_ap_open_serial_ft12(int32_t ap, const char *serial_device)
Opens a connection to a KNX FT1.2 serial interface.
kdriveExpress_API bool_t kdrive_ap_is_group_read(const uint8_t telegram[], uint32_t telegram_len)
Determines if the specified telegram is a GroupValue_Read telegram.
struct ip_tunn_slot_info_t ip_tunn_slot_info_t
Structure holding ip tunnling slot information.
kdriveExpress_API error_t kdrive_ap_get_dest(const uint8_t telegram[], uint32_t telegram_len, uint16_t *address)
Extracts the Destination Address from the Telegram.
kdriveExpress_API error_t kdrive_ap_get_tunnel_ind_addr(int32_t ap, uint16_t *address)
Gets the used Individual Address of the tunnel connection (KNX Interface Device).
kdriveExpress_API bool_t kdrive_ap_is_group(const uint8_t telegram[], uint32_t telegram_len)
Determines if the specified telegram is a GroupValue telegram This is, one of GroupValue_Read,...
kdriveExpress_API error_t kdrive_ap_register_telegram_callback(int32_t ap, kdrive_ap_telegram_callback c, void *user_data, uint32_t *key)
Registers a callback function.
kdriveExpress_API error_t kdrive_ap_enum_ip_tunn(int32_t ap, ip_tunn_dev_t items[], uint32_t *items_length)
Scans for all KNX IP Tunneling Interface devices The items array must exist (should be pre-allocated ...
kdriveExpress_API error_t kdrive_ap_get_ind_addr(int32_t ap, uint16_t *address)
Gets the Individual Address of the Local Device (KNX Interface Device)
kdriveExpress_API error_t kdrive_ap_enum_ip_rout(int32_t ap, ip_rout_info_t items[], uint32_t *items_length)
Scans for all KNX IP Routing devices The items array must exist (should be pre-allocated by the user)...
kdriveExpress_API error_t kdrive_ap_set_data_sec_device_seq_num(int32_t ap, uint16_t address, const uint8_t seq_num[6])
Set the sequence number of a device.
kdriveExpress_API error_t kdrive_ap_get_serial_number(const uint8_t telegram[], uint32_t telegram_len, uint8_t sn[KDRIVE_SN_LEN])
Extracts the Serial Number from the Additional Info (if available) This is extracted from the Additio...
kdriveExpress_API error_t kdrive_ap_open_ip_tunn_nat(int32_t ap, const char *ip_address, uint16_t port, const char *iface_address)
Opens a connection to a KNX IP Tunneling Interface device on a specific network interface in Network ...
kdriveExpress_API error_t kdrive_ap_open_ip(int32_t ap, const char *ip_address)
kdriveExpress_API uint32_t kdrive_ap_read_group_object(int32_t ap, uint16_t address, uint8_t telegram[], uint32_t telegram_len, uint32_t timeout)
Sends a GroupValue_Read Telegram on the Access Port and waits for a GroupValue_Response indication te...
kdriveExpress_API error_t kdrive_ap_set_data_sec(int32_t ap, enum data_sec_t dataSec)
Set the Data Security of the access point.
kdriveExpress_API error_t kdrive_ap_only_enum_usb(usb_dev_t items[], uint32_t *items_length)
Scan for all KNX USB Interface devices.
kdriveExpress_API error_t kdrive_ap_remove_telegram_callback(int32_t ap, uint32_t key)
Removes (de-registers) a telegram callback.
#define KDRIVE_MAX_TUNNEL_INFO_ITEMS
Maximum of tunneling info elements in ip_tunn_slot_info_t.
Definition: kdrive_express_access.h:26
data_sec_t
Definition: kdrive_express_access.h:814
@ Auto
numbered in the order that the hid driver enumerates the devices
Definition: kdrive_express_access.h:817
@ On
knx media types (bit field, encoding is DPT_Media)
Definition: kdrive_express_access.h:816
@ Off
KNX individual address.
Definition: kdrive_express_access.h:815
#define kdriveExpress_API
Definition: kdrive_express_config.h:89
unsigned short uint16_t
16 bit unsigned char
Definition: kdrive_express_config.h:31
bool bool_t
Definition: kdrive_express_config.h:58
int int32_t
32 bit signed int
Definition: kdrive_express_config.h:35
unsigned int uint32_t
32 bit unsigned char
Definition: kdrive_express_config.h:32
int32_t error_t
Definition: kdrive_express_config.h:47
unsigned char uint8_t
8 bit unsigned char
Definition: kdrive_express_config.h:30
#define KDRIVE_MAC_LEN
The Length of a MAC Address.
Definition: kdrive_express_defs.h:36
#define KDRIVE_DA_LEN
The Length of a KNX Domain Address.
Definition: kdrive_express_defs.h:35
#define KDRIVE_MAX_IP_ADDRESS_LEN
The max length of a formated ip address string e.g.
Definition: kdrive_express_defs.h:41
#define KDRIVE_SN_LEN
The Length of a KNX Serial Number.
Definition: kdrive_express_defs.h:34
#define KDRIVE_MAX_DEVICE_NAME_LEN
The max length of a device friendly name (30 char); (inclusive 1 byte for zero + max utf8 char)
Definition: kdrive_express_defs.h:42
Structure holding ip routing information.
Definition: kdrive_express_access.h:408
char iface_address[KDRIVE_MAX_IP_ADDRESS_LEN]
interface adaptor IP address.
Definition: kdrive_express_access.h:410
uint32_t number_of_devices
Number of found KNXnet/IP Routing devices with the same multicast address and network interface.
Definition: kdrive_express_access.h:411
char multicast_address[KDRIVE_MAX_IP_ADDRESS_LEN]
Multicast IP address in the form "224.0.23.12" for example.
Definition: kdrive_express_access.h:409
Structure holding ip tunneling device information.
Definition: kdrive_express_access.h:176
bool_t prog_mode_enabled
state of the programming mode 0 = off, 1 = on
Definition: kdrive_express_access.h:186
bool_t is_tunneling_secure
is tunneling service secure 0 = false, 1 = true
Definition: kdrive_express_access.h:190
bool_t is_management_secure
is device management service secure 0 = false, 1 = true
Definition: kdrive_express_access.h:191
char iface_address[KDRIVE_MAX_IP_ADDRESS_LEN]
interface adaptor IP address.
Definition: kdrive_express_access.h:179
uint8_t serial_number[KDRIVE_SN_LEN]
serial number
Definition: kdrive_express_access.h:185
uint16_t slot_infos_count
actual number of tunnling slot information items
Definition: kdrive_express_access.h:195
bool_t is_security_supported
supports the interface security (but it is possible that it is not configured) 0 = false,...
Definition: kdrive_express_access.h:189
ip_tunn_slot_info_t slot_infos[KDRIVE_MAX_TUNNEL_INFO_ITEMS]
tunnling slot information items
Definition: kdrive_express_access.h:196
char dev_name[KDRIVE_MAX_DEVICE_NAME_LEN]
device friendly name.
Definition: kdrive_express_access.h:182
char ip_address[KDRIVE_MAX_IP_ADDRESS_LEN]
IP address in the form "192.168.1.47" for example.
Definition: kdrive_express_access.h:178
uint16_t ind_addr
KNX individual address.
Definition: kdrive_express_access.h:183
uint8_t mac_address[KDRIVE_MAC_LEN]
mac address
Definition: kdrive_express_access.h:184
Structure holding ip tunnling slot information.
Definition: kdrive_express_access.h:162
uint16_t status
2 bytes of status bits, currently only the last 3 are used, they are Usable(third bit),...
Definition: kdrive_express_access.h:164
uint16_t address
the individual address of the tunnel
Definition: kdrive_express_access.h:163
Structure holding usb device information.
Definition: kdrive_express_access.h:90
uint32_t usb_vendor_id
usb device vendor id
Definition: kdrive_express_access.h:94
uint16_t media_tytes
knx media types (bit field, encoding is DPT_Media)
Definition: kdrive_express_access.h:92
uint32_t usb_product_id
usb device product id
Definition: kdrive_express_access.h:95
uint32_t internal_usb_index
numbered in the order that the hid driver enumerates the devices
Definition: kdrive_express_access.h:93
uint16_t ind_addr
KNX individual address.
Definition: kdrive_express_access.h:91