#include <stdio.h>
#include <time.h>
#include "serial.h"
#include "connpack.h"
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <inttypes.h>
#define A "AT\r"
#define B "AT+CPIN?\r"
#define C "AT+CREG?\r"
#define D "AT+CGATT?\r"
#define E "AT+CIPSHUT\r"
#define X "AT+CIPSTATUS\r"
#define G "AT+CIPMUX=0\r"
#define H "AT+CSTT=\"xxxx\",\"xxxx\",\"xxxx\"\r"
#define I "AT+CIICR\r"
#define J "AT+CIFSR\r"
#define K "AT+CIPSTART=\"TCP\",\"xxx.xxx.xxx.xxx\",\"xxxx\"\r"
#define L "AT+CIPSEND\r"
char* ATC[]={A,B,C,D,E,X,G,H,I,J,K,L};
#define MQTTCONNECT 1<<4
#define MQTTPUBLISH 3<<4
#define KEEPALIVE 15000
int main()
{
char *id="CONMQTT";
int i,j;
port_open();
uint16_t buffer[255];
uint16_t buf[255];
for(i=0;i<=11;i++)
{
port_write(ATC[i]);
sleep(5);
printf("%s\n",port_read());
if(i==11)
{
char *id="MQTT";
uint8_t var_header[] = {0x00,0x06, 0x4d, 0x51, 0x49, 0x73, 0x64, 0x70, 0x03, 0x02, 0x00, KEEPALIVE/500, 0x00, strlen(id)};
uint8_t fixed_header[] = {MQTTCONNECT, 12+strlen(id)+2};
char packet[sizeof(fixed_header)+sizeof(var_header)+strlen(id) + 2];
char connectdatalen=2+12+2+strlen(id);
uint8_t packetlen = 2 + connectdatalen;
memset(packet, 0, sizeof(packet));
memcpy(packet, fixed_header, sizeof(fixed_header));
memcpy(packet+sizeof(fixed_header), var_header, sizeof(var_header));
memcpy(packet+sizeof(fixed_header)+sizeof(var_header),id,strlen(id));
for(i=0;i<=packetlen;i++)
{
//putchar(packet[i]);
sprintf(buf, "%c\x1A", packet[i]);
port_write(buf);
}
}
}
return 0;
}