Device
On the device part we need to open our Workbench 3.4.0 open a new Mita Project. Once we have that we could paste the next code:
/**
* Welcome to XDK LIVE.
*
* Not sure what to do now?
* Check out the "Getting started" guide in the Eclipse help.
*/
package main;
import platforms.xdk110;
// Create a wireless connection named 'wireless'
setup wireless : WLAN {
ssid = "Totalplay-4B80";
ipConfiguration = Dhcp();
authentification = Personal(psk = "pass");
}
// Create a MQTT instance
setup messaging : MQTT {
transport = wireless;
url = "mqtt://broker.hivemq.com:1883"; // Try differents brokers iot.eclipse.org, etc.
cleanSession = true;
clientId = "1234"; //Define your userID
var button = topic("XDK/RFT/switch",1); //Define your own topic
var temperature = topic("XDK/RFT/temperature/status",1); //Define your own topic
var pressure = topic("XDK/RFT/pressure/status",1); //Define your own topic
var humidity = topic("XDK/RFT/humidity/status",1); //Define your own topic
}
// When button one is pressed, send text via MQTT
every button_one.pressed {
messaging.button.write("1"); //Define your message
}
every button_one.released {
messaging.button.write("0"); //Define your message
}
// Read and transmit the temperature every 5 seconds
every 5 seconds {
var myTemperature = environment.temperature.read();
var celsusis = myTemperature / 1000;
messaging.temperature.write(`${celsusis}`);
}
// Read and transmit the barometric pressure every 10 seconds
every 10 seconds {
var myPressure = environment.pressure.read();
messaging.pressure.write(`${myPressure}`);
}
// Read and transmit the barometric humidity every 15 seconds
every 15 seconds {
var myhumidity = environment.humidity.read();
messaging.humidity.write(`${myhumidity}`);
}
Then we we flash this project in our device would give us an error, this is produce in a C file.
The issues is that
ButtonOne_OnEvent is defined twice, but it is only required once, technically.
The second implementation of ButtonOne_OnEvent that enqueues the oneReleased1 handler reacts to the event
BSP_XDK_BUTTON_PRESS
instead ofBSP_XDK_BUTTON_RELEASE
So open the file SensorButton_one.c and past:
/**
* Generated by Eclipse Mita.
* @date 2018-08-16 23:51:10
*/
#include <BCDS_Basics.h>
#include <BSP_BoardType.h>
#include <MitaEvents.h>
#include <BCDS_BSP_Button.h>
#include <BCDS_CmdProcessor.h>
#include <BCDS_Retcode.h>
#include "MitaExceptions.h"
void ButtonOne_OnEvent(uint32_t data)
{
if(data == BSP_XDK_BUTTON_PRESS) {
Retcode_T retcode = CmdProcessor_enqueueFromIsr(&Mita_EventQueue, HandleEveryButton_onePressed1, NULL, data);
if(retcode != RETCODE_OK)
{
Retcode_raiseErrorFromIsr(retcode);
}
}
if(data == BSP_XDK_BUTTON_RELEASE) {
Retcode_T retcode = CmdProcessor_enqueueFromIsr(&Mita_EventQueue, HandleEveryButton_oneReleased1, NULL, data);
if(retcode != RETCODE_OK)
{
Retcode_raiseErrorFromIsr(retcode);
}
}
}
Retcode_T SensorButton_one_Setup(void)
{
return BSP_Button_Connect();
return NO_EXCEPTION;
}
Retcode_T SensorButton_one_Enable(void)
{
Retcode_T retcode = NO_EXCEPTION;
retcode = BSP_Button_Enable((uint32_t) BSP_XDK_BUTTON_1, ButtonOne_OnEvent);
if(retcode != NO_EXCEPTION) return retcode;
retcode = BSP_Button_Enable((uint32_t) BSP_XDK_BUTTON_1, ButtonOne_OnEvent);
if(retcode != NO_EXCEPTION) return retcode;
return NO_EXCEPTION;
}
Last updated
Was this helpful?