4a9b3a5881
Add usrsock daemon for ALT1250 LTE modem.
943 lines
34 KiB
C
943 lines
34 KiB
C
/****************************************************************************
|
|
* apps/lte/alt1250/alt1250_atcmd.c
|
|
*
|
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
* contributor license agreements. See the NOTICE file distributed with
|
|
* this work for additional information regarding copyright ownership. The
|
|
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
|
* "License"); you may not use this file except in compliance with the
|
|
* License. You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
* License for the specific language governing permissions and limitations
|
|
* under the License.
|
|
*
|
|
****************************************************************************/
|
|
|
|
/****************************************************************************
|
|
* Included Files
|
|
****************************************************************************/
|
|
|
|
#include <nuttx/config.h>
|
|
#include <nuttx/net/usrsock.h>
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#include "alt1250_dbg.h"
|
|
#include "alt1250_daemon.h"
|
|
#include "alt1250_atcmd.h"
|
|
#include "alt1250_devif.h"
|
|
#include "alt1250_postproc.h"
|
|
#include "alt1250_container.h"
|
|
#include "alt1250_usockevent.h"
|
|
|
|
#include <lte/lte_lwm2m.h>
|
|
|
|
/****************************************************************************
|
|
* Pre-processor Definitions
|
|
****************************************************************************/
|
|
|
|
/****************************************************************************
|
|
* Private Data Type
|
|
****************************************************************************/
|
|
|
|
struct atcmd_postprocarg_t
|
|
{
|
|
atcmd_postproc_t proc;
|
|
unsigned long arg;
|
|
};
|
|
|
|
/****************************************************************************
|
|
* Private Data
|
|
****************************************************************************/
|
|
|
|
static FAR void *atcmd_oargs[3];
|
|
static int atcmd_reply_len;
|
|
static struct atcmd_postprocarg_t postproc_argument;
|
|
|
|
/****************************************************************************
|
|
* Private Functions
|
|
****************************************************************************/
|
|
|
|
/****************************************************************************
|
|
* name: postproc_internal_atcmd
|
|
****************************************************************************/
|
|
|
|
static int postproc_internal_atcmd(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *reply,
|
|
FAR struct usock_s *usock,
|
|
FAR int32_t *usock_result,
|
|
FAR uint32_t *usock_xid,
|
|
FAR struct usock_ackinfo_s *ackinfo,
|
|
unsigned long arg)
|
|
{
|
|
int ret = REP_NO_ACK;
|
|
FAR struct atcmd_postprocarg_t *parg =
|
|
(FAR struct atcmd_postprocarg_t *)arg;
|
|
|
|
dev->recvfrom_processing = false;
|
|
|
|
err_alt1250("Internal ATCMD Resp : %s\n", (FAR char *)reply->outparam[0]);
|
|
|
|
if (parg->proc != NULL)
|
|
{
|
|
ret = parg->proc(dev, reply,
|
|
(FAR char *)reply->outparam[0], *(FAR int *)reply->outparam[2],
|
|
parg->arg, usock_result);
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: get_m2mrespstr
|
|
****************************************************************************/
|
|
|
|
static FAR const char *get_m2mrespstr(int resp)
|
|
{
|
|
FAR const char *ret = NULL;
|
|
|
|
switch (resp)
|
|
{
|
|
case LWM2MSTUB_RESP_CHANGED:
|
|
ret = "2.04";
|
|
break;
|
|
case LWM2MSTUB_RESP_CONTENT:
|
|
ret = "2.05";
|
|
break;
|
|
case LWM2MSTUB_RESP_BADREQ:
|
|
ret = "4.00";
|
|
break;
|
|
case LWM2MSTUB_RESP_UNAUTH:
|
|
ret = "4.01";
|
|
break;
|
|
case LWM2MSTUB_RESP_NOURI:
|
|
ret = "4.04";
|
|
break;
|
|
case LWM2MSTUB_RESP_NOTALLOW:
|
|
ret = "4.05";
|
|
break;
|
|
case LWM2MSTUB_RESP_NOTACCEPT:
|
|
ret = "4.06";
|
|
break;
|
|
case LWM2MSTUB_RESP_UNSUPPORT:
|
|
ret = "4.15";
|
|
break;
|
|
case LWM2MSTUB_RESP_INTERNALERROR:
|
|
ret = "5.00";
|
|
break;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
/****************************************************************************
|
|
* Public Functions
|
|
****************************************************************************/
|
|
|
|
/****************************************************************************
|
|
* name: atcmdreply_true_false
|
|
****************************************************************************/
|
|
|
|
int atcmdreply_true_false(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *reply,
|
|
FAR char *rdata, int len, unsigned long arg,
|
|
FAR int32_t *usock_result)
|
|
{
|
|
*usock_result = 0;
|
|
|
|
if (strcasestr(rdata, "\nTRUE\r"))
|
|
{
|
|
*usock_result = 1;
|
|
}
|
|
|
|
return REP_SEND_ACK;
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: atcmdreply_ok_error
|
|
****************************************************************************/
|
|
|
|
int atcmdreply_ok_error(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *reply,
|
|
FAR char *rdata, int len, unsigned long arg,
|
|
FAR int32_t *usock_result)
|
|
{
|
|
*usock_result = check_atreply_ok(rdata, len, NULL);
|
|
return REP_SEND_ACK;
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: check_atreply_ok
|
|
****************************************************************************/
|
|
|
|
int check_atreply_ok(FAR char *reply, int len, FAR void *arg)
|
|
{
|
|
int ret = ERROR;
|
|
|
|
if (strstr(reply, "\nOK\r"))
|
|
{
|
|
ret = OK;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: check_atreply_truefalse
|
|
****************************************************************************/
|
|
|
|
int check_atreply_truefalse(FAR char *reply, int len, FAR void *arg)
|
|
{
|
|
int ret = ERROR;
|
|
FAR struct atreply_truefalse_s *result =
|
|
(FAR struct atreply_truefalse_s *)arg;
|
|
|
|
if (check_atreply_ok(reply, len, NULL) == OK)
|
|
{
|
|
ret = OK;
|
|
if (strstr(reply, result->target_str))
|
|
{
|
|
result->result = true;
|
|
}
|
|
else
|
|
{
|
|
result->result = false;
|
|
}
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: send_internal_at_command
|
|
****************************************************************************/
|
|
|
|
static int send_internal_at_command(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
atcmd_postproc_t proc, unsigned long arg, FAR int32_t *usock_result)
|
|
{
|
|
int ret;
|
|
|
|
FAR void *inparam[2];
|
|
|
|
inparam[0] = dev->tx_buff;
|
|
inparam[1] = (FAR void *)strlen((FAR const char *)dev->tx_buff);
|
|
|
|
atcmd_oargs[0] = dev->rx_buff;
|
|
atcmd_oargs[1] = (FAR void *)_RX_BUFF_SIZE;
|
|
atcmd_oargs[2] = &atcmd_reply_len;
|
|
|
|
postproc_argument.proc = proc;
|
|
postproc_argument.arg = arg;
|
|
|
|
set_container_ids(container, usockid, LTE_CMDID_SENDATCMD);
|
|
set_container_argument(container, inparam, nitems(inparam));
|
|
set_container_response(container, atcmd_oargs, nitems(atcmd_oargs));
|
|
set_container_postproc(container, postproc_internal_atcmd,
|
|
(unsigned long)&postproc_argument);
|
|
|
|
err_alt1250("Internal ATCMD : %s\n", dev->tx_buff);
|
|
|
|
ret = altdevice_send_command(dev->altfd, container, usock_result);
|
|
if (ret == REP_NO_ACK)
|
|
{
|
|
/* In case of no error */
|
|
|
|
dev->recvfrom_processing = true;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_reset
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_reset(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container)
|
|
{
|
|
int32_t dummy;
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE, "ATZ\r");
|
|
return send_internal_at_command(dev, container, -1, NULL, 0, &dummy);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_setenable
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_setenable(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, bool en)
|
|
{
|
|
int32_t dummy;
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%SETACFG=modem_apps.LWM2M.AppEnable,\"%s\"\r",
|
|
en ? "true" : "false");
|
|
return send_internal_at_command(dev, container, -1, NULL, 0, &dummy);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_getenable
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_getenable(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, FAR int32_t *usock_result)
|
|
{
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%GETACFG=modem_apps.LWM2M.AppEnable\r");
|
|
return send_internal_at_command(dev, container, -1, NULL, 0, usock_result);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_getnamemode
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_getnamemode(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container)
|
|
{
|
|
int32_t dummy;
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%GETACFG=LWM2M.Config.NameMode\r");
|
|
return send_internal_at_command(dev, container, -1, NULL, 0, &dummy);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_setnamemode
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_setnamemode(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int mode)
|
|
{
|
|
int32_t dummy;
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%SETACFG=LWM2M.Config.NameMode,%d\r", mode);
|
|
return send_internal_at_command(dev, container, -1, NULL, 0, &dummy);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_getversion
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_getversion(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container)
|
|
{
|
|
int32_t dummy;
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%GETACFG=LWM2M.Config.Version\r");
|
|
return send_internal_at_command(dev, container, -1, NULL, 0, &dummy);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_setversion
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_setversion(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, bool is_v1_1)
|
|
{
|
|
int32_t dummy;
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%SETACFG=LWM2M.Config.Version,\"%s\"\r", is_v1_1 ? "1.1" : "1.0");
|
|
return send_internal_at_command(dev, container, -1, NULL, 0, &dummy);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_getwriteattr
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_getwriteattr(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container)
|
|
{
|
|
int32_t dummy;
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%GETACFG=LWM2M.HostObjects.HostEnableWriteAttrURCMode\r");
|
|
return send_internal_at_command(dev, container, -1, NULL, 0, &dummy);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_setwriteattr
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_setwriteattr(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, bool en)
|
|
{
|
|
int32_t dummy;
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%SETACFG=LWM2M.HostObjects.HostEnableWriteAttrURCMode,\"%s\"\r",
|
|
en ? "true" : "false");
|
|
return send_internal_at_command(dev, container, -1, NULL, 0, &dummy);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_getautoconnect
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_getautoconnect(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container)
|
|
{
|
|
int32_t dummy;
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%GETACFG=LWM2M.Config.AutoConnect\r");
|
|
return send_internal_at_command(dev, container, -1, NULL, 0, &dummy);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_setautoconnect
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_setautoconnect(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, bool en)
|
|
{
|
|
int32_t dummy;
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%SETACFG=LWM2M.Config.AutoConnect,\"%s\"\r",
|
|
en ? "true" : "false");
|
|
return send_internal_at_command(dev, container, -1, NULL, 0, &dummy);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: ltenwop_send_getnwop
|
|
****************************************************************************/
|
|
|
|
int ltenwop_send_getnwop(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container)
|
|
{
|
|
int32_t dummy;
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%NWOPER?\r");
|
|
return send_internal_at_command(dev, container, -1, NULL, 0, &dummy);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: ltenwop_send_setnwoptp
|
|
****************************************************************************/
|
|
|
|
int ltenwop_send_setnwoptp(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container)
|
|
{
|
|
int32_t dummy;
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%NWOPER=\"TRUPHONE\"\r");
|
|
return send_internal_at_command(dev, container, -1, NULL, 0, &dummy);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_getqueuemode
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_getqueuemode(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
FAR int32_t *ures)
|
|
{
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%GETACFG=LWM2M.TransportBindings_1_1.Queue\r");
|
|
return send_internal_at_command(dev, container, usockid,
|
|
atcmdreply_true_false, 0, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_setqueuemode
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_setqueuemode(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
FAR int32_t *ures, int en)
|
|
{
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%SETACFG=LWM2M.TransportBindings_1_1.Queue,%s\r",
|
|
(en == 1) ? "true" : "false");
|
|
return send_internal_at_command(dev, container, usockid,
|
|
atcmdreply_ok_error, 0, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_m2mopev
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_m2mopev(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
FAR int32_t *ures, bool en)
|
|
{
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%LWM2MOPEV=%c,100\r", en ? '1' : '0');
|
|
return send_internal_at_command(dev, container, usockid,
|
|
atcmdreply_ok_error, 0, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_m2mev
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_m2mev(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
FAR int32_t *ures, bool en)
|
|
{
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%LWM2MEV=%c\r", en ? '1' : '0');
|
|
return send_internal_at_command(dev, container, usockid,
|
|
atcmdreply_ok_error, 0, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_m2mobjcmd
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_m2mobjcmd(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
FAR int32_t *ures, bool en)
|
|
{
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%LWM2MOBJCMD=%c\r", en ? '1' : '0');
|
|
return send_internal_at_command(dev, container, usockid,
|
|
atcmdreply_ok_error, 0, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_getepname
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_getepname(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
atcmd_postproc_t proc, unsigned long arg, FAR int32_t *ures)
|
|
{
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%GETACFG=LWM2M.Config.Name\r");
|
|
return send_internal_at_command(dev, container, usockid,
|
|
proc, arg, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_getsrvinfo
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_getsrvinfo(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
atcmd_postproc_t proc, unsigned long arg, FAR int32_t *ures)
|
|
{
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%LWM2MCMD=SERVERSINFO\r");
|
|
return send_internal_at_command(dev, container, usockid,
|
|
proc, arg, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_getresource
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_getresource(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
atcmd_postproc_t proc, unsigned long arg, FAR int32_t *ures,
|
|
FAR char *resource)
|
|
{
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%LWM2MCMD=GET_RESOURCE,%s\r", resource);
|
|
return send_internal_at_command(dev, container, usockid, proc,
|
|
arg, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_getsupobjs
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_getsupobjs(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
atcmd_postproc_t proc, unsigned long arg, FAR int32_t *ures)
|
|
{
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%GETACFG=LWM2M.Config.SupportedObjects\r");
|
|
return send_internal_at_command(dev, container, usockid, proc,
|
|
arg, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_getobjdef
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_getobjdef(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
atcmd_postproc_t proc, unsigned long arg, FAR int32_t *ures,
|
|
uint16_t objid)
|
|
{
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%LWM2MOBJDEF=GET,%d\r", objid);
|
|
return send_internal_at_command(dev, container, usockid, proc,
|
|
arg, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_changerat
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_changerat(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
FAR int32_t *ures, int rat)
|
|
{
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%setacfg=radiom.config.preferred_rat_list,\"%s\"\r",
|
|
(rat == LTE_RAT_CATM) ? "CATM" : "NBIOT");
|
|
|
|
return send_internal_at_command(dev, container, usockid,
|
|
atcmdreply_ok_error, 0, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_getrat
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_getrat(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
atcmd_postproc_t proc, unsigned long arg, FAR int32_t *ures)
|
|
{
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%getacfg=radiom.config.preferred_rat_list\r");
|
|
return send_internal_at_command(dev, container, usockid, proc,
|
|
arg, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_setepname
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_setepname(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
FAR int32_t *ures, FAR const char *epname)
|
|
{
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%SETACFG=\"LWM2M.Config.Name\",\"%s\"\r", epname);
|
|
return send_internal_at_command(dev, container, usockid,
|
|
atcmdreply_ok_error, 0, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_bsstart
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_bsstart(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
atcmd_postproc_t proc, unsigned long arg, FAR int32_t *ures)
|
|
{
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%LWM2MBSCMD=\"START\"\r");
|
|
return send_internal_at_command(dev, container, usockid,
|
|
proc, arg, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_bsdelete
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_bsdelete(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
atcmd_postproc_t proc, unsigned long arg, FAR int32_t *ures)
|
|
{
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%LWM2MBSCMD=\"DELETE\"\r");
|
|
return send_internal_at_command(dev, container, usockid,
|
|
proc, arg, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_bscreateobj0
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_bscreateobj0(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
atcmd_postproc_t proc, unsigned long arg, FAR int32_t *ures,
|
|
FAR struct lwm2mstub_serverinfo_s *info)
|
|
{
|
|
int i;
|
|
int pos;
|
|
|
|
pos = snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%LWM2MBSCMD=\"CREATE\",0,0,0,\"%s\",1,\"%s\",2,%d",
|
|
info->server_uri, info->bootstrap ? "true" : "false",
|
|
info->security_mode);
|
|
|
|
if (info->security_mode != LWM2MSTUB_SECUREMODE_NOSEC)
|
|
{
|
|
pos += snprintf((FAR char *)&dev->tx_buff[pos], _TX_BUFF_SIZE - pos,
|
|
",3,\"");
|
|
for (i = 0; i < LWM2MSTUB_MAX_DEVID && info->device_id[i]; i++)
|
|
{
|
|
pos += snprintf((FAR char *)&dev->tx_buff[pos],
|
|
_TX_BUFF_SIZE - pos,
|
|
"%02x", info->device_id[i]);
|
|
}
|
|
|
|
pos += snprintf((FAR char *)&dev->tx_buff[pos], _TX_BUFF_SIZE - pos,
|
|
"\"");
|
|
|
|
pos += snprintf((FAR char *)&dev->tx_buff[pos], _TX_BUFF_SIZE - pos,
|
|
",5,\"");
|
|
for (i = 0; i < LWM2MSTUB_MAX_SEQKEY && info->security_key[i]; i++)
|
|
{
|
|
pos += snprintf((FAR char *)&dev->tx_buff[pos],
|
|
_TX_BUFF_SIZE - pos,
|
|
"%02x", info->security_key[i]);
|
|
}
|
|
|
|
pos += snprintf((FAR char *)&dev->tx_buff[pos], _TX_BUFF_SIZE - pos,
|
|
"\"");
|
|
}
|
|
|
|
snprintf((FAR char *)&dev->tx_buff[pos], _TX_BUFF_SIZE - pos, ",10,0\r");
|
|
|
|
return send_internal_at_command(dev, container, usockid, proc, arg, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_bscreateobj1
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_bscreateobj1(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
atcmd_postproc_t proc, unsigned long arg, FAR int32_t *ures,
|
|
FAR struct lwm2mstub_serverinfo_s *info)
|
|
{
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%LWM2MBSCMD=\"CREATE\",1,0,0,0,1,%lu%s\r", info->lifetime,
|
|
info->nonip ? ",7,\"N\",22,\"N\"" : "");
|
|
|
|
return send_internal_at_command(dev, container, usockid, proc, arg, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_bsdone
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_bsdone(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container,
|
|
int16_t usockid, FAR int32_t *ures)
|
|
{
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%LWM2MBSCMD=\"DONE\"\r");
|
|
return send_internal_at_command(dev, container, usockid,
|
|
atcmdreply_ok_error, 0, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_setsupobjs
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_setsupobjs(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
FAR int32_t *ures, FAR uint16_t *objids, int objnum)
|
|
{
|
|
int pos;
|
|
pos = snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%SETACFG=LWM2M.Config.SupportedObjects,0;1");
|
|
|
|
while (objnum > 0)
|
|
{
|
|
/* Object 0 and Object 1 is mandatory and default */
|
|
|
|
if (*objids != 0 && *objids != 1)
|
|
{
|
|
pos += snprintf((FAR char *)&dev->tx_buff[pos],
|
|
_TX_BUFF_SIZE - pos,
|
|
";%d", *objids);
|
|
}
|
|
|
|
objids++;
|
|
objnum--;
|
|
}
|
|
|
|
snprintf((FAR char *)&dev->tx_buff[pos], _TX_BUFF_SIZE - pos, "\r");
|
|
|
|
return send_internal_at_command(dev, container, usockid,
|
|
atcmdreply_ok_error, 0, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_setobjdef
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_setobjdef(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
FAR int32_t *ures, uint16_t objid, int resnum,
|
|
FAR struct lwm2mstub_resource_s *resucs)
|
|
{
|
|
int pos;
|
|
|
|
pos = snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%LWM2MOBJDEF=SET,%d", objid);
|
|
|
|
while (resnum > 0)
|
|
{
|
|
pos += snprintf((FAR char *)&dev->tx_buff[pos], _TX_BUFF_SIZE - pos,
|
|
",%d,\"%s\",%d,\"%s\"", resucs->res_id,
|
|
resucs->operation == LWM2MSTUB_RESOP_READ ? "R" :
|
|
resucs->operation == LWM2MSTUB_RESOP_WRITE ? "W" :
|
|
resucs->operation == LWM2MSTUB_RESOP_RW ? "RW" : "X",
|
|
resucs->inst_type,
|
|
resucs->data_type == LWM2MSTUB_RESDATA_NONE ? "NONE" :
|
|
resucs->data_type == LWM2MSTUB_RESDATA_STRING ? "STR" :
|
|
resucs->data_type == LWM2MSTUB_RESDATA_INT ? "INT" :
|
|
resucs->data_type == LWM2MSTUB_RESDATA_UNSIGNED ? "UINT" :
|
|
resucs->data_type == LWM2MSTUB_RESDATA_FLOAT ? "FLT" :
|
|
resucs->data_type == LWM2MSTUB_RESDATA_BOOL ? "BOOL" :
|
|
resucs->data_type == LWM2MSTUB_RESDATA_OPAQUE ? "OPQ" :
|
|
resucs->data_type == LWM2MSTUB_RESDATA_TIME ? "TIME" : "OL");
|
|
resucs++;
|
|
resnum--;
|
|
}
|
|
|
|
snprintf((FAR char *)&dev->tx_buff[pos], _TX_BUFF_SIZE - pos, "\r");
|
|
|
|
return send_internal_at_command(dev, container, usockid,
|
|
atcmdreply_ok_error, 0, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_registration
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_registration(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
FAR int32_t *ures, int cmd)
|
|
{
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%LWM2MCMD=%s\r",
|
|
cmd == LWM2MSTUB_CONNECT_REGISTER ? "REGISTER" :
|
|
cmd == LWM2MSTUB_CONNECT_DEREGISTER ? "DEREGISTER" :
|
|
cmd == LWM2MSTUB_CONNECT_REREGISTER ? "REGISTERUPD" :
|
|
"BOOTSTARP");
|
|
|
|
return send_internal_at_command(dev, container, usockid,
|
|
atcmdreply_ok_error, 0, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_evrespwvalue
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_evrespwvalue(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
FAR int32_t *ures, int seq_no, int resp,
|
|
FAR struct lwm2mstub_instance_s *inst, FAR char *retval)
|
|
{
|
|
int pos;
|
|
FAR const char *resp_str = get_m2mrespstr(resp);
|
|
|
|
if (resp_str == NULL)
|
|
{
|
|
*ures = -EINVAL;
|
|
return REP_SEND_ACK;
|
|
}
|
|
|
|
pos = snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%LWM2MOBJRSP=%d,\"%s\",\"/%d/%d/%d", seq_no, resp_str,
|
|
inst->object_id, inst->object_inst, inst->res_id);
|
|
|
|
if (inst->res_inst >= 0)
|
|
{
|
|
pos += snprintf((FAR char *)&dev->tx_buff[pos], _TX_BUFF_SIZE - pos,
|
|
"/%d", inst->res_inst);
|
|
}
|
|
|
|
snprintf((FAR char *)&dev->tx_buff[pos], _TX_BUFF_SIZE - pos,
|
|
"\",\"%s\"\r", retval);
|
|
|
|
return send_internal_at_command(dev, container, usockid,
|
|
atcmdreply_ok_error, 0, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_evresponse
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_evresponse(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
FAR int32_t *ures, int seq_no, int resp,
|
|
FAR struct lwm2mstub_instance_s *inst)
|
|
{
|
|
int pos;
|
|
FAR const char *resp_str = get_m2mrespstr(resp);
|
|
|
|
if (resp_str == NULL)
|
|
{
|
|
*ures = -EINVAL;
|
|
return REP_SEND_ACK;
|
|
}
|
|
|
|
pos = snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%LWM2MOBJRSP=%d,\"%s\",\"/%d/%d/%d", seq_no, resp_str,
|
|
inst->object_id, inst->object_inst, inst->res_id);
|
|
|
|
if (inst->res_inst >= 0)
|
|
{
|
|
pos += snprintf((FAR char *)&dev->tx_buff[pos], _TX_BUFF_SIZE - pos,
|
|
"/%d", inst->res_inst);
|
|
}
|
|
|
|
snprintf((FAR char *)&dev->tx_buff[pos], _TX_BUFF_SIZE - pos, "\"\r");
|
|
|
|
return send_internal_at_command(dev, container, usockid,
|
|
atcmdreply_ok_error, 0, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_evrespwoinst
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_evrespwoinst(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container, int16_t usockid,
|
|
FAR int32_t *ures, int seq_no, int resp)
|
|
{
|
|
FAR const char *resp_str = get_m2mrespstr(resp);
|
|
|
|
if (resp_str == NULL)
|
|
{
|
|
*ures = -EINVAL;
|
|
return REP_SEND_ACK;
|
|
}
|
|
|
|
snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%LWM2MOBJRSP=%d,\"%s\"\r", seq_no, resp_str);
|
|
|
|
return send_internal_at_command(dev, container, usockid,
|
|
atcmdreply_ok_error, 0, ures);
|
|
}
|
|
|
|
/****************************************************************************
|
|
* name: lwm2mstub_send_objevent
|
|
****************************************************************************/
|
|
|
|
int lwm2mstub_send_objevent(FAR struct alt1250_s *dev,
|
|
FAR struct alt_container_s *container,
|
|
int16_t usockid, FAR int32_t *ures,
|
|
FAR char *token,
|
|
FAR struct lwm2mstub_instance_s *inst,
|
|
FAR char *retval)
|
|
{
|
|
int pos;
|
|
|
|
pos = snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
|
|
"AT%%LWM2MOBJEV=\"%s\",,,0,\"/%d/%d",
|
|
token, inst->object_id, inst->object_inst);
|
|
|
|
if (inst->res_id >= 0)
|
|
{
|
|
pos += snprintf((FAR char *)&dev->tx_buff[pos], _TX_BUFF_SIZE - pos,
|
|
"/%d", inst->res_id);
|
|
|
|
if (inst->res_inst >= 0)
|
|
{
|
|
pos += snprintf((FAR char *)&dev->tx_buff[pos],
|
|
_TX_BUFF_SIZE - pos,
|
|
"/%d", inst->res_id);
|
|
}
|
|
}
|
|
|
|
snprintf((FAR char *)&dev->tx_buff[pos], _TX_BUFF_SIZE - pos,
|
|
"\",\"%s\"\r", retval);
|
|
|
|
return send_internal_at_command(dev, container, usockid,
|
|
atcmdreply_ok_error, 0, ures);
|
|
}
|