/* *********************************************************** * This file was automatically generated on 2021-01-15. * * * * C/C++ Bindings Version 2.1.31 * * * * If you have a bugfix for this file and want to commit it, * * please fix the bug in the generator. You can find a link * * to the generators git repository on tinkerforge.com * *************************************************************/ #ifndef BRICK_MASTER_H #define BRICK_MASTER_H #include "ip_connection.h" #ifdef __cplusplus extern "C" { #endif /** * \defgroup BrickMaster Master Brick */ /** * \ingroup BrickMaster * * Basis to build stacks and has 4 Bricklet ports */ typedef Device Master; /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_STACK_VOLTAGE 1 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_STACK_CURRENT 2 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_EXTENSION_TYPE 3 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_EXTENSION_TYPE 4 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_IS_CHIBI_PRESENT 5 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_CHIBI_ADDRESS 6 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_CHIBI_ADDRESS 7 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_CHIBI_MASTER_ADDRESS 8 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_CHIBI_MASTER_ADDRESS 9 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_CHIBI_SLAVE_ADDRESS 10 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_CHIBI_SLAVE_ADDRESS 11 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_CHIBI_SIGNAL_STRENGTH 12 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_CHIBI_ERROR_LOG 13 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_CHIBI_FREQUENCY 14 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_CHIBI_FREQUENCY 15 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_CHIBI_CHANNEL 16 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_CHIBI_CHANNEL 17 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_IS_RS485_PRESENT 18 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_RS485_ADDRESS 19 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_RS485_ADDRESS 20 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_RS485_SLAVE_ADDRESS 21 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_RS485_SLAVE_ADDRESS 22 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_RS485_ERROR_LOG 23 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_RS485_CONFIGURATION 24 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_RS485_CONFIGURATION 25 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_IS_WIFI_PRESENT 26 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_WIFI_CONFIGURATION 27 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI_CONFIGURATION 28 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_WIFI_ENCRYPTION 29 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI_ENCRYPTION 30 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI_STATUS 31 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_REFRESH_WIFI_STATUS 32 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_WIFI_CERTIFICATE 33 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI_CERTIFICATE 34 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_WIFI_POWER_MODE 35 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI_POWER_MODE 36 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI_BUFFER_INFO 37 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_WIFI_REGULATORY_DOMAIN 38 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI_REGULATORY_DOMAIN 39 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_USB_VOLTAGE 40 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_LONG_WIFI_KEY 41 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_LONG_WIFI_KEY 42 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_WIFI_HOSTNAME 43 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI_HOSTNAME 44 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_STACK_CURRENT_CALLBACK_PERIOD 45 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_STACK_CURRENT_CALLBACK_PERIOD 46 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_STACK_VOLTAGE_CALLBACK_PERIOD 47 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_STACK_VOLTAGE_CALLBACK_PERIOD 48 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_USB_VOLTAGE_CALLBACK_PERIOD 49 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_USB_VOLTAGE_CALLBACK_PERIOD 50 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_STACK_CURRENT_CALLBACK_THRESHOLD 51 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_STACK_CURRENT_CALLBACK_THRESHOLD 52 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_STACK_VOLTAGE_CALLBACK_THRESHOLD 53 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_STACK_VOLTAGE_CALLBACK_THRESHOLD 54 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_USB_VOLTAGE_CALLBACK_THRESHOLD 55 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_USB_VOLTAGE_CALLBACK_THRESHOLD 56 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_DEBOUNCE_PERIOD 57 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_DEBOUNCE_PERIOD 58 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_IS_ETHERNET_PRESENT 65 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_ETHERNET_CONFIGURATION 66 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_ETHERNET_CONFIGURATION 67 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_ETHERNET_STATUS 68 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_ETHERNET_HOSTNAME 69 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_ETHERNET_MAC_ADDRESS 70 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_ETHERNET_WEBSOCKET_CONFIGURATION 71 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_ETHERNET_WEBSOCKET_CONFIGURATION 72 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_ETHERNET_AUTHENTICATION_SECRET 73 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_ETHERNET_AUTHENTICATION_SECRET 74 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_WIFI_AUTHENTICATION_SECRET 75 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI_AUTHENTICATION_SECRET 76 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_CONNECTION_TYPE 77 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_IS_WIFI2_PRESENT 78 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_START_WIFI2_BOOTLOADER 79 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_WRITE_WIFI2_SERIAL_PORT 80 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_READ_WIFI2_SERIAL_PORT 81 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_WIFI2_AUTHENTICATION_SECRET 82 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI2_AUTHENTICATION_SECRET 83 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_WIFI2_CONFIGURATION 84 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI2_CONFIGURATION 85 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI2_STATUS 86 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_WIFI2_CLIENT_CONFIGURATION 87 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI2_CLIENT_CONFIGURATION 88 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_WIFI2_CLIENT_HOSTNAME 89 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI2_CLIENT_HOSTNAME 90 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_WIFI2_CLIENT_PASSWORD 91 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI2_CLIENT_PASSWORD 92 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_WIFI2_AP_CONFIGURATION 93 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI2_AP_CONFIGURATION 94 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_WIFI2_AP_PASSWORD 95 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI2_AP_PASSWORD 96 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SAVE_WIFI2_CONFIGURATION 97 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI2_FIRMWARE_VERSION 98 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_ENABLE_WIFI2_STATUS_LED 99 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_DISABLE_WIFI2_STATUS_LED 100 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_IS_WIFI2_STATUS_LED_ENABLED 101 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_WIFI2_MESH_CONFIGURATION 102 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI2_MESH_CONFIGURATION 103 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_WIFI2_MESH_ROUTER_SSID 104 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI2_MESH_ROUTER_SSID 105 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_WIFI2_MESH_ROUTER_PASSWORD 106 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI2_MESH_ROUTER_PASSWORD 107 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI2_MESH_COMMON_STATUS 108 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI2_MESH_CLIENT_STATUS 109 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_WIFI2_MESH_AP_STATUS 110 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_BRICKLET_XMC_FLASH_CONFIG 111 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_BRICKLET_XMC_FLASH_DATA 112 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_BRICKLETS_ENABLED 113 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_BRICKLETS_ENABLED 114 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_SPITFP_BAUDRATE_CONFIG 231 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_SPITFP_BAUDRATE_CONFIG 232 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_SEND_TIMEOUT_COUNT 233 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_SET_SPITFP_BAUDRATE 234 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_SPITFP_BAUDRATE 235 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_SPITFP_ERROR_COUNT 237 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_ENABLE_STATUS_LED 238 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_DISABLE_STATUS_LED 239 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_IS_STATUS_LED_ENABLED 240 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_PROTOCOL1_BRICKLET_NAME 241 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_CHIP_TEMPERATURE 242 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_RESET 243 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_WRITE_BRICKLET_PLUGIN 246 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_READ_BRICKLET_PLUGIN 247 /** * \ingroup BrickMaster */ #define MASTER_FUNCTION_GET_IDENTITY 255 /** * \ingroup BrickMaster * * Signature: \code void callback(uint16_t current, void *user_data) \endcode * * This callback is triggered periodically with the period that is set by * {@link master_set_stack_current_callback_period}. The parameter is the current * of the sensor. * * The {@link MASTER_CALLBACK_STACK_CURRENT} callback is only triggered if the current has changed * since the last triggering. * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ #define MASTER_CALLBACK_STACK_CURRENT 59 /** * \ingroup BrickMaster * * Signature: \code void callback(uint16_t voltage, void *user_data) \endcode * * This callback is triggered periodically with the period that is set by * {@link master_set_stack_voltage_callback_period}. The parameter is the voltage * of the sensor. * * The {@link MASTER_CALLBACK_STACK_VOLTAGE} callback is only triggered if the voltage has changed * since the last triggering. * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ #define MASTER_CALLBACK_STACK_VOLTAGE 60 /** * \ingroup BrickMaster * * Signature: \code void callback(uint16_t voltage, void *user_data) \endcode * * This callback is triggered periodically with the period that is set by * {@link master_set_usb_voltage_callback_period}. The parameter is the USB * voltage. * * The {@link MASTER_CALLBACK_USB_VOLTAGE} callback is only triggered if the USB voltage has changed * since the last triggering. * * Does not work with hardware version 2.1. * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ #define MASTER_CALLBACK_USB_VOLTAGE 61 /** * \ingroup BrickMaster * * Signature: \code void callback(uint16_t current, void *user_data) \endcode * * This callback is triggered when the threshold as set by * {@link master_set_stack_current_callback_threshold} is reached. * The parameter is the stack current. * * If the threshold keeps being reached, the callback is triggered periodically * with the period as set by {@link master_set_debounce_period}. * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ #define MASTER_CALLBACK_STACK_CURRENT_REACHED 62 /** * \ingroup BrickMaster * * Signature: \code void callback(uint16_t voltage, void *user_data) \endcode * * This callback is triggered when the threshold as set by * {@link master_set_stack_voltage_callback_threshold} is reached. * The parameter is the stack voltage. * * If the threshold keeps being reached, the callback is triggered periodically * with the period as set by {@link master_set_debounce_period}. * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ #define MASTER_CALLBACK_STACK_VOLTAGE_REACHED 63 /** * \ingroup BrickMaster * * Signature: \code void callback(uint16_t voltage, void *user_data) \endcode * * This callback is triggered when the threshold as set by * {@link master_set_usb_voltage_callback_threshold} is reached. * The parameter is the voltage of the sensor. * * If the threshold keeps being reached, the callback is triggered periodically * with the period as set by {@link master_set_debounce_period}. * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ #define MASTER_CALLBACK_USB_VOLTAGE_REACHED 64 /** * \ingroup BrickMaster */ #define MASTER_EXTENSION_TYPE_CHIBI 1 /** * \ingroup BrickMaster */ #define MASTER_EXTENSION_TYPE_RS485 2 /** * \ingroup BrickMaster */ #define MASTER_EXTENSION_TYPE_WIFI 3 /** * \ingroup BrickMaster */ #define MASTER_EXTENSION_TYPE_ETHERNET 4 /** * \ingroup BrickMaster */ #define MASTER_EXTENSION_TYPE_WIFI2 5 /** * \ingroup BrickMaster */ #define MASTER_CHIBI_FREQUENCY_OQPSK_868_MHZ 0 /** * \ingroup BrickMaster */ #define MASTER_CHIBI_FREQUENCY_OQPSK_915_MHZ 1 /** * \ingroup BrickMaster */ #define MASTER_CHIBI_FREQUENCY_OQPSK_780_MHZ 2 /** * \ingroup BrickMaster */ #define MASTER_CHIBI_FREQUENCY_BPSK40_915_MHZ 3 /** * \ingroup BrickMaster */ #define MASTER_RS485_PARITY_NONE 'n' /** * \ingroup BrickMaster */ #define MASTER_RS485_PARITY_EVEN 'e' /** * \ingroup BrickMaster */ #define MASTER_RS485_PARITY_ODD 'o' /** * \ingroup BrickMaster */ #define MASTER_WIFI_CONNECTION_DHCP 0 /** * \ingroup BrickMaster */ #define MASTER_WIFI_CONNECTION_STATIC_IP 1 /** * \ingroup BrickMaster */ #define MASTER_WIFI_CONNECTION_ACCESS_POINT_DHCP 2 /** * \ingroup BrickMaster */ #define MASTER_WIFI_CONNECTION_ACCESS_POINT_STATIC_IP 3 /** * \ingroup BrickMaster */ #define MASTER_WIFI_CONNECTION_AD_HOC_DHCP 4 /** * \ingroup BrickMaster */ #define MASTER_WIFI_CONNECTION_AD_HOC_STATIC_IP 5 /** * \ingroup BrickMaster */ #define MASTER_WIFI_ENCRYPTION_WPA_WPA2 0 /** * \ingroup BrickMaster */ #define MASTER_WIFI_ENCRYPTION_WPA_ENTERPRISE 1 /** * \ingroup BrickMaster */ #define MASTER_WIFI_ENCRYPTION_WEP 2 /** * \ingroup BrickMaster */ #define MASTER_WIFI_ENCRYPTION_NO_ENCRYPTION 3 /** * \ingroup BrickMaster */ #define MASTER_WIFI_EAP_OPTION_OUTER_AUTH_EAP_FAST 0 /** * \ingroup BrickMaster */ #define MASTER_WIFI_EAP_OPTION_OUTER_AUTH_EAP_TLS 1 /** * \ingroup BrickMaster */ #define MASTER_WIFI_EAP_OPTION_OUTER_AUTH_EAP_TTLS 2 /** * \ingroup BrickMaster */ #define MASTER_WIFI_EAP_OPTION_OUTER_AUTH_EAP_PEAP 3 /** * \ingroup BrickMaster */ #define MASTER_WIFI_EAP_OPTION_INNER_AUTH_EAP_MSCHAP 0 /** * \ingroup BrickMaster */ #define MASTER_WIFI_EAP_OPTION_INNER_AUTH_EAP_GTC 4 /** * \ingroup BrickMaster */ #define MASTER_WIFI_EAP_OPTION_CERT_TYPE_CA_CERT 0 /** * \ingroup BrickMaster */ #define MASTER_WIFI_EAP_OPTION_CERT_TYPE_CLIENT_CERT 8 /** * \ingroup BrickMaster */ #define MASTER_WIFI_EAP_OPTION_CERT_TYPE_PRIVATE_KEY 16 /** * \ingroup BrickMaster */ #define MASTER_WIFI_STATE_DISASSOCIATED 0 /** * \ingroup BrickMaster */ #define MASTER_WIFI_STATE_ASSOCIATED 1 /** * \ingroup BrickMaster */ #define MASTER_WIFI_STATE_ASSOCIATING 2 /** * \ingroup BrickMaster */ #define MASTER_WIFI_STATE_ERROR 3 /** * \ingroup BrickMaster */ #define MASTER_WIFI_STATE_NOT_INITIALIZED_YET 255 /** * \ingroup BrickMaster */ #define MASTER_WIFI_POWER_MODE_FULL_SPEED 0 /** * \ingroup BrickMaster */ #define MASTER_WIFI_POWER_MODE_LOW_POWER 1 /** * \ingroup BrickMaster */ #define MASTER_WIFI_DOMAIN_CHANNEL_1TO11 0 /** * \ingroup BrickMaster */ #define MASTER_WIFI_DOMAIN_CHANNEL_1TO13 1 /** * \ingroup BrickMaster */ #define MASTER_WIFI_DOMAIN_CHANNEL_1TO14 2 /** * \ingroup BrickMaster */ #define MASTER_THRESHOLD_OPTION_OFF 'x' /** * \ingroup BrickMaster */ #define MASTER_THRESHOLD_OPTION_OUTSIDE 'o' /** * \ingroup BrickMaster */ #define MASTER_THRESHOLD_OPTION_INSIDE 'i' /** * \ingroup BrickMaster */ #define MASTER_THRESHOLD_OPTION_SMALLER '<' /** * \ingroup BrickMaster */ #define MASTER_THRESHOLD_OPTION_GREATER '>' /** * \ingroup BrickMaster */ #define MASTER_ETHERNET_CONNECTION_DHCP 0 /** * \ingroup BrickMaster */ #define MASTER_ETHERNET_CONNECTION_STATIC_IP 1 /** * \ingroup BrickMaster */ #define MASTER_CONNECTION_TYPE_NONE 0 /** * \ingroup BrickMaster */ #define MASTER_CONNECTION_TYPE_USB 1 /** * \ingroup BrickMaster */ #define MASTER_CONNECTION_TYPE_SPI_STACK 2 /** * \ingroup BrickMaster */ #define MASTER_CONNECTION_TYPE_CHIBI 3 /** * \ingroup BrickMaster */ #define MASTER_CONNECTION_TYPE_RS485 4 /** * \ingroup BrickMaster */ #define MASTER_CONNECTION_TYPE_WIFI 5 /** * \ingroup BrickMaster */ #define MASTER_CONNECTION_TYPE_ETHERNET 6 /** * \ingroup BrickMaster */ #define MASTER_CONNECTION_TYPE_WIFI2 7 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_PHY_MODE_B 0 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_PHY_MODE_G 1 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_PHY_MODE_N 2 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_CLIENT_STATUS_IDLE 0 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_CLIENT_STATUS_CONNECTING 1 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_CLIENT_STATUS_WRONG_PASSWORD 2 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_CLIENT_STATUS_NO_AP_FOUND 3 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_CLIENT_STATUS_CONNECT_FAILED 4 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_CLIENT_STATUS_GOT_IP 5 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_CLIENT_STATUS_UNKNOWN 255 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_AP_ENCRYPTION_OPEN 0 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_AP_ENCRYPTION_WEP 1 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_AP_ENCRYPTION_WPA_PSK 2 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_AP_ENCRYPTION_WPA2_PSK 3 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_AP_ENCRYPTION_WPA_WPA2_PSK 4 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_MESH_STATUS_DISABLED 0 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_MESH_STATUS_WIFI_CONNECTING 1 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_MESH_STATUS_GOT_IP 2 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_MESH_STATUS_MESH_LOCAL 3 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_MESH_STATUS_MESH_ONLINE 4 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_MESH_STATUS_AP_AVAILABLE 5 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_MESH_STATUS_AP_SETUP 6 /** * \ingroup BrickMaster */ #define MASTER_WIFI2_MESH_STATUS_LEAF_AVAILABLE 7 /** * \ingroup BrickMaster */ #define MASTER_COMMUNICATION_METHOD_NONE 0 /** * \ingroup BrickMaster */ #define MASTER_COMMUNICATION_METHOD_USB 1 /** * \ingroup BrickMaster */ #define MASTER_COMMUNICATION_METHOD_SPI_STACK 2 /** * \ingroup BrickMaster */ #define MASTER_COMMUNICATION_METHOD_CHIBI 3 /** * \ingroup BrickMaster */ #define MASTER_COMMUNICATION_METHOD_RS485 4 /** * \ingroup BrickMaster */ #define MASTER_COMMUNICATION_METHOD_WIFI 5 /** * \ingroup BrickMaster */ #define MASTER_COMMUNICATION_METHOD_ETHERNET 6 /** * \ingroup BrickMaster */ #define MASTER_COMMUNICATION_METHOD_WIFI_V2 7 /** * \ingroup BrickMaster * * This constant is used to identify a Master Brick. * * The {@link master_get_identity} function and the * {@link IPCON_CALLBACK_ENUMERATE} callback of the IP Connection have a * \c device_identifier parameter to specify the Brick's or Bricklet's type. */ #define MASTER_DEVICE_IDENTIFIER 13 /** * \ingroup BrickMaster * * This constant represents the display name of a Master Brick. */ #define MASTER_DEVICE_DISPLAY_NAME "Master Brick" /** * \ingroup BrickMaster * * Creates the device object \c master with the unique device ID \c uid and adds * it to the IPConnection \c ipcon. */ void master_create(Master *master, const char *uid, IPConnection *ipcon); /** * \ingroup BrickMaster * * Removes the device object \c master from its IPConnection and destroys it. * The device object cannot be used anymore afterwards. */ void master_destroy(Master *master); /** * \ingroup BrickMaster * * Returns the response expected flag for the function specified by the * \c function_id parameter. It is *true* if the function is expected to * send a response, *false* otherwise. * * For getter functions this is enabled by default and cannot be disabled, * because those functions will always send a response. For callback * configuration functions it is enabled by default too, but can be disabled * via the master_set_response_expected function. For setter functions it is * disabled by default and can be enabled. * * Enabling the response expected flag for a setter function allows to * detect timeouts and other error conditions calls of this setter as well. * The device will then send a response for this purpose. If this flag is * disabled for a setter function then no response is sent and errors are * silently ignored, because they cannot be detected. */ int master_get_response_expected(Master *master, uint8_t function_id, bool *ret_response_expected); /** * \ingroup BrickMaster * * Changes the response expected flag of the function specified by the * \c function_id parameter. This flag can only be changed for setter * (default value: *false*) and callback configuration functions * (default value: *true*). For getter functions it is always enabled. * * Enabling the response expected flag for a setter function allows to detect * timeouts and other error conditions calls of this setter as well. The device * will then send a response for this purpose. If this flag is disabled for a * setter function then no response is sent and errors are silently ignored, * because they cannot be detected. */ int master_set_response_expected(Master *master, uint8_t function_id, bool response_expected); /** * \ingroup BrickMaster * * Changes the response expected flag for all setter and callback configuration * functions of this device at once. */ int master_set_response_expected_all(Master *master, bool response_expected); /** * \ingroup BrickMaster * * Registers the given \c function with the given \c callback_id. The * \c user_data will be passed as the last parameter to the \c function. */ void master_register_callback(Master *master, int16_t callback_id, void (*function)(void), void *user_data); /** * \ingroup BrickMaster * * Returns the API version (major, minor, release) of the bindings for this * device. */ int master_get_api_version(Master *master, uint8_t ret_api_version[3]); /** * \ingroup BrickMaster * * Returns the stack voltage. The stack voltage is the * voltage that is supplied via the stack, i.e. it is given by a * Step-Down or Step-Up Power Supply. * * \note * It is not possible to measure voltages supplied per PoE or USB with this function. */ int master_get_stack_voltage(Master *master, uint16_t *ret_voltage); /** * \ingroup BrickMaster * * Returns the stack current. The stack current is the * current that is drawn via the stack, i.e. it is given by a * Step-Down or Step-Up Power Supply. * * \note * It is not possible to measure the current drawn via PoE or USB with this function. */ int master_get_stack_current(Master *master, uint16_t *ret_current); /** * \ingroup BrickMaster * * Writes the extension type to the EEPROM of a specified extension. * The extension is either 0 or 1 (0 is the lower one, 1 is the upper one, * if only one extension is present use 0). * * Possible extension types: * * \verbatim * "Type", "Description" * * "1", "Chibi" * "2", "RS485" * "3", "WIFI" * "4", "Ethernet" * "5", "WIFI 2.0" * \endverbatim * * The extension type is already set when bought and it can be set with the * Brick Viewer, it is unlikely that you need this function. */ int master_set_extension_type(Master *master, uint8_t extension, uint32_t exttype); /** * \ingroup BrickMaster * * Returns the type for a given extension as set by {@link master_set_extension_type}. */ int master_get_extension_type(Master *master, uint8_t extension, uint32_t *ret_exttype); /** * \ingroup BrickMaster * * Returns *true* if the Master Brick is at position 0 in the stack and a Chibi * Extension is available. */ int master_is_chibi_present(Master *master, bool *ret_present); /** * \ingroup BrickMaster * * Sets the address belonging to the Chibi Extension. * * It is possible to set the address with the Brick Viewer and it will be * saved in the EEPROM of the Chibi Extension, it does not * have to be set on every startup. */ int master_set_chibi_address(Master *master, uint8_t address); /** * \ingroup BrickMaster * * Returns the address as set by {@link master_set_chibi_address}. */ int master_get_chibi_address(Master *master, uint8_t *ret_address); /** * \ingroup BrickMaster * * Sets the address of the Chibi Master. This address is used if the * Chibi Extension is used as slave (i.e. it does not have a USB connection). * * It is possible to set the address with the Brick Viewer and it will be * saved in the EEPROM of the Chibi Extension, it does not * have to be set on every startup. */ int master_set_chibi_master_address(Master *master, uint8_t address); /** * \ingroup BrickMaster * * Returns the address as set by {@link master_set_chibi_master_address}. */ int master_get_chibi_master_address(Master *master, uint8_t *ret_address); /** * \ingroup BrickMaster * * Sets up to 254 slave addresses. 0 has a * special meaning, it is used as list terminator and not allowed as normal slave * address. The address numeration (via \c num parameter) has to be used * ascending from 0. For example: If you use the Chibi Extension in Master mode * (i.e. the stack has an USB connection) and you want to talk to three other * Chibi stacks with the slave addresses 17, 23, and 42, you should call with * ``(0, 17)``, ``(1, 23)``, ``(2, 42)`` and ``(3, 0)``. The last call with * ``(3, 0)`` is a list terminator and indicates that the Chibi slave address * list contains 3 addresses in this case. * * It is possible to set the addresses with the Brick Viewer, that will take care * of correct address numeration and list termination. * * The slave addresses will be saved in the EEPROM of the Chibi Extension, they * don't have to be set on every startup. */ int master_set_chibi_slave_address(Master *master, uint8_t num, uint8_t address); /** * \ingroup BrickMaster * * Returns the slave address for a given \c num as set by * {@link master_set_chibi_slave_address}. */ int master_get_chibi_slave_address(Master *master, uint8_t num, uint8_t *ret_address); /** * \ingroup BrickMaster * * Returns the signal strength in dBm. The signal strength updates every time a * packet is received. */ int master_get_chibi_signal_strength(Master *master, uint8_t *ret_signal_strength); /** * \ingroup BrickMaster * * Returns underrun, CRC error, no ACK and overflow error counts of the Chibi * communication. If these errors start rising, it is likely that either the * distance between two Chibi stacks is becoming too big or there are * interferences. */ int master_get_chibi_error_log(Master *master, uint16_t *ret_underrun, uint16_t *ret_crc_error, uint16_t *ret_no_ack, uint16_t *ret_overflow); /** * \ingroup BrickMaster * * Sets the Chibi frequency range for the Chibi Extension. Possible values are: * * \verbatim * "Type", "Description" * * "0", "OQPSK 868MHz (Europe)" * "1", "OQPSK 915MHz (US)" * "2", "OQPSK 780MHz (China)" * "3", "BPSK40 915MHz" * \endverbatim * * It is possible to set the frequency with the Brick Viewer and it will be * saved in the EEPROM of the Chibi Extension, it does not * have to be set on every startup. */ int master_set_chibi_frequency(Master *master, uint8_t frequency); /** * \ingroup BrickMaster * * Returns the frequency value as set by {@link master_set_chibi_frequency}. */ int master_get_chibi_frequency(Master *master, uint8_t *ret_frequency); /** * \ingroup BrickMaster * * Sets the channel used by the Chibi Extension. Possible channels are * different for different frequencies: * * \verbatim * "Frequency", "Possible Channels" * * "OQPSK 868MHz (Europe)", "0" * "OQPSK 915MHz (US)", "1, 2, 3, 4, 5, 6, 7, 8, 9, 10" * "OQPSK 780MHz (China)", "0, 1, 2, 3" * "BPSK40 915MHz", "1, 2, 3, 4, 5, 6, 7, 8, 9, 10" * \endverbatim * * It is possible to set the channel with the Brick Viewer and it will be * saved in the EEPROM of the Chibi Extension, it does not * have to be set on every startup. */ int master_set_chibi_channel(Master *master, uint8_t channel); /** * \ingroup BrickMaster * * Returns the channel as set by {@link master_set_chibi_channel}. */ int master_get_chibi_channel(Master *master, uint8_t *ret_channel); /** * \ingroup BrickMaster * * Returns *true* if the Master Brick is at position 0 in the stack and a RS485 * Extension is available. */ int master_is_rs485_present(Master *master, bool *ret_present); /** * \ingroup BrickMaster * * Sets the address (0-255) belonging to the RS485 Extension. * * Set to 0 if the RS485 Extension should be the RS485 Master (i.e. * connected to a PC via USB). * * It is possible to set the address with the Brick Viewer and it will be * saved in the EEPROM of the RS485 Extension, it does not * have to be set on every startup. */ int master_set_rs485_address(Master *master, uint8_t address); /** * \ingroup BrickMaster * * Returns the address as set by {@link master_set_rs485_address}. */ int master_get_rs485_address(Master *master, uint8_t *ret_address); /** * \ingroup BrickMaster * * Sets up to 255 slave addresses. Valid addresses are in range 1-255. 0 has a * special meaning, it is used as list terminator and not allowed as normal slave * address. The address numeration (via ``num`` parameter) has to be used * ascending from 0. For example: If you use the RS485 Extension in Master mode * (i.e. the stack has an USB connection) and you want to talk to three other * RS485 stacks with the addresses 17, 23, and 42, you should call with * ``(0, 17)``, ``(1, 23)``, ``(2, 42)`` and ``(3, 0)``. The last call with * ``(3, 0)`` is a list terminator and indicates that the RS485 slave address list * contains 3 addresses in this case. * * It is possible to set the addresses with the Brick Viewer, that will take care * of correct address numeration and list termination. * * The slave addresses will be saved in the EEPROM of the Chibi Extension, they * don't have to be set on every startup. */ int master_set_rs485_slave_address(Master *master, uint8_t num, uint8_t address); /** * \ingroup BrickMaster * * Returns the slave address for a given ``num`` as set by * {@link master_set_rs485_slave_address}. */ int master_get_rs485_slave_address(Master *master, uint8_t num, uint8_t *ret_address); /** * \ingroup BrickMaster * * Returns CRC error counts of the RS485 communication. * If this counter starts rising, it is likely that the distance * between the RS485 nodes is too big or there is some kind of * interference. */ int master_get_rs485_error_log(Master *master, uint16_t *ret_crc_error); /** * \ingroup BrickMaster * * Sets the configuration of the RS485 Extension. The * Master Brick will try to match the given baud rate as exactly as possible. * The maximum recommended baud rate is 2000000 (2MBd). * Possible values for parity are 'n' (none), 'e' (even) and 'o' (odd). * * If your RS485 is unstable (lost messages etc.), the first thing you should * try is to decrease the speed. On very large bus (e.g. 1km), you probably * should use a value in the range of 100000 (100kBd). * * The values are stored in the EEPROM and only applied on startup. That means * you have to restart the Master Brick after configuration. */ int master_set_rs485_configuration(Master *master, uint32_t speed, char parity, uint8_t stopbits); /** * \ingroup BrickMaster * * Returns the configuration as set by {@link master_set_rs485_configuration}. */ int master_get_rs485_configuration(Master *master, uint32_t *ret_speed, char *ret_parity, uint8_t *ret_stopbits); /** * \ingroup BrickMaster * * Returns *true* if the Master Brick is at position 0 in the stack and a WIFI * Extension is available. */ int master_is_wifi_present(Master *master, bool *ret_present); /** * \ingroup BrickMaster * * Sets the configuration of the WIFI Extension. The ``ssid`` can have a max length * of 32 characters. Possible values for ``connection`` are: * * \verbatim * "Value", "Description" * * "0", "DHCP" * "1", "Static IP" * "2", "Access Point: DHCP" * "3", "Access Point: Static IP" * "4", "Ad Hoc: DHCP" * "5", "Ad Hoc: Static IP" * \endverbatim * * If you set ``connection`` to one of the static IP options then you have to * supply ``ip``, ``subnet_mask`` and ``gateway`` as an array of size 4 (first * element of the array is the least significant byte of the address). If * ``connection`` is set to one of the DHCP options then ``ip``, ``subnet_mask`` * and ``gateway`` are ignored, you can set them to 0. * * The last parameter is the port that your program will connect to. * * The values are stored in the EEPROM and only applied on startup. That means * you have to restart the Master Brick after configuration. * * It is recommended to use the Brick Viewer to set the WIFI configuration. */ int master_set_wifi_configuration(Master *master, const char ssid[32], uint8_t connection, uint8_t ip[4], uint8_t subnet_mask[4], uint8_t gateway[4], uint16_t port); /** * \ingroup BrickMaster * * Returns the configuration as set by {@link master_set_wifi_configuration}. */ int master_get_wifi_configuration(Master *master, char ret_ssid[32], uint8_t *ret_connection, uint8_t ret_ip[4], uint8_t ret_subnet_mask[4], uint8_t ret_gateway[4], uint16_t *ret_port); /** * \ingroup BrickMaster * * Sets the encryption of the WIFI Extension. The first parameter is the * type of the encryption. Possible values are: * * \verbatim * "Value", "Description" * * "0", "WPA/WPA2" * "1", "WPA Enterprise (EAP-FAST, EAP-TLS, EAP-TTLS, PEAP)" * "2", "WEP" * "3", "No Encryption" * \endverbatim * * The ``key`` has a max length of 50 characters and is used if ``encryption`` * is set to 0 or 2 (WPA/WPA2 or WEP). Otherwise the value is ignored. * * For WPA/WPA2 the key has to be at least 8 characters long. If you want to set * a key with more than 50 characters, see {@link master_set_long_wifi_key}. * * For WEP the key has to be either 10 or 26 hexadecimal digits long. It is * possible to set the WEP ``key_index`` (1-4). If you don't know your * ``key_index``, it is likely 1. * * If you choose WPA Enterprise as encryption, you have to set ``eap_options`` and * the length of the certificates (for other encryption types these parameters * are ignored). The certificates * themselves can be set with {@link master_set_wifi_certificate}. ``eap_options`` consist * of the outer authentication (bits 1-2), inner authentication (bit 3) and * certificate type (bits 4-5): * * \verbatim * "Option", "Bits", "Description" * * "outer authentication", "1-2", "0=EAP-FAST, 1=EAP-TLS, 2=EAP-TTLS, 3=EAP-PEAP" * "inner authentication", "3", "0=EAP-MSCHAP, 1=EAP-GTC" * "certificate type", "4-5", "0=CA Certificate, 1=Client Certificate, 2=Private Key" * \endverbatim * * Example for EAP-TTLS + EAP-GTC + Private Key: ``option = 2 | (1 << 2) | (2 << 3)``. * * The values are stored in the EEPROM and only applied on startup. That means * you have to restart the Master Brick after configuration. * * It is recommended to use the Brick Viewer to set the Wi-Fi encryption. */ int master_set_wifi_encryption(Master *master, uint8_t encryption, const char key[50], uint8_t key_index, uint8_t eap_options, uint16_t ca_certificate_length, uint16_t client_certificate_length, uint16_t private_key_length); /** * \ingroup BrickMaster * * Returns the encryption as set by {@link master_set_wifi_encryption}. * * \note * Since Master Brick Firmware version 2.4.4 the key is not returned anymore. */ int master_get_wifi_encryption(Master *master, uint8_t *ret_encryption, char ret_key[50], uint8_t *ret_key_index, uint8_t *ret_eap_options, uint16_t *ret_ca_certificate_length, uint16_t *ret_client_certificate_length, uint16_t *ret_private_key_length); /** * \ingroup BrickMaster * * Returns the status of the WIFI Extension. The ``state`` is updated automatically, * all of the other parameters are updated on startup and every time * {@link master_refresh_wifi_status} is called. * * Possible states are: * * \verbatim * "State", "Description" * * "0", "Disassociated" * "1", "Associated" * "2", "Associating" * "3", "Error" * "255", "Not initialized yet" * \endverbatim */ int master_get_wifi_status(Master *master, uint8_t ret_mac_address[6], uint8_t ret_bssid[6], uint8_t *ret_channel, int16_t *ret_rssi, uint8_t ret_ip[4], uint8_t ret_subnet_mask[4], uint8_t ret_gateway[4], uint32_t *ret_rx_count, uint32_t *ret_tx_count, uint8_t *ret_state); /** * \ingroup BrickMaster * * Refreshes the Wi-Fi status (see {@link master_get_wifi_status}). To read the status * of the Wi-Fi module, the Master Brick has to change from data mode to * command mode and back. This transaction and the readout itself is * unfortunately time consuming. This means, that it might take some ms * until the stack with attached WIFI Extension reacts again after this * function is called. */ int master_refresh_wifi_status(Master *master); /** * \ingroup BrickMaster * * This function is used to set the certificate as well as password and username * for WPA Enterprise. To set the username use index 0xFFFF, * to set the password use index 0xFFFE. The max length of username and * password is 32. * * The certificate is written in chunks of size 32 and the index is used as * the index of the chunk. ``data_length`` should nearly always be 32. Only * the last chunk can have a length that is not equal to 32. * * The starting index of the CA Certificate is 0, of the Client Certificate * 10000 and for the Private Key 20000. Maximum sizes are 1312, 1312 and * 4320 byte respectively. * * The values are stored in the EEPROM and only applied on startup. That means * you have to restart the Master Brick after uploading the certificate. * * It is recommended to use the Brick Viewer to set the certificate, username * and password. */ int master_set_wifi_certificate(Master *master, uint16_t index, uint8_t data[32], uint8_t data_length); /** * \ingroup BrickMaster * * Returns the certificate for a given index as set by {@link master_set_wifi_certificate}. */ int master_get_wifi_certificate(Master *master, uint16_t index, uint8_t ret_data[32], uint8_t *ret_data_length); /** * \ingroup BrickMaster * * Sets the power mode of the WIFI Extension. Possible modes are: * * \verbatim * "Mode", "Description" * * "0", "Full Speed (high power consumption, high throughput)" * "1", "Low Power (low power consumption, low throughput)" * \endverbatim */ int master_set_wifi_power_mode(Master *master, uint8_t mode); /** * \ingroup BrickMaster * * Returns the power mode as set by {@link master_set_wifi_power_mode}. */ int master_get_wifi_power_mode(Master *master, uint8_t *ret_mode); /** * \ingroup BrickMaster * * Returns informations about the Wi-Fi receive buffer. The Wi-Fi * receive buffer has a max size of 1500 byte and if data is transfered * too fast, it might overflow. * * The return values are the number of overflows, the low watermark * (i.e. the smallest number of bytes that were free in the buffer) and * the bytes that are currently used. * * You should always try to keep the buffer empty, otherwise you will * have a permanent latency. A good rule of thumb is, that you can transfer * 1000 messages per second without problems. * * Try to not send more then 50 messages at a time without any kind of * break between them. */ int master_get_wifi_buffer_info(Master *master, uint32_t *ret_overflow, uint16_t *ret_low_watermark, uint16_t *ret_used); /** * \ingroup BrickMaster * * Sets the regulatory domain of the WIFI Extension. Possible domains are: * * \verbatim * "Domain", "Description" * * "0", "FCC: Channel 1-11 (N/S America, Australia, New Zealand)" * "1", "ETSI: Channel 1-13 (Europe, Middle East, Africa)" * "2", "TELEC: Channel 1-14 (Japan)" * \endverbatim */ int master_set_wifi_regulatory_domain(Master *master, uint8_t domain); /** * \ingroup BrickMaster * * Returns the regulatory domain as set by {@link master_set_wifi_regulatory_domain}. */ int master_get_wifi_regulatory_domain(Master *master, uint8_t *ret_domain); /** * \ingroup BrickMaster * * Returns the USB voltage. Does not work with hardware version 2.1. */ int master_get_usb_voltage(Master *master, uint16_t *ret_voltage); /** * \ingroup BrickMaster * * Sets a long Wi-Fi key (up to 63 chars, at least 8 chars) for WPA encryption. * This key will be used * if the key in {@link master_set_wifi_encryption} is set to "-". In the old protocol, * a payload of size 63 was not possible, so the maximum key length was 50 chars. * * With the new protocol this is possible, since we didn't want to break API, * this function was added additionally. * * .. versionadded:: 2.0.2$nbsp;(Firmware) */ int master_set_long_wifi_key(Master *master, const char key[64]); /** * \ingroup BrickMaster * * Returns the encryption key as set by {@link master_set_long_wifi_key}. * * \note * Since Master Brick firmware version 2.4.4 the key is not returned anymore. * * .. versionadded:: 2.0.2$nbsp;(Firmware) */ int master_get_long_wifi_key(Master *master, char ret_key[64]); /** * \ingroup BrickMaster * * Sets the hostname of the WIFI Extension. The hostname will be displayed * by access points as the hostname in the DHCP clients table. * * Setting an empty String will restore the default hostname. * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ int master_set_wifi_hostname(Master *master, const char hostname[16]); /** * \ingroup BrickMaster * * Returns the hostname as set by {@link master_set_wifi_hostname}. * * An empty String means, that the default hostname is used. * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ int master_get_wifi_hostname(Master *master, char ret_hostname[16]); /** * \ingroup BrickMaster * * Sets the period with which the {@link MASTER_CALLBACK_STACK_CURRENT} callback is triggered * periodically. A value of 0 turns the callback off. * * The {@link MASTER_CALLBACK_STACK_CURRENT} callback is only triggered if the current has changed * since the last triggering. * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ int master_set_stack_current_callback_period(Master *master, uint32_t period); /** * \ingroup BrickMaster * * Returns the period as set by {@link master_set_stack_current_callback_period}. * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ int master_get_stack_current_callback_period(Master *master, uint32_t *ret_period); /** * \ingroup BrickMaster * * Sets the period with which the {@link MASTER_CALLBACK_STACK_VOLTAGE} callback is triggered * periodically. A value of 0 turns the callback off. * * The {@link MASTER_CALLBACK_STACK_VOLTAGE} callback is only triggered if the voltage has changed * since the last triggering. * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ int master_set_stack_voltage_callback_period(Master *master, uint32_t period); /** * \ingroup BrickMaster * * Returns the period as set by {@link master_set_stack_voltage_callback_period}. * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ int master_get_stack_voltage_callback_period(Master *master, uint32_t *ret_period); /** * \ingroup BrickMaster * * Sets the period with which the {@link MASTER_CALLBACK_USB_VOLTAGE} callback is triggered * periodically. A value of 0 turns the callback off. * * The {@link MASTER_CALLBACK_USB_VOLTAGE} callback is only triggered if the voltage has changed * since the last triggering. * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ int master_set_usb_voltage_callback_period(Master *master, uint32_t period); /** * \ingroup BrickMaster * * Returns the period as set by {@link master_set_usb_voltage_callback_period}. * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ int master_get_usb_voltage_callback_period(Master *master, uint32_t *ret_period); /** * \ingroup BrickMaster * * Sets the thresholds for the {@link MASTER_CALLBACK_STACK_CURRENT_REACHED} callback. * * The following options are possible: * * \verbatim * "Option", "Description" * * "'x'", "Callback is turned off" * "'o'", "Callback is triggered when the current is *outside* the min and max values" * "'i'", "Callback is triggered when the current is *inside* the min and max values" * "'<'", "Callback is triggered when the current is smaller than the min value (max is ignored)" * "'>'", "Callback is triggered when the current is greater than the min value (max is ignored)" * \endverbatim * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ int master_set_stack_current_callback_threshold(Master *master, char option, uint16_t min, uint16_t max); /** * \ingroup BrickMaster * * Returns the threshold as set by {@link master_set_stack_current_callback_threshold}. * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ int master_get_stack_current_callback_threshold(Master *master, char *ret_option, uint16_t *ret_min, uint16_t *ret_max); /** * \ingroup BrickMaster * * Sets the thresholds for the {@link MASTER_CALLBACK_STACK_VOLTAGE_REACHED} callback. * * The following options are possible: * * \verbatim * "Option", "Description" * * "'x'", "Callback is turned off" * "'o'", "Callback is triggered when the voltage is *outside* the min and max values" * "'i'", "Callback is triggered when the voltage is *inside* the min and max values" * "'<'", "Callback is triggered when the voltage is smaller than the min value (max is ignored)" * "'>'", "Callback is triggered when the voltage is greater than the min value (max is ignored)" * \endverbatim * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ int master_set_stack_voltage_callback_threshold(Master *master, char option, uint16_t min, uint16_t max); /** * \ingroup BrickMaster * * Returns the threshold as set by {@link master_set_stack_voltage_callback_threshold}. * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ int master_get_stack_voltage_callback_threshold(Master *master, char *ret_option, uint16_t *ret_min, uint16_t *ret_max); /** * \ingroup BrickMaster * * Sets the thresholds for the {@link MASTER_CALLBACK_USB_VOLTAGE_REACHED} callback. * * The following options are possible: * * \verbatim * "Option", "Description" * * "'x'", "Callback is turned off" * "'o'", "Callback is triggered when the voltage is *outside* the min and max values" * "'i'", "Callback is triggered when the voltage is *inside* the min and max values" * "'<'", "Callback is triggered when the voltage is smaller than the min value (max is ignored)" * "'>'", "Callback is triggered when the voltage is greater than the min value (max is ignored)" * \endverbatim * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ int master_set_usb_voltage_callback_threshold(Master *master, char option, uint16_t min, uint16_t max); /** * \ingroup BrickMaster * * Returns the threshold as set by {@link master_set_usb_voltage_callback_threshold}. * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ int master_get_usb_voltage_callback_threshold(Master *master, char *ret_option, uint16_t *ret_min, uint16_t *ret_max); /** * \ingroup BrickMaster * * Sets the period with which the threshold callbacks * * * {@link MASTER_CALLBACK_STACK_CURRENT_REACHED}, * * {@link MASTER_CALLBACK_STACK_VOLTAGE_REACHED}, * * {@link MASTER_CALLBACK_USB_VOLTAGE_REACHED} * * are triggered, if the thresholds * * * {@link master_set_stack_current_callback_threshold}, * * {@link master_set_stack_voltage_callback_threshold}, * * {@link master_set_usb_voltage_callback_threshold} * * keep being reached. * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ int master_set_debounce_period(Master *master, uint32_t debounce); /** * \ingroup BrickMaster * * Returns the debounce period as set by {@link master_set_debounce_period}. * * .. versionadded:: 2.0.5$nbsp;(Firmware) */ int master_get_debounce_period(Master *master, uint32_t *ret_debounce); /** * \ingroup BrickMaster * * Returns *true* if the Master Brick is at position 0 in the stack and an Ethernet * Extension is available. * * .. versionadded:: 2.1.0$nbsp;(Firmware) */ int master_is_ethernet_present(Master *master, bool *ret_present); /** * \ingroup BrickMaster * * Sets the configuration of the Ethernet Extension. Possible values for * ``connection`` are: * * \verbatim * "Value", "Description" * * "0", "DHCP" * "1", "Static IP" * \endverbatim * * If you set ``connection`` to static IP options then you have to supply ``ip``, * ``subnet_mask`` and ``gateway`` as an array of size 4 (first element of the * array is the least significant byte of the address). If ``connection`` is set * to the DHCP options then ``ip``, ``subnet_mask`` and ``gateway`` are ignored, * you can set them to 0. * * The last parameter is the port that your program will connect to. * * The values are stored in the EEPROM and only applied on startup. That means * you have to restart the Master Brick after configuration. * * It is recommended to use the Brick Viewer to set the Ethernet configuration. * * .. versionadded:: 2.1.0$nbsp;(Firmware) */ int master_set_ethernet_configuration(Master *master, uint8_t connection, uint8_t ip[4], uint8_t subnet_mask[4], uint8_t gateway[4], uint16_t port); /** * \ingroup BrickMaster * * Returns the configuration as set by {@link master_set_ethernet_configuration}. * * .. versionadded:: 2.1.0$nbsp;(Firmware) */ int master_get_ethernet_configuration(Master *master, uint8_t *ret_connection, uint8_t ret_ip[4], uint8_t ret_subnet_mask[4], uint8_t ret_gateway[4], uint16_t *ret_port); /** * \ingroup BrickMaster * * Returns the status of the Ethernet Extension. * * ``mac_address``, ``ip``, ``subnet_mask`` and ``gateway`` are given as an array. * The first element of the array is the least significant byte of the address. * * ``rx_count`` and ``tx_count`` are the number of bytes that have been * received/send since last restart. * * ``hostname`` is the currently used hostname. * * .. versionadded:: 2.1.0$nbsp;(Firmware) */ int master_get_ethernet_status(Master *master, uint8_t ret_mac_address[6], uint8_t ret_ip[4], uint8_t ret_subnet_mask[4], uint8_t ret_gateway[4], uint32_t *ret_rx_count, uint32_t *ret_tx_count, char ret_hostname[32]); /** * \ingroup BrickMaster * * Sets the hostname of the Ethernet Extension. The hostname will be displayed * by access points as the hostname in the DHCP clients table. * * Setting an empty String will restore the default hostname. * * The current hostname can be discovered with {@link master_get_ethernet_status}. * * .. versionadded:: 2.1.0$nbsp;(Firmware) */ int master_set_ethernet_hostname(Master *master, const char hostname[32]); /** * \ingroup BrickMaster * * Sets the MAC address of the Ethernet Extension. The Ethernet Extension should * come configured with a valid MAC address, that is also written on a * sticker of the extension itself. * * The MAC address can be read out again with {@link master_get_ethernet_status}. * * .. versionadded:: 2.1.0$nbsp;(Firmware) */ int master_set_ethernet_mac_address(Master *master, uint8_t mac_address[6]); /** * \ingroup BrickMaster * * Sets the Ethernet WebSocket configuration. The first parameter sets the number of socket * connections that are reserved for WebSockets. The range is 0-7. The connections * are shared with the plain sockets. Example: If you set the connections to 3, * there will be 3 WebSocket and 4 plain socket connections available. * * The second parameter is the port for the WebSocket connections. The port can * not be the same as the port for the plain socket connections. * * The values are stored in the EEPROM and only applied on startup. That means * you have to restart the Master Brick after configuration. * * It is recommended to use the Brick Viewer to set the Ethernet configuration. * * .. versionadded:: 2.2.0$nbsp;(Firmware) */ int master_set_ethernet_websocket_configuration(Master *master, uint8_t sockets, uint16_t port); /** * \ingroup BrickMaster * * Returns the configuration as set by {@link master_set_ethernet_configuration}. * * .. versionadded:: 2.2.0$nbsp;(Firmware) */ int master_get_ethernet_websocket_configuration(Master *master, uint8_t *ret_sockets, uint16_t *ret_port); /** * \ingroup BrickMaster * * Sets the Ethernet authentication secret. The secret can be a string of up to 64 * characters. An empty string disables the authentication. * * See the :ref:`authentication tutorial ` for more * information. * * The secret is stored in the EEPROM and only applied on startup. That means * you have to restart the Master Brick after configuration. * * It is recommended to use the Brick Viewer to set the Ethernet authentication secret. * * The default value is an empty string (authentication disabled). * * .. versionadded:: 2.2.0$nbsp;(Firmware) */ int master_set_ethernet_authentication_secret(Master *master, const char secret[64]); /** * \ingroup BrickMaster * * Returns the authentication secret as set by * {@link master_set_ethernet_authentication_secret}. * * .. versionadded:: 2.2.0$nbsp;(Firmware) */ int master_get_ethernet_authentication_secret(Master *master, char ret_secret[64]); /** * \ingroup BrickMaster * * Sets the WIFI authentication secret. The secret can be a string of up to 64 * characters. An empty string disables the authentication. * * See the :ref:`authentication tutorial ` for more * information. * * The secret is stored in the EEPROM and only applied on startup. That means * you have to restart the Master Brick after configuration. * * It is recommended to use the Brick Viewer to set the WIFI authentication secret. * * The default value is an empty string (authentication disabled). * * .. versionadded:: 2.2.0$nbsp;(Firmware) */ int master_set_wifi_authentication_secret(Master *master, const char secret[64]); /** * \ingroup BrickMaster * * Returns the authentication secret as set by * {@link master_set_wifi_authentication_secret}. * * .. versionadded:: 2.2.0$nbsp;(Firmware) */ int master_get_wifi_authentication_secret(Master *master, char ret_secret[64]); /** * \ingroup BrickMaster * * Returns the type of the connection over which this function was called. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_get_connection_type(Master *master, uint8_t *ret_connection_type); /** * \ingroup BrickMaster * * Returns *true* if the Master Brick is at position 0 in the stack and a WIFI * Extension 2.0 is available. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_is_wifi2_present(Master *master, bool *ret_present); /** * \ingroup BrickMaster * * Starts the bootloader of the WIFI Extension 2.0. Returns 0 on success. * Afterwards the {@link master_write_wifi2_serial_port} and {@link master_read_wifi2_serial_port} * functions can be used to communicate with the bootloader to flash a new * firmware. * * The bootloader should only be started over a USB connection. It cannot be * started over a WIFI2 connection, see the {@link master_get_connection_type} function. * * It is recommended to use the Brick Viewer to update the firmware of the WIFI * Extension 2.0. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_start_wifi2_bootloader(Master *master, int8_t *ret_result); /** * \ingroup BrickMaster * * Writes up to 60 bytes (number of bytes to be written specified by ``length``) * to the serial port of the bootloader of the WIFI Extension 2.0. Returns 0 on * success. * * Before this function can be used the bootloader has to be started using the * {@link master_start_wifi2_bootloader} function. * * It is recommended to use the Brick Viewer to update the firmware of the WIFI * Extension 2.0. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_write_wifi2_serial_port(Master *master, uint8_t data[60], uint8_t length, int8_t *ret_result); /** * \ingroup BrickMaster * * Reads up to 60 bytes (number of bytes to be read specified by ``length``) * from the serial port of the bootloader of the WIFI Extension 2.0. * Returns the number of actually read bytes. * * Before this function can be used the bootloader has to be started using the * {@link master_start_wifi2_bootloader} function. * * It is recommended to use the Brick Viewer to update the firmware of the WIFI * Extension 2.0. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_read_wifi2_serial_port(Master *master, uint8_t length, uint8_t ret_data[60], uint8_t *ret_result); /** * \ingroup BrickMaster * * Sets the WIFI authentication secret. The secret can be a string of up to 64 * characters. An empty string disables the authentication. The default value is * an empty string (authentication disabled). * * See the :ref:`authentication tutorial ` for more * information. * * To apply configuration changes to the WIFI Extension 2.0 the * {@link master_save_wifi2_configuration} function has to be called and the Master Brick * has to be restarted afterwards. * * It is recommended to use the Brick Viewer to configure the WIFI Extension 2.0. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_set_wifi2_authentication_secret(Master *master, const char secret[64]); /** * \ingroup BrickMaster * * Returns the WIFI authentication secret as set by * {@link master_set_wifi2_authentication_secret}. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_get_wifi2_authentication_secret(Master *master, char ret_secret[64]); /** * \ingroup BrickMaster * * Sets the general configuration of the WIFI Extension 2.0. * * The ``port`` parameter sets the port number that your programm will connect * to. * * The ``websocket_port`` parameter sets the WebSocket port number that your * JavaScript programm will connect to. * * The ``website_port`` parameter sets the port number for the website of the * WIFI Extension 2.0. * * The ``phy_mode`` parameter sets the specific wireless network mode to be used. * Possible values are B, G and N. * * The ``sleep_mode`` parameter is currently unused. * * The ``website`` parameter is used to enable or disable the web interface of * the WIFI Extension 2.0, which is available from firmware version 2.0.1. Note * that, for firmware version 2.0.3 and older, to disable the the web interface * the ``website_port`` parameter must be set to 1 and greater than 1 to enable * the web interface. For firmware version 2.0.4 and later, setting this parameter * to 1 will enable the web interface and setting it to 0 will disable the web * interface. * * To apply configuration changes to the WIFI Extension 2.0 the * {@link master_save_wifi2_configuration} function has to be called and the Master Brick * has to be restarted afterwards. * * It is recommended to use the Brick Viewer to configure the WIFI Extension 2.0. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_set_wifi2_configuration(Master *master, uint16_t port, uint16_t websocket_port, uint16_t website_port, uint8_t phy_mode, uint8_t sleep_mode, uint8_t website); /** * \ingroup BrickMaster * * Returns the general configuration as set by {@link master_set_wifi2_configuration}. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_get_wifi2_configuration(Master *master, uint16_t *ret_port, uint16_t *ret_websocket_port, uint16_t *ret_website_port, uint8_t *ret_phy_mode, uint8_t *ret_sleep_mode, uint8_t *ret_website); /** * \ingroup BrickMaster * * Returns the client and access point status of the WIFI Extension 2.0. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_get_wifi2_status(Master *master, bool *ret_client_enabled, uint8_t *ret_client_status, uint8_t ret_client_ip[4], uint8_t ret_client_subnet_mask[4], uint8_t ret_client_gateway[4], uint8_t ret_client_mac_address[6], uint32_t *ret_client_rx_count, uint32_t *ret_client_tx_count, int8_t *ret_client_rssi, bool *ret_ap_enabled, uint8_t ret_ap_ip[4], uint8_t ret_ap_subnet_mask[4], uint8_t ret_ap_gateway[4], uint8_t ret_ap_mac_address[6], uint32_t *ret_ap_rx_count, uint32_t *ret_ap_tx_count, uint8_t *ret_ap_connected_count); /** * \ingroup BrickMaster * * Sets the client specific configuration of the WIFI Extension 2.0. * * The ``enable`` parameter enables or disables the client part of the * WIFI Extension 2.0. * * The ``ssid`` parameter sets the SSID (up to 32 characters) of the access point * to connect to. * * If the ``ip`` parameter is set to all zero then ``subnet_mask`` and ``gateway`` * parameters are also set to all zero and DHCP is used for IP address configuration. * Otherwise those three parameters can be used to configure a static IP address. * The default configuration is DHCP. * * If the ``mac_address`` parameter is set to all zero then the factory MAC * address is used. Otherwise this parameter can be used to set a custom MAC * address. * * If the ``bssid`` parameter is set to all zero then WIFI Extension 2.0 will * connect to any access point that matches the configured SSID. Otherwise this * parameter can be used to make the WIFI Extension 2.0 only connect to an * access point if SSID and BSSID match. * * To apply configuration changes to the WIFI Extension 2.0 the * {@link master_save_wifi2_configuration} function has to be called and the Master Brick * has to be restarted afterwards. * * It is recommended to use the Brick Viewer to configure the WIFI Extension 2.0. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_set_wifi2_client_configuration(Master *master, bool enable, const char ssid[32], uint8_t ip[4], uint8_t subnet_mask[4], uint8_t gateway[4], uint8_t mac_address[6], uint8_t bssid[6]); /** * \ingroup BrickMaster * * Returns the client configuration as set by {@link master_set_wifi2_client_configuration}. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_get_wifi2_client_configuration(Master *master, bool *ret_enable, char ret_ssid[32], uint8_t ret_ip[4], uint8_t ret_subnet_mask[4], uint8_t ret_gateway[4], uint8_t ret_mac_address[6], uint8_t ret_bssid[6]); /** * \ingroup BrickMaster * * Sets the client hostname (up to 32 characters) of the WIFI Extension 2.0. The * hostname will be displayed by access points as the hostname in the DHCP clients * table. * * To apply configuration changes to the WIFI Extension 2.0 the * {@link master_save_wifi2_configuration} function has to be called and the Master Brick * has to be restarted afterwards. * * It is recommended to use the Brick Viewer to configure the WIFI Extension 2.0. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_set_wifi2_client_hostname(Master *master, const char hostname[32]); /** * \ingroup BrickMaster * * Returns the client hostname as set by {@link master_set_wifi2_client_hostname}. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_get_wifi2_client_hostname(Master *master, char ret_hostname[32]); /** * \ingroup BrickMaster * * Sets the client password (up to 63 chars) for WPA/WPA2 encryption. * * To apply configuration changes to the WIFI Extension 2.0 the * {@link master_save_wifi2_configuration} function has to be called and the Master Brick * has to be restarted afterwards. * * It is recommended to use the Brick Viewer to configure the WIFI Extension 2.0. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_set_wifi2_client_password(Master *master, const char password[64]); /** * \ingroup BrickMaster * * Returns the client password as set by {@link master_set_wifi2_client_password}. * * \note * Since WIFI Extension 2.0 firmware version 2.1.3 the password is not * returned anymore. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_get_wifi2_client_password(Master *master, char ret_password[64]); /** * \ingroup BrickMaster * * Sets the access point specific configuration of the WIFI Extension 2.0. * * The ``enable`` parameter enables or disables the access point part of the * WIFI Extension 2.0. * * The ``ssid`` parameter sets the SSID (up to 32 characters) of the access point. * * If the ``ip`` parameter is set to all zero then ``subnet_mask`` and ``gateway`` * parameters are also set to all zero and DHCP is used for IP address configuration. * Otherwise those three parameters can be used to configure a static IP address. * The default configuration is DHCP. * * The ``encryption`` parameter sets the encryption mode to be used. Possible * values are Open (no encryption), WEP or WPA/WPA2 PSK. * Use the {@link master_set_wifi2_ap_password} function to set the encryption * password. * * The ``hidden`` parameter makes the access point hide or show its SSID. * * The ``channel`` parameter sets the channel (1 to 13) of the access point. * * If the ``mac_address`` parameter is set to all zero then the factory MAC * address is used. Otherwise this parameter can be used to set a custom MAC * address. * * To apply configuration changes to the WIFI Extension 2.0 the * {@link master_save_wifi2_configuration} function has to be called and the Master Brick * has to be restarted afterwards. * * It is recommended to use the Brick Viewer to configure the WIFI Extension 2.0. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_set_wifi2_ap_configuration(Master *master, bool enable, const char ssid[32], uint8_t ip[4], uint8_t subnet_mask[4], uint8_t gateway[4], uint8_t encryption, bool hidden, uint8_t channel, uint8_t mac_address[6]); /** * \ingroup BrickMaster * * Returns the access point configuration as set by {@link master_set_wifi2_ap_configuration}. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_get_wifi2_ap_configuration(Master *master, bool *ret_enable, char ret_ssid[32], uint8_t ret_ip[4], uint8_t ret_subnet_mask[4], uint8_t ret_gateway[4], uint8_t *ret_encryption, bool *ret_hidden, uint8_t *ret_channel, uint8_t ret_mac_address[6]); /** * \ingroup BrickMaster * * Sets the access point password (at least 8 and up to 63 chars) for the configured encryption * mode, see {@link master_set_wifi2_ap_configuration}. * * To apply configuration changes to the WIFI Extension 2.0 the * {@link master_save_wifi2_configuration} function has to be called and the Master Brick * has to be restarted afterwards. * * It is recommended to use the Brick Viewer to configure the WIFI Extension 2.0. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_set_wifi2_ap_password(Master *master, const char password[64]); /** * \ingroup BrickMaster * * Returns the access point password as set by {@link master_set_wifi2_ap_password}. * * \note * Since WIFI Extension 2.0 firmware version 2.1.3 the password is not * returned anymore. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_get_wifi2_ap_password(Master *master, char ret_password[64]); /** * \ingroup BrickMaster * * All configuration functions for the WIFI Extension 2.0 do not change the * values permanently. After configuration this function has to be called to * permanently store the values. * * The values are stored in the EEPROM and only applied on startup. That means * you have to restart the Master Brick after configuration. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_save_wifi2_configuration(Master *master, uint8_t *ret_result); /** * \ingroup BrickMaster * * Returns the current version of the WIFI Extension 2.0 firmware. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_get_wifi2_firmware_version(Master *master, uint8_t ret_firmware_version[3]); /** * \ingroup BrickMaster * * Turns the green status LED of the WIFI Extension 2.0 on. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_enable_wifi2_status_led(Master *master); /** * \ingroup BrickMaster * * Turns the green status LED of the WIFI Extension 2.0 off. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_disable_wifi2_status_led(Master *master); /** * \ingroup BrickMaster * * Returns *true* if the green status LED of the WIFI Extension 2.0 is turned on. * * .. versionadded:: 2.4.0$nbsp;(Firmware) */ int master_is_wifi2_status_led_enabled(Master *master, bool *ret_enabled); /** * \ingroup BrickMaster * * Requires WIFI Extension 2.0 firmware 2.1.0. * * Sets the mesh specific configuration of the WIFI Extension 2.0. * * The ``enable`` parameter enables or disables the mesh part of the * WIFI Extension 2.0. The mesh part cannot be * enabled together with the client and access-point part. * * If the ``root_ip`` parameter is set to all zero then ``root_subnet_mask`` * and ``root_gateway`` parameters are also set to all zero and DHCP is used for * IP address configuration. Otherwise those three parameters can be used to * configure a static IP address. The default configuration is DHCP. * * If the ``router_bssid`` parameter is set to all zero then the information is * taken from Wi-Fi scan when connecting the SSID as set by * {@link master_set_wifi2_mesh_router_ssid}. This only works if the the SSID is not hidden. * In case the router has hidden SSID this parameter must be specified, otherwise * the node will not be able to reach the mesh router. * * The ``group_id`` and the ``group_ssid_prefix`` parameters identifies a * particular mesh network and nodes configured with same ``group_id`` and the * ``group_ssid_prefix`` are considered to be in the same mesh network. * * The ``gateway_ip`` and the ``gateway_port`` parameters specifies the location * of the brickd that supports mesh feature. * * To apply configuration changes to the WIFI Extension 2.0 the * {@link master_save_wifi2_configuration} function has to be called and the Master Brick * has to be restarted afterwards. * * It is recommended to use the Brick Viewer to configure the WIFI Extension 2.0. * * .. versionadded:: 2.4.2$nbsp;(Firmware) */ int master_set_wifi2_mesh_configuration(Master *master, bool enable, uint8_t root_ip[4], uint8_t root_subnet_mask[4], uint8_t root_gateway[4], uint8_t router_bssid[6], uint8_t group_id[6], const char group_ssid_prefix[16], uint8_t gateway_ip[4], uint16_t gateway_port); /** * \ingroup BrickMaster * * Requires WIFI Extension 2.0 firmware 2.1.0. * * Returns the mesh configuration as set by {@link master_set_wifi2_mesh_configuration}. * * .. versionadded:: 2.4.2$nbsp;(Firmware) */ int master_get_wifi2_mesh_configuration(Master *master, bool *ret_enable, uint8_t ret_root_ip[4], uint8_t ret_root_subnet_mask[4], uint8_t ret_root_gateway[4], uint8_t ret_router_bssid[6], uint8_t ret_group_id[6], char ret_group_ssid_prefix[16], uint8_t ret_gateway_ip[4], uint16_t *ret_gateway_port); /** * \ingroup BrickMaster * * Requires WIFI Extension 2.0 firmware 2.1.0. * * Sets the mesh router SSID of the WIFI Extension 2.0. * It is used to specify the mesh router to connect to. * * Note that even though in the argument of this function a 32 characters long SSID * is allowed, in practice valid SSID should have a maximum of 31 characters. This * is due to a bug in the mesh library that we use in the firmware of the extension. * * To apply configuration changes to the WIFI Extension 2.0 the * {@link master_save_wifi2_configuration} function has to be called and the Master Brick * has to be restarted afterwards. * * It is recommended to use the Brick Viewer to configure the WIFI Extension 2.0. * * .. versionadded:: 2.4.2$nbsp;(Firmware) */ int master_set_wifi2_mesh_router_ssid(Master *master, const char ssid[32]); /** * \ingroup BrickMaster * * Requires WIFI Extension 2.0 firmware 2.1.0. * * Returns the mesh router SSID as set by {@link master_set_wifi2_mesh_router_ssid}. * * .. versionadded:: 2.4.2$nbsp;(Firmware) */ int master_get_wifi2_mesh_router_ssid(Master *master, char ret_ssid[32]); /** * \ingroup BrickMaster * * Requires WIFI Extension 2.0 firmware 2.1.0. * * Sets the mesh router password (up to 64 characters) for WPA/WPA2 encryption. * The password will be used to connect to the mesh router. * * To apply configuration changes to the WIFI Extension 2.0 the * {@link master_save_wifi2_configuration} function has to be called and the Master Brick * has to be restarted afterwards. * * It is recommended to use the Brick Viewer to configure the WIFI Extension 2.0. * * .. versionadded:: 2.4.2$nbsp;(Firmware) */ int master_set_wifi2_mesh_router_password(Master *master, const char password[64]); /** * \ingroup BrickMaster * * Requires WIFI Extension 2.0 firmware 2.1.0. * * Returns the mesh router password as set by {@link master_set_wifi2_mesh_router_password}. * * .. versionadded:: 2.4.2$nbsp;(Firmware) */ int master_get_wifi2_mesh_router_password(Master *master, char ret_password[64]); /** * \ingroup BrickMaster * * Requires WIFI Extension 2.0 firmware 2.1.0. * * Returns the common mesh status of the WIFI Extension 2.0. * * .. versionadded:: 2.4.2$nbsp;(Firmware) */ int master_get_wifi2_mesh_common_status(Master *master, uint8_t *ret_status, bool *ret_root_node, bool *ret_root_candidate, uint16_t *ret_connected_nodes, uint32_t *ret_rx_count, uint32_t *ret_tx_count); /** * \ingroup BrickMaster * * Requires WIFI Extension 2.0 firmware 2.1.0. * * Returns the mesh client status of the WIFI Extension 2.0. * * .. versionadded:: 2.4.2$nbsp;(Firmware) */ int master_get_wifi2_mesh_client_status(Master *master, char ret_hostname[32], uint8_t ret_ip[4], uint8_t ret_subnet_mask[4], uint8_t ret_gateway[4], uint8_t ret_mac_address[6]); /** * \ingroup BrickMaster * * Requires WIFI Extension 2.0 firmware 2.1.0. * * Returns the mesh AP status of the WIFI Extension 2.0. * * .. versionadded:: 2.4.2$nbsp;(Firmware) */ int master_get_wifi2_mesh_ap_status(Master *master, char ret_ssid[32], uint8_t ret_ip[4], uint8_t ret_subnet_mask[4], uint8_t ret_gateway[4], uint8_t ret_mac_address[6]); /** * \ingroup BrickMaster * * This function is for internal use to flash the initial * bootstrapper and bootloader to the Bricklets. * * If you need to flash a boostrapper/bootloader (for exmaple * because you made your own Bricklet from scratch) please * take a look at our open source flash and test tool at * `https://github.com/Tinkerforge/flash-test `__ * * Don't use this function directly. * * .. versionadded:: 2.5.0$nbsp;(Firmware) */ int master_set_bricklet_xmc_flash_config(Master *master, uint32_t config, uint32_t parameter1, uint32_t parameter2, uint8_t data[52], uint32_t *ret_return_value, uint8_t ret_return_data[60]); /** * \ingroup BrickMaster * * This function is for internal use to flash the initial * bootstrapper and bootloader to the Bricklets. * * If you need to flash a boostrapper/bootloader (for exmaple * because you made your own Bricklet from scratch) please * take a look at our open source flash and test tool at * `https://github.com/Tinkerforge/flash-test `__ * * Don't use this function directly. * * .. versionadded:: 2.5.0$nbsp;(Firmware) */ int master_set_bricklet_xmc_flash_data(Master *master, uint8_t data[64], uint32_t *ret_return_data); /** * \ingroup BrickMaster * * This function is only available in Master Brick hardware version >= 3.0. * * Enables/disables all four Bricklets if set to true/false. * * If you disable the Bricklets the power supply to the Bricklets will be disconnected. * The Bricklets will lose all configurations if disabled. * * .. versionadded:: 2.5.0$nbsp;(Firmware) */ int master_set_bricklets_enabled(Master *master, bool bricklets_enabled); /** * \ingroup BrickMaster * * Returns *true* if the Bricklets are enabled, *false* otherwise. * * .. versionadded:: 2.5.0$nbsp;(Firmware) */ int master_get_bricklets_enabled(Master *master, bool *ret_bricklets_enabled); /** * \ingroup BrickMaster * * The SPITF protocol can be used with a dynamic baudrate. If the dynamic baudrate is * enabled, the Brick will try to adapt the baudrate for the communication * between Bricks and Bricklets according to the amount of data that is transferred. * * The baudrate will be increased exponentially if lots of data is sent/received and * decreased linearly if little data is sent/received. * * This lowers the baudrate in applications where little data is transferred (e.g. * a weather station) and increases the robustness. If there is lots of data to transfer * (e.g. Thermal Imaging Bricklet) it automatically increases the baudrate as needed. * * In cases where some data has to transferred as fast as possible every few seconds * (e.g. RS485 Bricklet with a high baudrate but small payload) you may want to turn * the dynamic baudrate off to get the highest possible performance. * * The maximum value of the baudrate can be set per port with the function * {@link master_set_spitfp_baudrate}. If the dynamic baudrate is disabled, the baudrate * as set by {@link master_set_spitfp_baudrate} will be used statically. * * .. versionadded:: 2.4.6$nbsp;(Firmware) */ int master_set_spitfp_baudrate_config(Master *master, bool enable_dynamic_baudrate, uint32_t minimum_dynamic_baudrate); /** * \ingroup BrickMaster * * Returns the baudrate config, see {@link master_set_spitfp_baudrate_config}. * * .. versionadded:: 2.4.6$nbsp;(Firmware) */ int master_get_spitfp_baudrate_config(Master *master, bool *ret_enable_dynamic_baudrate, uint32_t *ret_minimum_dynamic_baudrate); /** * \ingroup BrickMaster * * Returns the timeout count for the different communication methods. * * The methods 0-2 are available for all Bricks, 3-7 only for Master Bricks. * * This function is mostly used for debugging during development, in normal operation * the counters should nearly always stay at 0. * * .. versionadded:: 2.4.3$nbsp;(Firmware) */ int master_get_send_timeout_count(Master *master, uint8_t communication_method, uint32_t *ret_timeout_count); /** * \ingroup BrickMaster * * Sets the baudrate for a specific Bricklet port. * * If you want to increase the throughput of Bricklets you can increase * the baudrate. If you get a high error count because of high * interference (see {@link master_get_spitfp_error_count}) you can decrease the * baudrate. * * If the dynamic baudrate feature is enabled, the baudrate set by this * function corresponds to the maximum baudrate (see {@link master_set_spitfp_baudrate_config}). * * Regulatory testing is done with the default baudrate. If CE compatibility * or similar is necessary in your applications we recommend to not change * the baudrate. * * .. versionadded:: 2.4.3$nbsp;(Firmware) */ int master_set_spitfp_baudrate(Master *master, char bricklet_port, uint32_t baudrate); /** * \ingroup BrickMaster * * Returns the baudrate for a given Bricklet port, see {@link master_set_spitfp_baudrate}. * * .. versionadded:: 2.4.3$nbsp;(Firmware) */ int master_get_spitfp_baudrate(Master *master, char bricklet_port, uint32_t *ret_baudrate); /** * \ingroup BrickMaster * * Returns the error count for the communication between Brick and Bricklet. * * The errors are divided into * * * ACK checksum errors, * * message checksum errors, * * framing errors and * * overflow errors. * * The errors counts are for errors that occur on the Brick side. All * Bricklets have a similar function that returns the errors on the Bricklet side. * * .. versionadded:: 2.4.3$nbsp;(Firmware) */ int master_get_spitfp_error_count(Master *master, char bricklet_port, uint32_t *ret_error_count_ack_checksum, uint32_t *ret_error_count_message_checksum, uint32_t *ret_error_count_frame, uint32_t *ret_error_count_overflow); /** * \ingroup BrickMaster * * Enables the status LED. * * The status LED is the blue LED next to the USB connector. If enabled is is * on and it flickers if data is transfered. If disabled it is always off. * * The default state is enabled. * * .. versionadded:: 2.3.2$nbsp;(Firmware) */ int master_enable_status_led(Master *master); /** * \ingroup BrickMaster * * Disables the status LED. * * The status LED is the blue LED next to the USB connector. If enabled is is * on and it flickers if data is transfered. If disabled it is always off. * * The default state is enabled. * * .. versionadded:: 2.3.2$nbsp;(Firmware) */ int master_disable_status_led(Master *master); /** * \ingroup BrickMaster * * Returns *true* if the status LED is enabled, *false* otherwise. * * .. versionadded:: 2.3.2$nbsp;(Firmware) */ int master_is_status_led_enabled(Master *master, bool *ret_enabled); /** * \ingroup BrickMaster * * Returns the firmware and protocol version and the name of the Bricklet for a * given port. * * This functions sole purpose is to allow automatic flashing of v1.x.y Bricklet * plugins. */ int master_get_protocol1_bricklet_name(Master *master, char port, uint8_t *ret_protocol_version, uint8_t ret_firmware_version[3], char ret_name[40]); /** * \ingroup BrickMaster * * Returns the temperature as measured inside the microcontroller. The * value returned is not the ambient temperature! * * The temperature is only proportional to the real temperature and it has an * accuracy of ±15%. Practically it is only useful as an indicator for * temperature changes. */ int master_get_chip_temperature(Master *master, int16_t *ret_temperature); /** * \ingroup BrickMaster * * Calling this function will reset the Brick. Calling this function * on a Brick inside of a stack will reset the whole stack. * * After a reset you have to create new device objects, * calling functions on the existing ones will result in * undefined behavior! */ int master_reset(Master *master); /** * \ingroup BrickMaster * * Writes 32 bytes of firmware to the bricklet attached at the given port. * The bytes are written to the position offset * 32. * * This function is used by Brick Viewer during flashing. It should not be * necessary to call it in a normal user program. */ int master_write_bricklet_plugin(Master *master, char port, uint8_t offset, uint8_t chunk[32]); /** * \ingroup BrickMaster * * Reads 32 bytes of firmware from the bricklet attached at the given port. * The bytes are read starting at the position offset * 32. * * This function is used by Brick Viewer during flashing. It should not be * necessary to call it in a normal user program. */ int master_read_bricklet_plugin(Master *master, char port, uint8_t offset, uint8_t ret_chunk[32]); /** * \ingroup BrickMaster * * Returns the UID, the UID where the Brick is connected to, * the position, the hardware and firmware version as well as the * device identifier. * * The position is the position in the stack from '0' (bottom) to '8' (top). * * The device identifier numbers can be found :ref:`here `. * |device_identifier_constant| */ int master_get_identity(Master *master, char ret_uid[8], char ret_connected_uid[8], char *ret_position, uint8_t ret_hardware_version[3], uint8_t ret_firmware_version[3], uint16_t *ret_device_identifier); #ifdef __cplusplus } #endif #endif