Mconfig API

Mconfig (Mesh Network Configuration) is a network configuration solution for ESP-WIFI-MESH, which sends network configuration information to ESP-WIFI-MESH devices in a convenient and efficient manner.

Application Examples

For ESP-MDF examples, please refer to the directory function_demo/mconfig, which includes:

  • Connect to the external network: This can be achieved by the root node via MQTT and HTTP.

Mconfig Blufi

Functions

mdf_err_t mconfig_blufi_init(const mconfig_blufi_config_t *config)

initialize Bluetooth network configuratxion

Attention
The BLE stack must be enabled first through menuconfig configuration.
Return
  • MDF_OK
  • MDF_ERR_INVALID_ARG
  • MDF_FAIL

mdf_err_t mconfig_blufi_deinit(void)

de-initialize Bluetooth network configuration

Return
  • MDF_OK
  • MDF_FAIL

mdf_err_t mconfig_blufi_send(uint8_t *data, size_t size)

This function is called to custom data, send a custom request to the APP to verify the device.

Return
  • MDF_OK
  • MDF_FAIL
  • MDF_ERR_INVALID_ARG__MCONFIG_BLUFI_H__
Parameters
  • data: Custom data value
  • size: The length of custom data

Structures

struct mconfig_blufi_config_t

Bluetooth configuration network related configuration.

Public Members

char name[MCONFIG_BLUFI_NAME_SIZE]

Local device & peripheral name, If the length of name is greater than 10 bytes, it will overwrite custom_data, and custom_data will not be available.

uint16_t company_id

Company Identifiers (https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers)

uint16_t tid

Type of device

uint8_t custom_size

Custom data size

uint8_t custom_data[MCONFIG_BLUFI_CUSTOM_SIZE]

Placed in a Bluetooth broadcast package

bool only_beacon

Send only beacon does not support connection

struct mconfig_blufi_data_t

Mconfig_blufi event callback parameters.

Public Members

uint8_t *data

Custom data value

size_t size

The length of custom data

Macros

MCONFIG_BLUFI_NAME_SIZE

Contains the ending character

MCONFIG_BLUFI_CUSTOM_SIZE

BLE broadcast data packets have a valid length of up to 31 bytes

CONFIG_BLUFI_BROADCAST_OUI

Used to filter other Bluetooth broadcast packets, 3 bytes CONFIG_BLUFI_FILTER_OUI

MDF_EVENT_MCONFIG_BLUFI_STARTED
MDF_EVENT_MCONFIG_BLUFI_STOPED
MDF_EVENT_MCONFIG_BLUFI_CONNECTED
MDF_EVENT_MCONFIG_BLUFI_DISCONNECTED
MDF_EVENT_MCONFIG_BLUFI_STA_CONNECTED
MDF_EVENT_MCONFIG_BLUFI_STA_DISCONNECTED
MDF_EVENT_MCONFIG_BLUFI_FINISH
MDF_EVENT_MCONFIG_BLUFI_RECV

Mconfig Chain

Functions

mdf_err_t mconfig_chain_slave_init(void)

Chain configuration network slave initialization for obtaining network configuration information.

Attention
The received network configuration information is sent to mconfig_queue
Return
  • MDF_OK
  • MDF_FAIL

mdf_err_t mconfig_chain_slave_channel_switch_disable(void)

Disable slave to switch wifi channel.

Attention
Chain configuration network slaves, will constantly switch channels to find the master, if you need to make a wifi connection, You must first disable the switch of the slave wifi channel.
Return
  • MDF_OK
  • MDF_FAIL

mdf_err_t mconfig_chain_slave_channel_switch_enable(void)

Enable slave to switch wifi channel.

Attention
The slave will continuously switch the wifi channel for scanning, which is enabled by default.
Return
  • MDF_OK
  • MDF_FAIL

mdf_err_t mconfig_chain_slave_deinit(void)

Free all resource allocated in mconfig_chain_slave_init and stop chain_slave task.

Return
  • MDF_OK
  • MDF_ERR_NOT_SUPPORTED

mdf_err_t mconfig_chain_master(const mconfig_data_t *config, TickType_t duration_ticks)

Chain configuration network host initialization, sending network configuration information to the slave.

Return
  • MDF_OK
  • MDF_ERR_NOT_SUPPORTED
Parameters
  • config: This configuration information will be sent to the slave device.
  • duration_ticks: Stop chain_master after the set time

mdf_err_t mconfig_chain_filter_rssi(int8_t rssi)

Chain Devices with weak rssi are not allowed to join the network.

Note
If you use it, you must call after mconfig_chain_master
Return
  • MDF_OK
  • MDF_FAIL__MCONFIG_CHAIN_H__
Parameters
  • rssi: When the device signal strength is less than this value, it will not join the network.

Macros

MDF_EVENT_MCONFIG_CHAIN_SLAVE_STARTED
MDF_EVENT_MCONFIG_CHAIN_SLAVE_STOPED
MDF_EVENT_MCONFIG_CHAIN_FINISH
MDF_EVENT_MCONFIG_CHAIN_MASTER_STARTED
MDF_EVENT_MCONFIG_CHAIN_MASTER_STOPED
MDF_EVENT_MCONFIG_CHAIN_FOUND_ROUTER

Mconfig Queue

Functions

mdf_err_t mconfig_queue_write(const mconfig_data_t *mconfig_data, TickType_t wait_ticks)

Write data to the queue of mconfig.

Return
  • MDF_OK
  • MDF_ERR_TIMEOUT
Parameters
  • mconfig_data: information that points to the configuration of the network
  • wait_ticks: wait time if a packet isn’t immediately available

mdf_err_t mconfig_queue_read(mconfig_data_t **mconfig_data, TickType_t wait_ticks)

READ data to the queue of mconfig.

Return
  • MDF_OK
  • MDF_ERR_TIMEOUT__MCONFIG_QUEUE_H__
Parameters
  • mconfig_data: mconfig_data is a secondary pointer and must be called after MDF_FREE is used
  • wait_ticks: wait time if a packet isn’t immediately available

Structures

struct mconfig_whitelist_t

List of configured networks for each device.

Public Members

uint8_t addr[MWIFI_ADDR_LEN]

the address of the device

struct mconfig_data_t

Network configuration information.

Public Members

mwifi_config_t config

Mwifi AP configuration

mwifi_init_config_t init_config

Mwifi initialization configuration, Used only during debugging

uint8_t custom[32 + CONFIG_MCONFIG_CUSTOM_EXTERN_LEN]

Custom data for specific applications, such as: uuid, token, username, etc

uint16_t whitelist_size

The size of the device’s whitelist

mconfig_whitelist_t whitelist_data[0]

Whitelist of devices

Mconfig Security

Functions

mdf_err_t mconfig_random(void *rng_state, uint8_t *output, size_t len)

Generate an array of random numbers.

Return
  • MDF_OK
  • MDF_ERR_INVALID_ARG
Parameters
  • rng_state: The seed of the random number, not used temporarily, you can pass NULL
  • output: Pointer to an array of random numbers
  • len: The length of the array of random numbers

mdf_err_t mconfig_dhm_gen_key(uint8_t *param, ssize_t param_size, uint8_t *privkey, uint8_t *pubkey)

Generate a public and private key using the DHM algorithm.

Return
  • MDF_OK
  • MDF_ERR_INVALID_ARG
Parameters
  • param: DHM configuration parameters
  • param_size: The length of the DHM configuration parameter
  • privkey: DHM’s public key
  • pubkey: DHM’s private key

mdf_err_t mconfig_rsa_gen_key(char *privkey_pem, char *pubkey_pem)

Generate a public and private key using the RSA algorithm.

Return
  • ESP_OK
  • ESP_FAIL
Parameters
  • privkey_pem: RSA public key in pem format
  • pubkey_pem: RSA private key in pem format

mdf_err_t mconfig_rsa_decrypt(const uint8_t *ciphertext, const char *privkey_pem, void *plaintext, size_t plaintext_size)

Use RSA’s public key to encrypt the data.

Return
  • ESP_OK
  • ESP_FAIL
  • MDF_ERR_INVALID_ARG
Parameters
  • ciphertext: Encrypted data
  • privkey_pem: RSA’s private key in pem format
  • plaintext: Unencrypted data
  • plaintext_size: The length of unencrypted data

mdf_err_t mconfig_rsa_encrypt(const void *plaintext, size_t plaintext_size, const char *pubkey_pem, uint8_t *ciphertext)

use RSA’s public key to encrypt the data

Return
  • ESP_OK
  • ESP_FAIL
  • MDF_ERR_INVALID_ARG__MCONFIG_SECURITY_H__
Parameters
  • plaintext: Unencrypted data
  • plaintext_size: The length of unencrypted data
  • pubkey_pem: RSA’s public key in pem format
  • ciphertext: Encrypted data

Macros

MCONFIG_RSA_PRIVKEY_PEM_SIZE
MCONFIG_RSA_PUBKEY_PEM_SIZE
MCONFIG_RSA_KEY_BITS
MCONFIG_RSA_CIPHERTEXT_SIZE
MCONFIG_RSA_PLAINTEXT_MAX_SIZE
MCONFIG_RSA_EXPONENT
MCONFIG_RSA_PUBKEY_PEM_DATA_SIZE
PEM_BEGIN_PUBLIC_KEY
PEM_END_PUBLIC_KEY
PEM_BEGIN_PRIVATE_KEY
PEM_END_PRIVATE_KEY
MCONFIG_DH_PRIVKEY_LEN
MCONFIG_DH_PUBKEY_LEN
MCONFIG_AES_KEY_LEN