mirror of
https://github.com/apache/nuttx-apps.git
synced 2026-08-02 20:59:05 +00:00
Most tools used for compliance and SBOM generation use SPDX identifiers This change brings us a step closer to an easy SBOM generation. Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
266 lines
6.2 KiB
C
266 lines
6.2 KiB
C
/****************************************************************************
|
|
* apps/lte/lapi/src/lapi_pdn.c
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*
|
|
* 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 <stdio.h>
|
|
#include <stdint.h>
|
|
#include <errno.h>
|
|
#include <sys/param.h>
|
|
#include <nuttx/wireless/lte/lte_ioctl.h>
|
|
|
|
#include "lte/lte_api.h"
|
|
#include "lte/lapi.h"
|
|
|
|
#include "lapi_dbg.h"
|
|
|
|
/****************************************************************************
|
|
* Pre-processor Definitions
|
|
****************************************************************************/
|
|
|
|
/****************************************************************************
|
|
* Private Functions
|
|
****************************************************************************/
|
|
|
|
static int lte_activate_pdn_inparam_check(FAR lte_apn_setting_t *apn)
|
|
{
|
|
int32_t mask = 0;
|
|
|
|
if (!apn)
|
|
{
|
|
lapi_printf("apn is null.\n");
|
|
return -EINVAL;
|
|
}
|
|
|
|
if ((!apn->apn) || (strnlen((char *)apn->apn, LTE_APN_LEN) >= LTE_APN_LEN))
|
|
{
|
|
lapi_printf("apn is length overflow.\n");
|
|
return -EINVAL;
|
|
}
|
|
|
|
if ((apn->ip_type < LTE_IPTYPE_V4) ||
|
|
(apn->ip_type > LTE_IPTYPE_NON))
|
|
{
|
|
lapi_printf("ip type is invalid. iptype=%d\n", apn->ip_type);
|
|
return -EINVAL;
|
|
}
|
|
|
|
if ((apn->auth_type < LTE_APN_AUTHTYPE_NONE) ||
|
|
(apn->auth_type > LTE_APN_AUTHTYPE_CHAP))
|
|
{
|
|
lapi_printf("auth type is invalid. authtype=%d\n", apn->auth_type);
|
|
return -EINVAL;
|
|
}
|
|
|
|
if (apn->user_name && apn->password)
|
|
{
|
|
if (strnlen((FAR char *)apn->user_name, LTE_APN_USER_NAME_LEN) >=
|
|
LTE_APN_USER_NAME_LEN)
|
|
{
|
|
lapi_printf("username is length overflow.\n");
|
|
return -EINVAL;
|
|
}
|
|
|
|
if (strnlen((FAR char *)apn->password, LTE_APN_PASSWD_LEN) >=
|
|
LTE_APN_PASSWD_LEN)
|
|
{
|
|
lapi_printf("password is length overflow.\n");
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (apn->auth_type != LTE_APN_AUTHTYPE_NONE)
|
|
{
|
|
lapi_printf("authentication information is invalid.\n");
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
|
|
mask = (LTE_APN_TYPE_DEFAULT |
|
|
LTE_APN_TYPE_MMS | LTE_APN_TYPE_SUPL | LTE_APN_TYPE_DUN |
|
|
LTE_APN_TYPE_HIPRI | LTE_APN_TYPE_FOTA | LTE_APN_TYPE_IMS |
|
|
LTE_APN_TYPE_CBS | LTE_APN_TYPE_IA | LTE_APN_TYPE_EMERGENCY);
|
|
if (0 == (apn->apn_type & mask))
|
|
{
|
|
lapi_printf("apn type is invalid. apntype=%08ld / mask=%08ld \n",
|
|
apn->apn_type, mask);
|
|
return -EINVAL;
|
|
}
|
|
|
|
return OK;
|
|
}
|
|
|
|
static int lte_deactivate_pdn_inparam_check(uint8_t session_id)
|
|
{
|
|
if (LTE_SESSION_ID_MIN > session_id ||
|
|
LTE_SESSION_ID_MAX < session_id)
|
|
{
|
|
lapi_printf("Invalid session id %d.\n", session_id);
|
|
return -EINVAL;
|
|
}
|
|
|
|
return OK;
|
|
}
|
|
|
|
/****************************************************************************
|
|
* Public Functions
|
|
****************************************************************************/
|
|
|
|
/* Synchronous APIs */
|
|
|
|
int lte_activate_pdn_sync(FAR lte_apn_setting_t *apn, FAR lte_pdn_t *pdn)
|
|
{
|
|
int ret;
|
|
int result;
|
|
FAR void *inarg[] =
|
|
{
|
|
apn
|
|
};
|
|
|
|
FAR void *outarg[] =
|
|
{
|
|
&result, pdn
|
|
};
|
|
|
|
if (lte_activate_pdn_inparam_check(apn) || pdn == NULL)
|
|
{
|
|
return -EINVAL;
|
|
}
|
|
|
|
ret = lapi_req(LTE_CMDID_ACTPDN,
|
|
(FAR void *)inarg, nitems(inarg),
|
|
(FAR void *)outarg, nitems(outarg),
|
|
NULL);
|
|
if (ret == 0)
|
|
{
|
|
ret = result;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
int lte_deactivate_pdn_sync(uint8_t session_id)
|
|
{
|
|
int ret;
|
|
int result;
|
|
FAR void *inarg[] =
|
|
{
|
|
&session_id
|
|
};
|
|
|
|
FAR void *outarg[] =
|
|
{
|
|
&result
|
|
};
|
|
|
|
if (lte_deactivate_pdn_inparam_check(session_id))
|
|
{
|
|
return -EINVAL;
|
|
}
|
|
|
|
ret = lapi_req(LTE_CMDID_DEACTPDN,
|
|
(FAR void *)inarg, nitems(inarg),
|
|
(FAR void *)outarg, nitems(outarg),
|
|
NULL);
|
|
if (ret == 0)
|
|
{
|
|
ret = result;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
/* Asynchronous APIs */
|
|
|
|
int lte_activate_pdn(FAR lte_apn_setting_t *apn, activate_pdn_cb_t callback)
|
|
{
|
|
FAR void *inarg[] =
|
|
{
|
|
apn
|
|
};
|
|
|
|
if (callback == NULL)
|
|
{
|
|
return -EINVAL;
|
|
}
|
|
|
|
if (lte_activate_pdn_inparam_check(apn))
|
|
{
|
|
return -EINVAL;
|
|
}
|
|
|
|
return lapi_req(LTE_CMDID_ACTPDN | LTE_CMDOPT_ASYNC_BIT,
|
|
(FAR void *)inarg, nitems(inarg),
|
|
NULL, 0, callback);
|
|
}
|
|
|
|
#ifdef CONFIG_LTE_LAPI_ENABLE_DEPRECATED_API
|
|
|
|
int lte_deactivate_pdn(uint8_t session_id, deactivate_pdn_cb_t callback)
|
|
{
|
|
FAR void *inarg[] =
|
|
{
|
|
&session_id
|
|
};
|
|
|
|
if (callback == NULL)
|
|
{
|
|
return -EINVAL;
|
|
}
|
|
|
|
if (lte_deactivate_pdn_inparam_check(session_id))
|
|
{
|
|
return -EINVAL;
|
|
}
|
|
|
|
return lapi_req(LTE_CMDID_DEACTPDN | LTE_CMDOPT_ASYNC_BIT,
|
|
(FAR void *)inarg, nitems(inarg),
|
|
NULL, 0, callback);
|
|
}
|
|
|
|
#endif /* CONFIG_LTE_LAPI_ENABLE_DEPRECATED_API */
|
|
|
|
int lte_activate_pdn_cancel(void)
|
|
{
|
|
int ret;
|
|
int result;
|
|
FAR void *outarg[] =
|
|
{
|
|
&result
|
|
};
|
|
|
|
ret = lapi_req(LTE_CMDID_ACTPDNCAN,
|
|
NULL, 0,
|
|
(FAR void *)outarg, nitems(outarg),
|
|
NULL);
|
|
if (ret == 0)
|
|
{
|
|
ret = result;
|
|
}
|
|
|
|
return ret;
|
|
}
|