Had to make many changes to get it to compile across many files, including removing the LOCAL specifier from almost all functions. Edited the Makefile to compile all three files and link them. Haven't tested on hardware yet, that's the next step. Lots of small changes to avoid warnings, now that I have turned -Wall on. This makes the code a bit "better". Signed-off-by: A.M. Rowsell <amrowsell@frozenelectronics.ca>
104 lines
4.5 KiB
C
104 lines
4.5 KiB
C
#include <stdint.h>
|
|
#include "user_interface.h"
|
|
#include "ets_sys.h"
|
|
#include "os_type.h"
|
|
#include "osapi.h"
|
|
#include "mem.h"
|
|
#include "espconn.h"
|
|
#include "mqtt.h"
|
|
#include "onewire.h"
|
|
#include "main.h"
|
|
|
|
static os_timer_t oneTimer;
|
|
static os_timer_t testTimer;
|
|
|
|
LOCAL void ICACHE_FLASH_ATTR con(void *arg) {
|
|
os_printf("Entered con!\n");
|
|
mqtt_session_t *pSession = (mqtt_session_t *)arg;
|
|
mqtt_send(pSession, NULL, 0, MQTT_MSG_TYPE_CONNECT);
|
|
|
|
os_timer_disarm(&oneTimer);
|
|
os_timer_setfn(&oneTimer, (os_timer_func_t *)sub, arg);
|
|
os_timer_arm(&oneTimer, 200, 0);
|
|
}
|
|
|
|
LOCAL void ICACHE_FLASH_ATTR pub(void *arg) {
|
|
os_printf("Entered pub!\n");
|
|
mqtt_session_t *pSession = (mqtt_session_t *)arg;
|
|
uint8_t data[] = "2.718281828459045";
|
|
int32_t dataLen = os_strlen(data);
|
|
mqtt_send(pSession, &data[0], dataLen, MQTT_MSG_TYPE_PUBLISH);
|
|
os_timer_disarm(&oneTimer);
|
|
os_timer_setfn(&oneTimer, (os_timer_func_t *)ping, arg);
|
|
os_timer_arm(&oneTimer, 200, 0);
|
|
}
|
|
|
|
LOCAL void ICACHE_FLASH_ATTR ping(void *arg) {
|
|
os_printf("Entered ping!\n");
|
|
mqtt_session_t *pSession = (mqtt_session_t *)arg;
|
|
mqtt_send(pSession, NULL, 0, MQTT_MSG_TYPE_PINGREQ);
|
|
os_timer_disarm(&oneTimer);
|
|
os_timer_setfn(&oneTimer, (os_timer_func_t *)sub, arg);
|
|
os_timer_arm(&oneTimer, 200, 0);
|
|
}
|
|
|
|
LOCAL void ICACHE_FLASH_ATTR sub(void *arg) {
|
|
os_printf("Entered sub!\n");
|
|
mqtt_session_t *pSession = (mqtt_session_t *)arg;
|
|
mqtt_send(pSession, NULL, 0, MQTT_MSG_TYPE_SUBSCRIBE);
|
|
|
|
}
|
|
|
|
LOCAL void ICACHE_FLASH_ATTR discon(void *arg) {
|
|
os_printf("Entered discon!\n");
|
|
mqtt_session_t *pSession = (mqtt_session_t *)arg;
|
|
mqtt_send(pSession, NULL, 0, MQTT_MSG_TYPE_DISCONNECT);
|
|
os_timer_disarm(&oneTimer);
|
|
}
|
|
|
|
void ICACHE_FLASH_ATTR user_init() {
|
|
//uint8_t wifiStatus;
|
|
LOCAL mqtt_session_t globalSession;
|
|
LOCAL mqtt_session_t *pGlobalSession = &globalSession;
|
|
char ssid[32] = "yourwifissid";
|
|
char passkey[64] = "yourwifipassword";
|
|
struct station_config stationConf;
|
|
gpio_init(); // init gpio so we can use the LED
|
|
wifi_status_led_install(0, PERIPHS_IO_MUX_GPIO0_U, FUNC_GPIO0); // set GPIO0 as status LED
|
|
stationConf.bssid_set = 0;
|
|
os_memcpy(&stationConf.ssid, ssid, 32); // copy the ssid and passkey into the station_config struct
|
|
os_memcpy(&stationConf.password, passkey, 64);
|
|
wifi_set_opmode_current(0x01); //station mode
|
|
wifi_station_set_config_current(&stationConf); // tell it about our config, this auto-connects us as well
|
|
|
|
// prepare the TCP/MQTT connection stuff
|
|
// Adafruit IO is at 52.5.238.97
|
|
static const char ioUser[11] = { 0x4d, 0x72, 0x41, 0x75, 0x72, 0x65, 0x6c, 0x69, 0x75, 0x73, 0x52 }; // MrAureliusR
|
|
static const uint8_t ioUser_len = 11;
|
|
static const char ioKey[32] = { 0x32, 0x63, 0x39, 0x36, 0x65, 0x30, 0x35, 0x61, 0x66, 0x34, 0x35, 0x30, 0x34, 0x31, 0x66, 0x31, 0x38, 0x36, 0x65, 0x62, 0x39, 0x30, 0x33, 0x32, 0x33, 0x31, 0x31, 0x31, 0x61, 0x32, 0x61, 0x38 }; // 2c96e05af45041f186eb90323111a2a8
|
|
static const uint8_t ioKey_len = 32;
|
|
static const char ioTopic[37] = { 0x4d, 0x72, 0x41, 0x75, 0x72, 0x65, 0x6c, 0x69, 0x75, 0x73, 0x52, 0x2f, 0x66, 0x65, 0x65, 0x64, 0x73, 0x2f, 0x62, 0x65, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x2e, 0x62, 0x65, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x74, 0x65, 0x6d, 0x70 };
|
|
static const uint8_t ioTopic_len = 37;
|
|
static const char clientID[5] = { 0x46, 0x5a, 0x5a, 0x4e, 0x30 };
|
|
static const uint8_t clientID_len = 5;
|
|
pGlobalSession->port = 1883; // mqtt port
|
|
static const char adafruitIO_ip[4] = {52, 5, 238, 97};
|
|
os_memcpy(pGlobalSession->ip, adafruitIO_ip, 4);
|
|
pGlobalSession->username_len = ioUser_len;
|
|
pGlobalSession->username = os_zalloc(sizeof(uint8_t) * pGlobalSession->username_len);
|
|
os_memcpy(pGlobalSession->username, ioUser, pGlobalSession->username_len);
|
|
pGlobalSession->password_len = ioKey_len;
|
|
pGlobalSession->password = os_zalloc(sizeof(uint8_t) * pGlobalSession->password_len);
|
|
os_memcpy(pGlobalSession->password, ioKey, pGlobalSession->password_len);
|
|
pGlobalSession->topic_name_len = ioTopic_len;
|
|
pGlobalSession->topic_name = os_zalloc(sizeof(uint8_t) * pGlobalSession->topic_name_len);
|
|
os_memcpy(pGlobalSession->topic_name, ioTopic, pGlobalSession->topic_name_len);
|
|
pGlobalSession->client_id_len = clientID_len;
|
|
pGlobalSession->client_id = os_zalloc(sizeof(uint8_t) * pGlobalSession->client_id_len);
|
|
os_memcpy(pGlobalSession->client_id, clientID, pGlobalSession->client_id_len);
|
|
|
|
os_timer_setfn(&oneTimer, (os_timer_func_t *)tcpConnect, pGlobalSession);
|
|
os_timer_arm(&oneTimer, 15000, 0);
|
|
os_timer_setfn(&testTimer, (os_timer_func_t *)con, pGlobalSession);
|
|
os_timer_arm(&testTimer, 16000, 0);
|
|
}
|