Commit a63ba7bd authored by chen.weican's avatar chen.weican

【修改内容】删除zigbee端MQTT代码

【提交人】陈伟灿
parent 30d7c7dd
......@@ -206,8 +206,6 @@ APPLICATION_FILES= \
../../../protocol/zigbee/app/framework/plugin-host/gateway/gateway-support.c \
../../../protocol/zigbee/app/framework/plugin-host/gateway/backchannel-support.c \
../../../protocol/zigbee/app/framework/plugin-host/gateway/gateway-support-cli.c \
../../../protocol/zigbee/app/framework/plugin-host/gateway-relay-mqtt/gateway-relay-mqtt.c \
../../../protocol/zigbee/app/framework/plugin-host/gateway-relay-mqtt/gateway-relay-mqtt-commands.c \
../../../protocol/zigbee/app/framework/plugin/green-power-client/green-power-client.c \
../../../protocol/zigbee/app/framework/plugin/green-power-client/green-power-client-cli.c \
../../../protocol/zigbee/app/framework/plugin/green-power-common/green-power-common.c \
......@@ -237,24 +235,6 @@ APPLICATION_FILES= \
../../../protocol/zigbee/app/framework/plugin/ota-storage-common/ota-storage-common.c \
../../../protocol/zigbee/app/framework/plugin/ota-storage-common/ota-storage-common-cli.c \
../../../protocol/zigbee/app/framework/plugin/ota-storage-posix-filesystem/ota-storage-linux.c \
../../../util/third_party/paho.mqtt.c/src/MQTTAsync.c \
../../../util/third_party/paho.mqtt.c/src/Heap.c \
../../../util/third_party/paho.mqtt.c/src/LinkedList.c \
../../../util/third_party/paho.mqtt.c/src/Log.c \
../../../util/third_party/paho.mqtt.c/src/MQTTPacket.c \
../../../util/third_party/paho.mqtt.c/src/MQTTPacketOut.c \
../../../util/third_party/paho.mqtt.c/src/MQTTPersistence.c \
../../../util/third_party/paho.mqtt.c/src/MQTTProtocolClient.c \
../../../util/third_party/paho.mqtt.c/src/MQTTProtocolOut.c \
../../../util/third_party/paho.mqtt.c/src/Thread.c \
../../../util/third_party/paho.mqtt.c/src/Socket.c \
../../../util/third_party/paho.mqtt.c/src/SocketBuffer.c \
../../../util/third_party/paho.mqtt.c/src/Tree.c \
../../../util/third_party/paho.mqtt.c/src/Messages.c \
../../../util/third_party/paho.mqtt.c/src/StackTrace.c \
../../../util/third_party/paho.mqtt.c/src/utf-8.c \
../../../util/third_party/paho.mqtt.c/src/MQTTPersistenceDefault.c \
../../../util/third_party/paho.mqtt.c/src/Clients.c \
../../../protocol/zigbee/app/framework/plugin/permit-join-manager/permit-join-manager.c \
../../../protocol/zigbee/app/framework/plugin/poll-control-client/poll-control-client.c \
../../../protocol/zigbee/app/framework/plugin/poll-control-client/poll-control-client-cli.c \
......@@ -273,7 +253,6 @@ APPLICATION_FILES= \
../../../protocol/zigbee/app/framework/plugin/test-harness/read-write-attributes.c \
../../../protocol/zigbee/app/framework/plugin/test-harness/test-harness-host.c \
../../../protocol/zigbee/app/framework/plugin/time-server/time-server.c \
../../../util/plugin/plugin-common/transport-mqtt/transport-mqtt.c \
../../../protocol/zigbee/app/framework/plugin/trust-center-backup/trust-center-backup.c \
../../../protocol/zigbee/app/framework/plugin/trust-center-backup/trust-center-backup-cli.c \
../../../protocol/zigbee/app/framework/plugin/trust-center-backup/trust-center-backup-cli-posix.c \
......
......@@ -545,7 +545,7 @@
#define EMBER_AF_API_EZSP_SECURE "protocol/zigbee/app/util/ezsp/secure-ezsp-protocol.h"
// API transport-mqtt from Gateway MQTT Transport plugin
#define EMBER_AF_API_TRANSPORT_MQTT "util/plugin/plugin-common/transport-mqtt/transport-mqtt.h"
//#define EMBER_AF_API_TRANSPORT_MQTT "util/plugin/plugin-common/transport-mqtt/transport-mqtt.h"
// API crc from Unix Library plugin
#define EMBER_AF_API_CRC "platform/base/hal/micro/crc.h"
......
......@@ -217,9 +217,6 @@ PGM EmberAfGenericClusterFunction emberAfFuncArraySimpleMeteringClusterClient[]
extern EmberEventControl emberAfPluginDeviceTableNewDeviceEventControl; \
extern EmberEventControl emberAfPluginEzmodeCommissioningStateEventControl; \
extern EmberEventControl emberAfPluginFormAndJoinCleanupEventControl; \
extern EmberEventControl emberAfPluginGatewayRelayMqttHeartbeatEventControl; \
extern EmberEventControl emberAfPluginGatewayRelayMqttProcessCommandEventControl; \
extern EmberEventControl emberAfPluginGatewayRelayMqttStateUpdateEventControl; \
extern EmberEventControl emberAfPluginGreenPowerClientChannelEventControl; \
extern EmberEventControl emberAfPluginGreenPowerClientExitCommissioningEventControl; \
extern EmberEventControl emberAfPluginIasZoneClientStateMachineEventControl; \
......@@ -230,7 +227,6 @@ PGM EmberAfGenericClusterFunction emberAfFuncArraySimpleMeteringClusterClient[]
extern EmberEventControl emberAfPluginScanDispatchScanEventControl; \
extern EmberEventControl emberAfPluginTestHarnessFlashPageHashEventControl; \
extern EmberEventControl emberAfPluginTestHarnessReadWriteAttributesTimeoutEventControl; \
extern EmberEventControl emberAfPluginTransportMqttBrokerReconnectEventControl; \
extern EmberEventControl emberAfPluginTrustCenterNwkKeyUpdateBroadcastMyEventControl; \
extern EmberEventControl emberAfPluginTrustCenterNwkKeyUpdatePeriodicMyEventControl; \
extern EmberEventControl emberAfPluginTrustCenterNwkKeyUpdateUnicastMyEventControl; \
......@@ -243,9 +239,6 @@ PGM EmberAfGenericClusterFunction emberAfFuncArraySimpleMeteringClusterClient[]
extern void emberAfPluginDeviceTableNewDeviceEventHandler(void); \
extern void emberAfPluginEzmodeCommissioningStateEventHandler(void); \
extern void emberAfPluginFormAndJoinCleanupEventHandler(void); \
extern void emberAfPluginGatewayRelayMqttHeartbeatEventHandler(void); \
extern void emberAfPluginGatewayRelayMqttProcessCommandEventHandler(void); \
extern void emberAfPluginGatewayRelayMqttStateUpdateEventHandler(void); \
extern void emberAfPluginGreenPowerClientChannelEventHandler(void); \
extern void emberAfPluginGreenPowerClientExitCommissioningEventHandler(void); \
extern void emberAfPluginIasZoneClientStateMachineEventHandler(void); \
......@@ -256,7 +249,6 @@ PGM EmberAfGenericClusterFunction emberAfFuncArraySimpleMeteringClusterClient[]
extern void emberAfPluginScanDispatchScanEventHandler(void); \
extern void emberAfPluginTestHarnessFlashPageHashEventHandler(void); \
extern void emberAfPluginTestHarnessReadWriteAttributesTimeoutEventHandler(void); \
extern void emberAfPluginTransportMqttBrokerReconnectEventHandler(void); \
extern void emberAfPluginTrustCenterNwkKeyUpdateBroadcastMyEventHandler(void); \
extern void emberAfPluginTrustCenterNwkKeyUpdatePeriodicMyEventHandler(void); \
extern void emberAfPluginTrustCenterNwkKeyUpdateUnicastMyEventHandler(void); \
......@@ -298,9 +290,6 @@ PGM EmberAfGenericClusterFunction emberAfFuncArraySimpleMeteringClusterClient[]
{ &emberAfPluginDeviceTableNewDeviceEventControl, emberAfPluginDeviceTableNewDeviceEventHandler }, \
{ &emberAfPluginEzmodeCommissioningStateEventControl, emberAfPluginEzmodeCommissioningStateEventHandler }, \
{ &emberAfPluginFormAndJoinCleanupEventControl, emberAfPluginFormAndJoinCleanupEventHandler }, \
{ &emberAfPluginGatewayRelayMqttHeartbeatEventControl, emberAfPluginGatewayRelayMqttHeartbeatEventHandler }, \
{ &emberAfPluginGatewayRelayMqttProcessCommandEventControl, emberAfPluginGatewayRelayMqttProcessCommandEventHandler }, \
{ &emberAfPluginGatewayRelayMqttStateUpdateEventControl, emberAfPluginGatewayRelayMqttStateUpdateEventHandler }, \
{ &emberAfPluginGreenPowerClientChannelEventControl, emberAfPluginGreenPowerClientChannelEventHandler }, \
{ &emberAfPluginGreenPowerClientExitCommissioningEventControl, emberAfPluginGreenPowerClientExitCommissioningEventHandler }, \
{ &emberAfPluginIasZoneClientStateMachineEventControl, emberAfPluginIasZoneClientStateMachineEventHandler }, \
......@@ -311,7 +300,6 @@ PGM EmberAfGenericClusterFunction emberAfFuncArraySimpleMeteringClusterClient[]
{ &emberAfPluginScanDispatchScanEventControl, emberAfPluginScanDispatchScanEventHandler }, \
{ &emberAfPluginTestHarnessFlashPageHashEventControl, emberAfPluginTestHarnessFlashPageHashEventHandler }, \
{ &emberAfPluginTestHarnessReadWriteAttributesTimeoutEventControl, emberAfPluginTestHarnessReadWriteAttributesTimeoutEventHandler }, \
{ &emberAfPluginTransportMqttBrokerReconnectEventControl, emberAfPluginTransportMqttBrokerReconnectEventHandler }, \
{ &emberAfPluginTrustCenterNwkKeyUpdateBroadcastMyEventControl, emberAfPluginTrustCenterNwkKeyUpdateBroadcastMyEventHandler }, \
{ &emberAfPluginTrustCenterNwkKeyUpdatePeriodicMyEventControl, emberAfPluginTrustCenterNwkKeyUpdatePeriodicMyEventHandler }, \
{ &emberAfPluginTrustCenterNwkKeyUpdateUnicastMyEventControl, emberAfPluginTrustCenterNwkKeyUpdateUnicastMyEventHandler }, \
......@@ -369,11 +357,9 @@ PGM EmberAfGenericClusterFunction emberAfFuncArraySimpleMeteringClusterClient[]
void emberAfPluginReportingInitCallback(void); \
void emberAfPluginCountersInitCallback(void); \
void emberAfPluginConcentratorInitCallback(void); \
void emberAfPluginGatewayRelayMqttInitCallback(void); \
void emberAfPluginDeviceTableInitCallback(void); \
void emberAfPluginCommandRelayInitCallback(void); \
void emberAfPluginPermitJoinManagerInitCallback(void); \
void emberAfPluginTransportMqttInitCallback(void); \
#define EMBER_AF_GENERATED_PLUGIN_INIT_FUNCTION_CALLS \
......@@ -383,11 +369,9 @@ PGM EmberAfGenericClusterFunction emberAfFuncArraySimpleMeteringClusterClient[]
emberAfPluginReportingInitCallback(); \
emberAfPluginCountersInitCallback(); \
emberAfPluginConcentratorInitCallback(); \
emberAfPluginGatewayRelayMqttInitCallback(); \
emberAfPluginDeviceTableInitCallback(); \
emberAfPluginCommandRelayInitCallback(); \
emberAfPluginPermitJoinManagerInitCallback(); \
emberAfPluginTransportMqttInitCallback(); \
......
......@@ -43,7 +43,7 @@ void emAfResetAttributes(uint8_t endpointId)
// PreCommandReceived function declarations.
bool emAfPluginCommandRelayPreCommandReceivedCallback(EmberAfClusterCommand* cmd);
bool emAfPluginDeviceTablePreCommandReceivedCallback(EmberAfClusterCommand* cmd);
bool emberAfPluginGatewayRelayMqttPreCommandReceivedCallback(EmberAfClusterCommand* cmd);
//bool emberAfPluginGatewayRelayMqttPreCommandReceivedCallback(EmberAfClusterCommand* cmd);
bool emberAfPreCommandReceivedCallback(EmberAfClusterCommand* cmd);
void rpc_PreCommandReceivedCallback(EmberAfClusterCommand* cmd);
......@@ -52,19 +52,17 @@ bool emAfPreCommandReceived(EmberAfClusterCommand* cmd)
rpc_PreCommandReceivedCallback(cmd);
return (emAfPluginCommandRelayPreCommandReceivedCallback(cmd)
|| emAfPluginDeviceTablePreCommandReceivedCallback(cmd)
|| emberAfPluginGatewayRelayMqttPreCommandReceivedCallback(cmd)
|| emberAfPreCommandReceivedCallback(cmd));
}
// PreZDOMessageReceived function declarations.
bool emAfPluginDeviceTablePreZDOMessageReceived(EmberNodeId emberNodeId,EmberApsFrame* apsFrame,uint8_t* message,uint16_t length);
bool emberAfPluginGatewayRelayMqttPreZDOMessageReceivedCallback(EmberNodeId emberNodeId,EmberApsFrame* apsFrame,uint8_t* message,uint16_t length);
//bool emberAfPluginGatewayRelayMqttPreZDOMessageReceivedCallback(EmberNodeId emberNodeId,EmberApsFrame* apsFrame,uint8_t* message,uint16_t length);
bool emberAfPreZDOMessageReceivedCallback(EmberNodeId emberNodeId,EmberApsFrame* apsFrame,uint8_t* message,uint16_t length);
bool emAfPreZDOMessageReceived(EmberNodeId emberNodeId,EmberApsFrame* apsFrame,uint8_t* message,uint16_t length)
{
return (emAfPluginDeviceTablePreZDOMessageReceived(emberNodeId, apsFrame, message, length)
|| emberAfPluginGatewayRelayMqttPreZDOMessageReceivedCallback(emberNodeId, apsFrame, message, length)
|| emberAfPreZDOMessageReceivedCallback(emberNodeId, apsFrame, message, length));
}
......@@ -87,7 +85,7 @@ void emAfZigbeeKeyEstablishment(EmberEUI64 partner, EmberKeyStatus status)
}
// ReadAttributesResponse function declarations.
bool emberAfReadAttributesResponseCallback(EmberAfClusterId clusterId,uint8_t* buffer,uint16_t bufLen);
//bool emberAfReadAttributesResponseCallback(EmberAfClusterId clusterId,uint8_t* buffer,uint16_t bufLen);
......@@ -105,8 +103,8 @@ bool emAfReportAttributes(EmberAfClusterId clusterId,uint8_t * buffer,uint16_t b
}
bool emAfReadAttributesResponse(EmberAfClusterId clusterId,uint8_t* buffer,uint16_t bufLen)
{
rpc_ReadAttributesResponseCallback(clusterId, buffer, bufLen);
return emberAfReadAttributesResponseCallback(clusterId, buffer, bufLen);
return rpc_ReadAttributesResponseCallback(clusterId, buffer, bufLen);
//return emberAfReadAttributesResponseCallback(clusterId, buffer, bufLen);
}
......
......@@ -10,7 +10,7 @@
#include PLATFORM_HEADER
#include "app/framework/plugin/ota-server-policy/ota-server-policy.h"
#include CONFIGURATION_HEADER
#include EMBER_AF_API_TRANSPORT_MQTT
//#include EMBER_AF_API_TRANSPORT_MQTT
......
......@@ -20,7 +20,7 @@
#include PLATFORM_HEADER
#include "app/framework/plugin/ota-server-policy/ota-server-policy.h"
#include CONFIGURATION_HEADER
#include EMBER_AF_API_TRANSPORT_MQTT
//#include EMBER_AF_API_TRANSPORT_MQTT
......@@ -165,9 +165,9 @@ bool emberAfConfigureReportingCommandCallback(const EmberAfClusterCommand *cmd);
* always
* @param bufLen The length in bytes of the list. Ver.: always
*/
bool emberAfConfigureReportingResponseCallback(EmberAfClusterId clusterId,
uint8_t *buffer,
uint16_t bufLen);
//bool emberAfConfigureReportingResponseCallback(EmberAfClusterId clusterId,
// uint8_t *buffer,
// uint16_t bufLen);
/** @brief Default Response
*
* This function is called by the application framework when a Default Response
......@@ -753,12 +753,12 @@ void emberAfMainTickCallback(void);
* @param message Ver.: always
* @param status Ver.: always
*/
bool emberAfMessageSentCallback(EmberOutgoingMessageType type,
uint16_t indexOrDestination,
EmberApsFrame* apsFrame,
uint16_t msgLen,
uint8_t* message,
EmberStatus status);
//bool emberAfMessageSentCallback(EmberOutgoingMessageType type,
// uint16_t indexOrDestination,
// EmberApsFrame* apsFrame,
// uint16_t msgLen,
// uint8_t* message,
// EmberStatus status);
/** @brief Ncp Init
*
* This function is called when the network coprocessor is being initialized,
......@@ -1344,7 +1344,7 @@ bool emberAfPreCommandReceivedCallback(EmberAfClusterCommand* cmd);
*
* @param incomingMessage Ver.: always
*/
bool emberAfPreMessageReceivedCallback(EmberAfIncomingMessage* incomingMessage);
//bool emberAfPreMessageReceivedCallback(EmberAfIncomingMessage* incomingMessage);
/** @brief Pre Message Send
*
* This function is called by the framework when it is about to pass a message
......@@ -1364,8 +1364,8 @@ bool emberAfPreMessageReceivedCallback(EmberAfIncomingMessage* incomingMessage);
* @param status A pointer to the status code value that will be returned to the
* caller. Ver.: always
*/
bool emberAfPreMessageSendCallback(EmberAfMessageStruct* messageStruct,
EmberStatus* status);
//bool emberAfPreMessageSendCallback(EmberAfMessageStruct* messageStruct,
//EmberStatus* status);
/** @brief Pre Ncp Reset
*
* This function will be called prior to the reset of the NCP by the host.
......@@ -1423,9 +1423,9 @@ bool emberAfReadReportingConfigurationCommandCallback(const EmberAfClusterComman
* records. Ver.: always
* @param bufLen The length in bytes of the list. Ver.: always
*/
bool emberAfReadReportingConfigurationResponseCallback(EmberAfClusterId clusterId,
uint8_t *buffer,
uint16_t bufLen);
//bool emberAfReadReportingConfigurationResponseCallback(EmberAfClusterId clusterId,
// uint8_t *buffer,
// uint16_t bufLen);
/** @brief Registration Abort
*
* This callback is called when the device should abort the registration
......@@ -26292,11 +26292,11 @@ void emberAfPluginFormAndJoinUnusedPanIdFoundCallback(EmberPanId panId,
* @param maxDataSize Ver.: always
* @param offset Ver.: always
*/
void emberAfPluginOtaServerUpdateStartedCallback(uint16_t manufacturerId,
uint16_t imageTypeId,
int32u firmwareVersion,
uint8_t maxDataSize,
int32u offset);
//void emberAfPluginOtaServerUpdateStartedCallback(uint16_t manufacturerId,
// uint16_t imageTypeId,
// int32u firmwareVersion,
// uint8_t maxDataSize,
// int32u offset);
/** @brief OTA Server Block Sent Callback
*
* This function will be called when a block is sent to a device.
......@@ -26306,10 +26306,10 @@ void emberAfPluginOtaServerUpdateStartedCallback(uint16_t manufacturerId,
* @param imageTypeId Ver.: always
* @param firmwareVersion Ver.: always
*/
void emberAfPluginOtaServerBlockSentCallback(uint8_t actualLength,
uint16_t manufacturerId,
uint16_t imageTypeId,
int32u firmwareVersion);
//void emberAfPluginOtaServerBlockSentCallback(uint8_t actualLength,
//uint16_t manufacturerId,
//uint16_t imageTypeId,
//int32u firmwareVersion);
/** @brief OTA Server Update Complete Callback
*
* This function will be called when an OTA update has finished.
......@@ -26320,11 +26320,11 @@ void emberAfPluginOtaServerBlockSentCallback(uint8_t actualLength,
* @param source Source node id.
* @param status Status of update.
*/
void emberAfPluginOtaServerUpdateCompleteCallback(uint16_t manufacturerId,
uint16_t imageTypeId,
uint32_t firmwareVersion,
EmberNodeId source,
uint8_t status);
//void emberAfPluginOtaServerUpdateCompleteCallback(uint16_t manufacturerId,
// uint16_t imageTypeId,
// uint32_t firmwareVersion,
// EmberNodeId source,
// uint8_t status);
/** @brief Ota Server Image Block Request
*
* This function is called when the server application receives an image block
......@@ -26598,7 +26598,7 @@ void emberAfPluginDeviceTableStateChangeCallback(EmberNodeId nodeId,
* This callback is called when a device table has been cleared.
*
*/
void emberAfPluginDeviceTableClearedCallback(void);
//void emberAfPluginDeviceTableClearedCallback(void);
/** @brief NewDevice
*
* This callback is called when a new device joins the gateway.
......@@ -26653,7 +26653,7 @@ void emberAfPluginDeviceTableIndexAddedCallback(uint16_t index);
* Called when relays rules are added or removed.
*
*/
void emberAfPluginCommandRelayChangedCallback(void);
//void emberAfPluginCommandRelayChangedCallback(void);
/** @} END Command Relay Plugin Callbacks */
......@@ -26667,7 +26667,7 @@ void emberAfPluginCommandRelayChangedCallback(void);
* @param state Contains the new and current EmberAfPluginTransportMqttState
* state.
*/
void emberAfPluginTransportMqttStateChangedCallback(EmberAfPluginTransportMqttState state);
//void emberAfPluginTransportMqttStateChangedCallback(EmberAfPluginTransportMqttState state);
/** @brief MQTT message arrived.
*
* This function is called when the MQTT client for the gateway receives
......@@ -19,6 +19,7 @@
#define DEVICE_SN_MAXLEN (32 + 1)
#define TSL_PATH_MAXLEN (64 + 1)
#define DM_UTILS_UINT16_STRLEN (5)
......@@ -78,6 +79,7 @@ typedef enum {
} kk_tsl_data_target_e;
typedef enum {
TSL_SERVICE_GET_FAILED = -13,
TSL_SERVICE_SET_FAILED = -12,
TSL_EVENT_GET_FAILED = -11,
......
// Copyright 2017 Silicon Laboratories, Inc. *80*
typedef struct {
uint8_t * commandString;
void (*functionPtr)(const uint8_t *);
} EmAfPluginGatewayRelayMqttCommand;
#define COMMAND_STRING_START_NETWORK \
"plugin network-creator start\0"
#define COMMAND_STRING_FORM_NETWORK \
"plugin network-creator form\0"
#define COMMAND_STRING_OPEN_NETWORK \
"plugin network-creator-security open-network\0"
#define COMMAND_STRING_CLOSE_NETWORK \
"plugin network-creator-security close-network\0"
#define COMMAND_STRING_SET_KEY \
"plugin network-creator-security set-joining-link-key\0"
#define COMMAND_STRING_CLEAR_KEY \
"plugin network-creator-security clear-joining-link-keys\0"
#define COMMAND_STRING_OPEN_WITH_KEY \
"plugin network-creator-security open-with-key\0"
#define COMMAND_STRING_ZCL_SEND \
"plugin device-table send\0"
#define COMMAND_STRING_DEVICE_TABLE_CLEAR \
"plugin device-table clear\0"
#define COMMAND_STRING_COMMAND_RElAY_ADD \
"plugin command-relay add\0"
#define COMMAND_STRING_COMMAND_RELAY_REMOVE \
"plugin command-relay remove\0"
#define COMMAND_STRING_COMMAND_RELAY_CLEAR \
"plugin command-relay clear\0"
#define COMMAND_STRING_OTA_RELOAD \
"plugin ota-storage-common reload\0"
#define COMMAND_STRING_OTA_POLICY_QUERY \
"plugin ota-server policy query\0"
#define COMMAND_STRING_OTA_NOTIFY \
"plugin ota-server notify\0"
#define COMMAND_STRING_IAS_ZONE_CLEAR \
"plugin ias-zone-client clear-all\0"
#define COMMAND_STRING_ZDO_LEAVE \
"zdo leave\0"
#define COMMAND_STRING_ZDO_BIND \
"zdo bind\0"
#define COMMAND_STRING_BROAD_PJOIN \
"network broad-pjoin\0"
#define COMMAND_STRING_NETWORK_LEAVE \
"network leave\0"
#define COMMAND_STRING_NETWORK_FORM \
"network form\0"
#define COMMAND_STRING_ZCL_GLOBAL_DIRECTION \
"zcl global direction\0"
#define COMMAND_STRING_ZCL_GLOBAL_READ \
"zcl global read\0"
#define COMMAND_STRING_ZCL_GLOBAL_WRITE \
"zcl global write\0"
#define COMMAND_STRING_ZCL_ON_OFF \
"zcl on-off\0"
#define COMMAND_STRING_ZCL_ON_MOVE_TO_LEVEL \
"zcl level-control o-mv-to-level\0"
#define COMMAND_STRING_ZCL_MOVE_TO_COLORTEMP \
"zcl color-control movetocolortemp\0"
#define COMMAND_STRING_ZCL_MOVE_TO_HUESAT \
"zcl color-control movetohueandsat\0"
#define COMMAND_STRING_ZCL_SEND_ME_A_REPORT \
"zcl global send-me-a-report\0"
#define COMMAND_STRING_ZCL_GROUP \
"zcl groups\0"
#define COMMAND_STRING_OPTION_SECURITY_ALLOW_UNSECURE_REJOIN \
"option security set-allow-trust-center-rejoin-using-well-known-key\0"
#define COMMAND_STRING_OPTION_SECURITY_SET_UNSECURE_REJOIN_TIMEOUT \
"option security set-allow-trust-center-rejoin-using-well-known-key-timeout\0"
//forward declaration of command functions
void emAfPluginGatewayRelayMqttStartNetwork(const uint8_t *);
void emAfPluginGatewayRelayMqttStartNetworkWithParameters(const uint8_t *);
void emAfPluginGatewayRelayMqttCommandRelayAdd(const uint8_t *);
void emAfPluginGatewayRelayMqttCommandRelayRemove(const uint8_t *);
void emAfPluginGatewayRelayMqttCommandRelayClear(const uint8_t *);
void emAfPluginGatewayRelayMqttZdoLeave(const uint8_t *);
void emAfPluginGatewayRelayMqttZdoBind(const uint8_t *);
void emAfPluginGatewayRelayMqttNetworkBoardPjoin(const uint8_t *);
void emAfPluginGatewayRelayMqttNetworkLeave(const uint8_t *);
void emAfPluginGatewayRelayMqttNetworkForm(const uint8_t *);
void emAfPluginGatewayRelayMqttZclGlobalDirection(const uint8_t *);
void emAfPluginGatewayRelayMqttZclGlobalRead(const uint8_t *);
void emAfPluginGatewayRelayMqttZclGlobalWrite(const uint8_t *);
void emAfPluginGatewayRelayMqttZclOnOff(const uint8_t *);
void emAfPluginGatewayRelayMqttZclOnAndMoveToLevel(const uint8_t *);
void emAfPluginGatewayRelayMqttZclMoveToColorTemp(const uint8_t *);
void emAfPluginGatewayRelayMqttZclMoveToHueAndSat(const uint8_t *);
void emAfPluginGatewayRelayMqttZclGlobalSendMeAReport(const uint8_t *);
void emAfPluginGatewayRelayMqttZclGroup(const uint8_t *);
void emAfPluginGatewayRelayMqttOpenNetwork(const uint8_t *);
void emAfPluginGatewayRelayMqttCloseNetwork(const uint8_t *);
void emAfPluginGatewayRelayMqttZclSend(const uint8_t *);
void emAfPluginGatewayRelayMqttDeviceTableClear(const uint8_t *);
void emAfPluginGatewayRelayMqttSetJoiningKey(const uint8_t *);
void emAfPluginGatewayRelayMqttClearJoiningKeys(const uint8_t *);
void emAfPluginGatewayRelayMqttOpenWithKey(const uint8_t *);
void emAfPluginGatewayRelayMqttOtaStorageCommonReload(const uint8_t *);
void emAfPluginGatewayRelayMqttOtaServerPolicyQuery(const uint8_t *);
void emAfPluginGatewayRelayMqttOtaServerNotify(const uint8_t *);
void emAfPluginGatewayRelayMqttIasZoneClientClearAll(const uint8_t *);
void emAfPluginGatewayRelayMqttAllowRejoin(const uint8_t *);
void emAfPluginGatewayRelayMqttSetRejoinTimeout(const uint8_t *);
void emAfPluginGatewayRelayMqttCommandsProccessing(uint8_t * inputString);
// Copyright 2017 Silicon Laboratories, Inc. *80*
#ifndef SILABS_CHANNEL_MQTT_H
#define SILABS_CHANNEL_MQTT_H
/** @brief Sets the heart beat interval.
*
* Sets the MQTT heart beat interval in milliseconds.
*
* @param intervalMs The heart beat interval in milliseconds.
*/
void emberPluginGatewayRelayMqttSetHeartBeat(uint16_t intervalMs);
#endif
name=Gateway Relay Mqtt
category=Unix Host
description=Plugin to implement the Mqtt communication commands and data interpretation
qualityString=Test Tool
quality=test
architecture=unix,simulation-ezsp
sourceFiles=gateway-relay-mqtt.c, gateway-relay-mqtt-commands.c
providedApis=
requiredPlugins=device-table,paho.mqtt.c,command-relay, ota-server
implementedCallbacks=emberAfPluginGatewayRelayMqttInitCallback, emberAfReadAttributesResponseCallback, emberAfReportAttributesCallback, emberAfConfigureReportingResponseCallback, emberAfReadReportingConfigurationResponseCallback, emberAfPluginDeviceTableNewDeviceCallback, emberAfPluginDeviceTableDeviceLeftCallback, emberAfPluginDeviceTableRejoinDeviceCallback, emberAfPluginDeviceTableStateChangeCallback, emberAfPluginDeviceTableClearedCallback, emberAfPluginCommandRelayChangedCallback, emberAfPluginTransportMqttStateChangedCallback, emberAfPluginTransportMqttMessageArrivedCallback, emberAfMessageSentCallback, emberAfPreMessageReceivedCallback, emberAfPreMessageSendCallback, emberAfPluginOtaServerUpdateCompleteCallback, emberAfPluginOtaServerBlockSentCallback, emberAfPluginOtaServerUpdateStartedCallback
events=Heartbeat, StateUpdate, ProcessCommand
setup(bookkeeping) {
preCommandReceived=emberAfPluginGatewayRelayMqttPreCommandReceivedCallback
preZDOMessageReceived=emberAfPluginGatewayRelayMqttPreZDOMessageReceivedCallback
}
......@@ -141,7 +141,7 @@ void emberAfPluginCommandRelaySave(void)
fclose(fp);
#endif // #if defined(EZSP_HOST) && !defined(EMBER_TEST)
emberAfPluginCommandRelayChangedCallback();
//emberAfPluginCommandRelayChangedCallback();
}
void emberAfPluginCommandRelayLoad(void)
......@@ -191,7 +191,7 @@ void emberAfPluginCommandRelayLoad(void)
#endif // #if defined(EZSP_HOST) && !defined(EMBER_TEST)
emberAfPluginCommandRelayChangedCallback();
//emberAfPluginCommandRelayChangedCallback();
}
void emAfPluginCommandRelayPrint(void)
......
......@@ -29,7 +29,7 @@ void emberAfPluginDeviceTableStateChangeCallback(EmberNodeId nodeId, uint8_t sta
void emberAfPluginDeviceTableNewDeviceCallback(EmberEUI64 eui64);
void emberAfPluginDeviceTableRejoinDeviceCallback(EmberEUI64 newNodeEui64);
void emberAfPluginDeviceTableDeviceLeftCallback(EmberEUI64 newNodeEui64);
void emberAfPluginDeviceTableClearedCallback(void);
//void emberAfPluginDeviceTableClearedCallback(void);
// new endpoint APIs
void emAfDeviceTableCopyDeviceTableEntry(uint16_t fromIndex, uint16_t toIndex);
......
......@@ -168,7 +168,7 @@ void emberAfDeviceTableClear(void)
{
emAfDeviceTableInit();
emAfDeviceTableSave();
emberAfPluginDeviceTableClearedCallback();
//emberAfPluginDeviceTableClearedCallback();
}
uint16_t emberAfDeviceTableGetIndexFromEui64AndEndpoint(EmberEUI64 eui64,
......
......@@ -207,11 +207,11 @@ static void printBlockRequestInfo(const EmberAfOtaImageId* id,
id->firmwareVersion,
maxDataSize,
offset);
emberAfPluginOtaServerUpdateStartedCallback(id->manufacturerId,
id->imageTypeId,
id->firmwareVersion,
maxDataSize,
offset);
//emberAfPluginOtaServerUpdateStartedCallback(id->manufacturerId,
//id->imageTypeId,
// id->firmwareVersion,
// maxDataSize,
// offset);
}
// This function is made non-static for the Page request code
......@@ -288,11 +288,11 @@ uint8_t emAfOtaImageBlockRequestHandler(EmberAfImageBlockRequestCallbackStruct*
&actualLength)
|| actualLength == 0) {
status = EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE;
emberAfPluginOtaServerUpdateCompleteCallback(callbackData->id->manufacturerId,
callbackData->id->imageTypeId,
callbackData->id->firmwareVersion,
callbackData->source,
status);
// emberAfPluginOtaServerUpdateCompleteCallback(callbackData->id->manufacturerId,
// callbackData->id->imageTypeId,
// callbackData->id->firmwareVersion,
// callbackData->source,
// status);
}
if (status != EMBER_ZCL_STATUS_SUCCESS) {
......@@ -313,10 +313,10 @@ uint8_t emAfOtaImageBlockRequestHandler(EmberAfImageBlockRequestCallbackStruct*
emberAfPutBlockInResp(data, actualLength);
emberAfSetCommandEndpoints(otaServerEndpoint, callbackData->clientEndpoint);
emberAfPluginOtaServerBlockSentCallback((uint8_t)actualLength,
callbackData->id->manufacturerId,
callbackData->id->imageTypeId,
callbackData->id->firmwareVersion);
//emberAfPluginOtaServerBlockSentCallback((uint8_t)actualLength,
// callbackData->id->manufacturerId,
// callbackData->id->imageTypeId,
// callbackData->id->firmwareVersion);
// We can't send more than 128 bytes in a packet so we can safely cast this
// to a 1-byte number.
return (uint8_t)actualLength;
......@@ -360,11 +360,11 @@ static void upgradeEndRequestHandler(EmberNodeId source,
if (status == EMBER_ZCL_STATUS_SUCCESS) {
if (goAhead) {
constructUpgradeEndResponse(imageId, upgradeTime);
emberAfPluginOtaServerUpdateCompleteCallback(imageId->manufacturerId,
imageId->imageTypeId,
imageId->firmwareVersion,
source,
status);
//emberAfPluginOtaServerUpdateCompleteCallback(imageId->manufacturerId,
// imageId->imageTypeId,
// imageId->firmwareVersion,
// source,
// status);
return;
} else {
defaultRespStatus = EMBER_ZCL_STATUS_ABORT;
......
......@@ -46,10 +46,10 @@ void emAfOtaServerPrepareResponse(bool useDefaultResponse,
* @param imageTypeId The image Type ID.
* @param firmwareVersion Firmware Version.
*/
void emberAfPluginOtaServerBlockSentCallback(uint8_t actualLength,
uint16_t manufacturerId,
uint16_t imageTypeId,
uint32_t firmwareVersion);
//void emberAfPluginOtaServerBlockSentCallback(uint8_t actualLength,
//uint16_t manufacturerId,
//uint16_t imageTypeId,
//uint32_t firmwareVersion);
/** @brief OTA Server Update Started Callback.
*
......@@ -61,11 +61,11 @@ void emberAfPluginOtaServerBlockSentCallback(uint8_t actualLength,
* @param maxDataSize Maximum data size.
* @param offset Offset.
*/
void emberAfPluginOtaServerUpdateStartedCallback(uint16_t manufacturerId,
uint16_t imageTypeId,
uint32_t firmwareVersion,
uint8_t maxDataSize,
uint32_t offset);
//void emberAfPluginOtaServerUpdateStartedCallback(uint16_t manufacturerId,
// uint16_t imageTypeId,
// uint32_t firmwareVersion,
// uint8_t maxDataSize,
// uint32_t offset);
/** @brief OTA Server Update Complete Callback.
*
......@@ -77,11 +77,11 @@ void emberAfPluginOtaServerUpdateStartedCallback(uint16_t manufacturerId,
* @param source The source node ID.
* @param status An update status.
*/
void emberAfPluginOtaServerUpdateCompleteCallback(uint16_t manufacturerId,
uint16_t imageTypeId,
uint32_t firmwareVersion,
EmberNodeId source,
uint8_t status);
//void emberAfPluginOtaServerUpdateCompleteCallback(uint16_t manufacturerId,
// uint16_t imageTypeId,
// uint32_t firmwareVersion,
// EmberNodeId source,
// uint8_t status);
#if defined(EMBER_TEST) && !defined(EM_AF_TEST_HARNESS_CODE)
#define EM_AF_TEST_HARNESS_CODE
......
......@@ -286,10 +286,10 @@ static EmberStatus send(EmberOutgoingMessageType type,
// Called prior to fragmentation in case the mesasge does not go out over the
// Zigbee radio, and instead goes to some other transport that does not require
// low level ZigBee fragmentation.
if (emberAfPreMessageSendCallback(&messageStruct,
&status)) {
return status;
}
//if (emberAfPreMessageSendCallback(&messageStruct,
// &status)) {
//return status;
//}
}
// SE 1.4 requires an option to disable APS ACK and Default Response
......@@ -824,9 +824,9 @@ void emAfIncomingMessageHandler(EmberIncomingMessageType type,
im.bindingTableIndex = emberAfGetBindingIndex();
im.addressTableIndex = emberAfGetAddressIndex();
im.networkIndex = emberGetCurrentNetwork();
if (emberAfPreMessageReceivedCallback(&im)) {
return;
}
// if (emberAfPreMessageReceivedCallback(&im)) {
//return;
// }
// Handle service discovery responses.
if (emAfServiceDiscoveryIncoming(sender,
......@@ -920,13 +920,14 @@ void emAfMessageSentHandler(EmberOutgoingMessageType type,
#ifdef EMBER_AF_GENERATED_PLUGIN_MESSAGE_SENT_FUNCTION_CALLS
EMBER_AF_GENERATED_PLUGIN_MESSAGE_SENT_FUNCTION_CALLS
#endif
#if 0
emberAfMessageSentCallback(type,
indexOrDestination,
apsFrame,
messageLength,
messageContents,
status);
#endif
}
#ifdef EMBER_AF_PLUGIN_FRAGMENTATION
......
......@@ -561,22 +561,22 @@ bool emAfProcessGlobalCommand(EmberAfClusterCommand *cmd)
// ([status:1] [direction:1] [attribute id:2])+
case ZCL_CONFIGURE_REPORTING_RESPONSE_COMMAND_ID:
if (!emberAfConfigureReportingResponseCallback(clusterId,
message + msgIndex,
msgLen - msgIndex)) {
//if (!emberAfConfigureReportingResponseCallback(clusterId,
// message + msgIndex,
// msgLen - msgIndex)) {
emberAfSendDefaultResponse(cmd, EMBER_ZCL_STATUS_SUCCESS);
}
// }
return true;
// ([status:1] [direction:1] [attribute id:2] [type:0/1] ...
// ... [min interval:0/2] [max interval:0/2] [reportable change:0/V] ...
// ... [timeout:0/2])+
case ZCL_READ_REPORTING_CONFIGURATION_RESPONSE_COMMAND_ID:
if (!emberAfReadReportingConfigurationResponseCallback(clusterId,
message + msgIndex,
msgLen - msgIndex)) {
//if (!emberAfReadReportingConfigurationResponseCallback(clusterId,
//message + msgIndex,
//msgLen - msgIndex)) {
emberAfSendDefaultResponse(cmd, EMBER_ZCL_STATUS_SUCCESS);
}
//}
return true;
// ([attribute id:2] [type:1] [data:V])+
......
#include PLATFORM_HEADER
#include CONFIGURATION_HEADER
#include EMBER_AF_API_TRANSPORT_MQTT
/** @brief MQTT client state is changed.
*
* This function is called when the state of the MQTT client changes.
*
* @param state Contains the new and current EmberAfPluginTransportMqttState
* state.
*/
void emberAfPluginTransportMqttStateChangedCallback(EmberAfPluginTransportMqttState state)
{
}
/** @brief MQTT message arrived.
*
* This function is called when the MQTT client for the gateway receives
* an incoming message on a topic. If the message is processed by the application,
* return true. If the message is not processed, return false. This
* function is called on a separate thread, so no stack calls should be made
* within the implementation of this function. Instead, use a global variable in
* that function to communicate the message arrival to a stack event or timer
* running from the main loop.
*
* @param topic A string containing the topic for the message that arrived. While
* the underlying MQTT libraries allow NULL characters in a topic, NULL characters
* are not supported in this implementation so the `topic` parameter can be
* assumed to be NULL terminated.
* @param payload A string containing the payload for the message that arrived.
*/
bool emberAfPluginTransportMqttMessageArrivedCallback(const char* topic,
const char* payload)
{
// Return true, this tells the MQTT client we have handled the incoming message
// Even though this is a stub function we still need to let Paho MQTT know that
// the message was received
return true;
}
name=Gateway MQTT Transport
category=Utility
qualityString=Test Tool
quality=test
architecture=unix,simulation,simulation-ezsp
description=Implements the generic transport layer between a gateway and a broker using MQTT. This plugin makes use of Paho MQTT.
providedApis=transport-mqtt
api.transport-mqtt.header=transport-mqtt.h
sourceFiles=transport-mqtt.c
requiredPlugins=paho.mqtt.c
implementedCallbacks=emberAfPluginTransportMqttInitCallback
includedByDefault=false
events=BrokerReconnect
options=brokerAddress, qos, clientIdPrefix
brokerAddress.name=MQTT Broker Address (format = "tcp://<host>:<port>")
brokerAddress.description=The address/IP of the MQTT broker to connect to.
brokerAddress.type=STRING:1,50
brokerAddress.default=tcp://localhost:1883
qos.name=MQTT Quality of Service
qos.description=Quality of Service
qos.type=LIST:QoS0 - Only once,QoS1 - At least once,QoS2 - Exactly once
qos.default=QoS2 - Exactly once
clientIdPrefix.name=MQTT Client ID Prefix (format = <prefix><eui>)
clientIdPrefix.description=Prefix to add on to the gateway client ID (ex: gw<eui>)
clientIdPrefix.type=STRING:1,256
clientIdPrefix.default=gw
// Copyright 2016 Silicon Laboratories, Inc. *80*
#ifndef __TRANSPORT_MQTT_H
#define __TRANSPORT_MQTT_H
typedef enum {
EMBER_AF_PLUGIN_TRANSPORT_MQTT_STATE_CONNECTED,
EMBER_AF_PLUGIN_TRANSPORT_MQTT_STATE_DISCONNECTED
} EmberAfPluginTransportMqttState;
/** @brief MQTT Subscribe
*
* This function should be called to subscribe to a specific topic. If the
* publish succeeds then true should be returned, if the publish fails or
* there is no connection to a broker false should be returned.
*
* @param topic String contains the topic for a message subscription
*/
bool emberAfPluginTransportMqttSubscribe(const char* topic);
/** @brief MQTT Publish
*
* This function should be called to publish to a specific topic. If the publish
* succeeds then true should be returned, if the publish fails or there is no
* connection to a broker false should be returned.
*
* @param topic String contains the topic for the message to be published
* @param content String contains the payload for the message to be published
*/
bool emberAfPluginTransportMqttPublish(const char* topic, const char* paylaod);
#endif // __TRANSPORT_MQTT_H
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?eclipse-pydev version="1.0"?><pydev_project>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property>
</pydev_project>
language: c
compiler:
- gcc
- clang
os:
- linux
- osx
script:
- make
#*******************************************************************************
# Copyright (c) 2015 logi.cals GmbH
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# and Eclipse Distribution License v1.0 which accompany this distribution.
#
# The Eclipse Public License is available at
# http://www.eclipse.org/legal/epl-v10.html
# and the Eclipse Distribution License is available at
# http://www.eclipse.org/org/documents/edl-v10.php.
#
# Contributors:
# Rainer Poisel - initial version
#*******************************************************************************/
# Note: on OS X you should install XCode and the associated command-line tools
PROJECT("paho" C)
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
## build settings
SET(PAHO_VERSION_MAJOR 1)
SET(PAHO_VERSION_MINOR 0)
SET(PAHO_VERSION_PATCH 3)
SET(CLIENT_VERSION ${PAHO_VERSION_MAJOR}.${PAHO_VERSION_MINOR}.${PAHO_VERSION_PATCH})
EXECUTE_PROCESS(COMMAND date -u OUTPUT_VARIABLE BUILD_TIMESTAMP)
STRING(STRIP ${BUILD_TIMESTAMP} BUILD_TIMESTAMP)
## build options
SET(PAHO_WITH_SSL FALSE CACHE BOOL "Flag that defines whether to build ssl-enabled binaries too. ")
SET(PAHO_BUILD_DOCUMENTATION FALSE CACHE BOOL "Create and install the HTML based API documentation (requires Doxygen)")
SET(PAHO_BUILD_SAMPLES FALSE CACHE BOOL "Build sample programs")
ADD_SUBDIRECTORY(src)
IF(PAHO_BUILD_SAMPLES)
ADD_SUBDIRECTORY(src/samples)
ENDIF()
IF(PAHO_BUILD_DOCUMENTATION)
ADD_SUBDIRECTORY(doc)
ENDIF()
### packaging settings
IF (CMAKE_SYSTEM_NAME MATCHES "Windows")
SET(CPACK_GENERATOR "ZIP")
ELSE()
SET(CPACK_GENERATOR "TGZ")
ENDIF()
SET(CPACK_PACKAGE_VERSION_MAJOR ${PAHO_VERSION_MAJOR})
SET(CPACK_PACKAGE_VERSION_MINOR ${PAHO_VERSION_MINOR})
SET(CPACK_PACKAGE_VERSION_PATCH ${PAHO_VERSION_PATCH})
INCLUDE(CPack)
# Contributing to Paho
Thanks for your interest in this project!
You can contribute bugfixes and new features by sending pull requests through GitHub.
## Legal
In order for your contribution to be accepted, it must comply with the Eclipse Foundation IP policy.
Please read the [Eclipse Foundation policy on accepting contributions via Git](http://wiki.eclipse.org/Development_Resources/Contributing_via_Git).
1. Sign the [Eclipse CLA](http://www.eclipse.org/legal/CLA.php)
1. Register for an Eclipse Foundation User ID. You can register [here](https://dev.eclipse.org/site_login/createaccount.php).
2. Log into the [Projects Portal](https://projects.eclipse.org/), and click on the '[Eclipse CLA](https://projects.eclipse.org/user/sign/cla)' link.
2. Go to your [account settings](https://dev.eclipse.org/site_login/myaccount.php#open_tab_accountsettings) and add your GitHub username to your account.
3. Make sure that you _sign-off_ your Git commits in the following format:
``` Signed-off-by: John Smith <johnsmith@nowhere.com> ``` This is usually at the bottom of the commit message. You can automate this by adding the '-s' flag when you make the commits. e.g. ```git commit -s -m "Adding a cool feature"```
4. Ensure that the email address that you make your commits with is the same one you used to sign up to the Eclipse Foundation website with.
## Contributing a change
1. [Fork the repository on GitHub](https://github.com/eclipse/paho.mqtt.c/fork)
2. Clone the forked repository onto your computer: ``` git clone https://github.com/<your username>/paho.mqtt.c.git ```
3. Create a new branch from the latest ```develop``` branch with ```git checkout -b YOUR_BRANCH_NAME origin/develop```
4. Make your changes
5. If developing a new feature, make sure to include JUnit tests.
6. Ensure that all new and existing tests pass.
7. Commit the changes into the branch: ``` git commit -s ``` Make sure that your commit message is meaningful and describes your changes correctly.
8. If you have a lot of commits for the change, squash them into a single / few commits.
9. Push the changes in your branch to your forked repository.
10. Finally, go to [https://github.com/eclipse/paho.mqtt.c](https://github.com/eclipse/paho.mqtt.c) and create a pull request from your "YOUR_BRANCH_NAME" branch to the ```develop``` one to request review and merge of the commits in your pushed branch.
What happens next depends on the content of the patch. If it is 100% authored
by the contributor and is less than 1000 lines (and meets the needs of the
project), then it can be pulled into the main repository. If not, more steps
are required. These are detailed in the
[legal process poster](http://www.eclipse.org/legal/EclipseLegalProcessPoster.pdf).
## Developer resources:
Information regarding source code management, builds, coding standards, and more.
- [https://projects.eclipse.org/projects/iot.paho/developer](https://projects.eclipse.org/projects/iot.paho/developer)
Contact:
--------
Contact the project developers via the project's development
[mailing list](https://dev.eclipse.org/mailman/listinfo/paho-dev).
Search for bugs:
----------------
This project uses GitHub Issues here: [github.com/eclipse/paho.mqtt.c/issues](https://github.com/eclipse/paho.mqtt.c/issues) to track ongoing development and issues.
Create a new bug:
-----------------
Be sure to search for existing bugs before you create another one. Remember that contributions are always welcome!
- [Create new Paho bug](https://github.com/eclipse/paho.mqtt.c/issues/new)
This diff is collapsed.
# Eclipse Paho MQTT C client
This repository contains the source code for the [Eclipse Paho](http://eclipse.org/paho) MQTT C client library.
This code builds libraries which enable applications to connect to an [MQTT](http://mqtt.org) broker to publish messages, and to subscribe to topics and receive published messages.
Both synchronous and asynchronous modes of operation are supported.
## Build requirements / compilation using CMake
There build process currently supports a number of Linux "flavors" including ARM and s390, OS X, AIX and Solaris as well as the Windows operating system. The build process requires the following tools:
* CMake (http://cmake.org)
* Ninja (https://martine.github.io/ninja/; preferred) or
GNU Make (https://www.gnu.org/software/make/), and
* gcc (https://gcc.gnu.org/).
On Debian based systems this would mean that the following packages have to be installed:
```
apt-get install build-essential gcc make cmake cmake-gui cmake-curses-gui
```
Ninja can be downloaded from its github project page in the "releases" section. Optionally it is possible to build binaries with SSL support. This requires the OpenSSL libraries and includes to be available. E. g. on Debian:
```
apt-get install libssl-dev
```
The documentation requires doxygen and optionally graphviz:
```
apt-get install doxygen graphviz
```
Before compiling, determine the value of some variables in order to configure features, library locations, and other options:
Variable | Default Value | Description
------------ | ------------- | -------------
PAHO_WITH_SSL | FALSE | Flag that defines whether to build ssl-enabled binaries too.
OPENSSL_INC_SEARCH_PATH | "" (system default) | Directory containing OpenSSL includes
OPENSSL_LIB_SEARCH_PATH | "" (system default) | Directory containing OpenSSL libraries
PAHO_BUILD_DOCUMENTATION | FALSE | Create and install the HTML based API documentation (requires Doxygen)
PAHO_BUILD_SAMPLES | FALSE | Build sample programs
Using these variables CMake can be used to generate your Ninja or Make files. Using CMake, building out-of-source is the default. Therefore it is recommended to invoke all build commands inside your chosen build directory but outside of the source tree.
An example build session targeting the build platform could look like this:
```
mkdir /tmp/build.paho
cd /tmp/build.paho
cmake -GNinja -DPAHO_WITH_SSL=TRUE -DPAHO_BUILD_DOCUMENTATION=TRUE -DPAHO_BUILD_SAMPLES=TRUE ~/git/org.eclipse.paho.mqtt.c
```
Invoking cmake and specifying build options can also be performed using cmake-gui or ccmake (see https://cmake.org/runningcmake/). For example:
```
ccmake -GNinja ~/git/org.eclipse.paho.mqtt.c
```
To compile/link the binaries and to generate packages, simply invoke `ninja package` or `make -j <number-of-cores-to-use> package` after CMake. To simply compile/link invoke `ninja` or `make -j <number-of-cores-to-use>`.
### Debug builds
Debug builds can be performed by defining the value of the ```CMAKE_BUILD_TYPE``` option to ```Debug```. For example:
```
cmake -GNinja -DCMAKE_BUILD_TYPE=Debug git/org.eclipse.paho.mqtt.c
```
### Cross compilation
Cross compilation using CMake is performed by using so called "toolchain files" (see: http://www.vtk.org/Wiki/CMake_Cross_Compiling).
The path to the toolchain file can be specified by using CMake's `-DCMAKE_TOOLCHAIN_FILE` option. In case no toolchain file is specified, the build is performed for the native build platform.
For your convenience toolchain files for the following platforms can be found in the `cmake` directory of Eclipse Paho:
* Linux x86
* Linux ARM11 (a.k.a. the Raspberry Pi)
* Windows x86_64
* Windows x86
The provided toolchain files assume that required compilers/linkers are to be found in the environment, i. e. the PATH-Variable of your user or system. If you prefer, you can also specify the absolute location of your compilers in the toolchain files.
Example invocation for the Raspberry Pi:
```
cmake -GNinja -DPAHO_WITH_SSL=TRUE -DPAHO_BUILD_SAMPLES=TRUE -DPAHO_BUILD_DOCUMENTATION=TRUE -DOPENSSL_LIB_SEARCH_PATH=/tmp/libssl-dev/usr/lib/arm-linux-gnueabihf -DOPENSSL_INC_SEARCH_PATH="/tmp/libssl-dev/usr/include/openssl;/tmp/libssl-dev/usr/include/arm-linux-gnueabihf" -DCMAKE_TOOLCHAIN_FILE=~/git/org.eclipse.paho.mqtt.c/cmake/toolchain.linux-arm11.cmake ~/git/org.eclipse.paho.mqtt.c
```
Compilers for the Raspberry Pi can be obtained from e. g. Linaro (see: http://releases.linaro.org/15.06/components/toolchain/binaries/4.8/arm-linux-gnueabihf/). This example assumes that OpenSSL-libraries and includes have been installed in the ```/tmp/libssl-dev``` directory.
Example invocation for Windows 64 bit:
```
cmake -GNinja -DPAHO_BUILD_SAMPLES=TRUE -DCMAKE_TOOLCHAIN_FILE=~/git/org.eclipse.paho.mqtt.c/cmake/toolchain.win64.cmake ~/git/org.eclipse.paho.mqtt.c
```
In this case the libraries and executable are not linked against OpenSSL Libraries. Cross compilers for the Windows platform can be installed on Debian like systems like this:
```
apt-get install gcc-mingw-w64-x86-64 gcc-mingw-w64-i686
```
## Build instructions for GNU Make (deprecated)
The provided GNU Makefile is intended to perform all build steps in the ```build``` directory within the source-tree of Eclipse Paho. Generated binares, libraries, and the documentation can be found in the ```build/output``` directory after completion.
Options that are passed to the compiler/linker can be specified by typical Unix build variables:
Variable | Description
------------ | -------------
CC | Path to the C compiler
CFLAGS | Flags passed to compiler calls
LDFLAGS | Flags passed to linker calls
## Libraries
The Paho C client comprises four shared libraries:
* libmqttv3a.so - asynchronous
* libmqttv3as.so - asynchronous with SSL
* libmqttv3c.so - "classic" / synchronous
* libmqttv3cs.so - "classic" / synchronous with SSL
## Usage and API
Detailed API documentation is available by building the Doxygen docs in the ``doc`` directory. A [snapshot is also available online](http://www.eclipse.org/paho/files/mqttdoc/Cclient/index.html).
Samples are available in the Doxygen docs and also in ``src/samples`` for reference.
Note that using the C headers from a C++ program requires the following declaration as part of the C++ code:
```
extern "C" {
#include "MQTTClient.h"
#include "MQTTClientPersistence.h"
}
```
## Runtime tracing
A number of environment variables control runtime tracing of the C library.
Tracing is switched on using ``MQTT_C_CLIENT_TRACE`` (a value of ON traces to stdout, any other value should specify a file to trace to).
The verbosity of the output is controlled using the ``MQTT_C_CLIENT_TRACE_LEVEL`` environment variable - valid values are ERROR, PROTOCOL, MINIMUM, MEDIUM and MAXIMUM (from least to most verbose).
The variable ``MQTT_C_CLIENT_TRACE_MAX_LINES`` limits the number of lines of trace that are output.
```
export MQTT_C_CLIENT_TRACE=ON
export MQTT_C_CLIENT_TRACE_LEVEL=PROTOCOL
```
## Reporting bugs
Please report bugs under the "MQTT-C" Component in [Eclipse Bugzilla](http://bugs.eclipse.org/bugs/) for the Paho Technology project.
## More information
Discussion of the Paho clients takes place on the [Eclipse paho-dev mailing list](https://dev.eclipse.org/mailman/listinfo/paho-dev).
General questions about the MQTT protocol are discussed in the [MQTT Google Group](https://groups.google.com/forum/?hl=en-US&fromgroups#!forum/mqtt).
There is much more information available via the [MQTT community site](http://mqtt.org).
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{6EFC1F3B-CEE1-4DD2-80B4-CEC37954D468}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>ConsoleApplication1</RootNamespace>
<ProjectName>MQTTVersion</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)..\build\output\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\src\MQTTVersion.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\MQTTAsync.h" />
<ClInclude Include="..\..\src\MQTTClient.h" />
<ClInclude Include="..\..\src\MQTTClientPersistence.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\src\MQTTVersion.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\MQTTAsync.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\MQTTClient.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\MQTTClientPersistence.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\src\Clients.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\Heap.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\LinkedList.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\Log.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\Messages.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\MQTTClient.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\MQTTPacket.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\MQTTPacketOut.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\MQTTPersistence.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\MQTTPersistenceDefault.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\MQTTProtocolClient.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\MQTTProtocolOut.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\MQTTVersion.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\Socket.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\SocketBuffer.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\SSLSocket.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\StackTrace.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\Thread.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\Tree.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\utf-8.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>
\ No newline at end of file
This diff is collapsed.
# path to compiler and utilities
# specify the cross compiler
SET(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
# Name of the target platform
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR arm)
# Version of the system
SET(CMAKE_SYSTEM_VERSION 1)
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment