Morse Micro IoT SDK  2.9.7
emmet.c
Go to the documentation of this file.
1/*
2 * Copyright 2021-2023 Morse Micro
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
73#include <string.h>
74#include "mmosal.h"
75#include "mmwlan.h"
76#include "mm_app_regdb.h"
77#include "emmet.h"
78#include "mm_app_loadconfig.h"
79#include "mm_app_common.h"
80
81#include "mmipal.h"
82
88static void link_status_callback(const struct mmipal_link_status *link_status)
89{
90 uint32_t time_ms = mmosal_get_time_ms();
91 if (link_status->link_state == MMIPAL_LINK_UP)
92 {
93 printf("Link is up. Time: %lu ms", time_ms);
94 printf(", IP: %s", link_status->ip_addr);
95 printf(", Netmask: %s", link_status->netmask);
96 printf(", Gateway: %s\n", link_status->gateway);
97 }
98 else
99 {
100 printf("Link is down. Time: %lu ms\n", time_ms);
101 }
102}
103
104
109void app_init(void)
110{
111 /* Initialize Emmet first to ensure host interface is in a valid state. */
112 emmet_init();
113
114 printf("\n\nMorse Emmet Demo (Built " __DATE__ " " __TIME__ ")\n\n");
115
116 /* Initialize MMWLAN interface */
117 mmwlan_init();
119
120 /* Boot the WLAN interface so that we can retrieve the firmware version. */
121 struct mmwlan_boot_args boot_args = MMWLAN_BOOT_ARGS_INIT;
122 (void)mmwlan_boot(&boot_args);
124
125
126 /* Load IP stack settings from config store or defaults */
129
130 /* Initialize IP stack. */
132 {
133 printf("Error initializing network interface.\n");
134 MMOSAL_ASSERT(false);
135 }
136
138
139 /* Configure and start Emmet so that we can begin receiving commands from the host. */
140 emmet_set_reg_db(get_regulatory_db());
141 emmet_start();
142}
static void link_status_callback(const struct mmipal_link_status *link_status)
Link status callback.
Definition: emmet.c:88
void app_init(void)
Main entry point to the application.
Definition: emmet.c:109
void emmet_start(void)
Start Emmet.
enum mmwlan_status emmet_set_reg_db(const struct mmwlan_regulatory_db *reg_db)
Set the regulatory database for Emmet to use.
void emmet_init(void)
Initialize Emmet.
enum mmipal_status mmipal_init(const struct mmipal_init_args *args)
Initialize the IP stack and enable the MMWLAN interface.
#define MMIPAL_INIT_ARGS_DEFAULT
Default values for mmipal_init_args.
Definition: mmipal.h:173
void mmipal_set_link_status_callback(mmipal_link_status_cb_fn_t fn)
Sets the callback function to be invoked on link status changes.
@ MMIPAL_LINK_UP
Link is up.
Definition: mmipal.h:56
@ MMIPAL_SUCCESS
Completed successfully.
Definition: mmipal.h:39
#define MMOSAL_ASSERT(expr)
Assert that the given expression evaluates to true and abort execution if not.
Definition: mmosal.h:927
uint32_t mmosal_get_time_ms(void)
Get the system time in milliseconds.
enum mmwlan_status mmwlan_boot(const struct mmwlan_boot_args *args)
Boot the Morse Micro transceiver and leave it in an idle state.
#define MMWLAN_BOOT_ARGS_INIT
Initializer for mmwlan_boot_args.
Definition: mmwlan.h:760
void mmwlan_init(void)
Initialize the MMWLAN subsystem.
enum mmwlan_status mmwlan_set_channel_list(const struct mmwlan_s1g_channel_list *channel_list)
Set the list of channels that are supported by the regulatory domain in which the device resides.
Morse Micro application helper routines for initializing/de-initializing the Wireless LAN interface a...
void app_print_version_info(void)
Prints various version information.
const struct mmwlan_s1g_channel_list * load_channel_list(void)
Looks up country code and returns appropriate channel list.
void load_mmipal_init_args(struct mmipal_init_args *args)
Loads the provided structure with initialization parameters read from config store.
Initialize arguments structure.
Definition: mmipal.h:149
Arguments data structure for mmwlan_boot().
Definition: mmwlan.h:750