18
18
LOG_MODULE_DECLARE (mqtt_sn_publisher_sample );
19
19
20
20
#ifdef CONFIG_NET_SAMPLE_MQTT_SN_STATIC_GATEWAY
21
- #define SAMPLE_GW_IP CONFIG_NET_SAMPLE_MQTT_SN_GATEWAY_IP
21
+ #define SAMPLE_GW_ADDRESS CONFIG_NET_SAMPLE_MQTT_SN_GATEWAY_ADDRESS
22
22
#else
23
- #define SAMPLE_GW_IP ""
23
+ #define SAMPLE_GW_ADDRESS ""
24
24
#endif
25
25
26
26
static void process_thread (void );
@@ -126,19 +126,19 @@ static int do_work(void)
126
126
127
127
static void process_thread (void )
128
128
{
129
- struct sockaddr_in bcaddr = {0 };
129
+ struct sockaddr bcaddr = {0 };
130
130
int err ;
131
- LOG_DBG ( "Parsing Broadcast IP " CONFIG_NET_SAMPLE_MQTT_SN_BROADCAST_IP ) ;
132
- bcaddr . sin_family = AF_INET ;
133
- bcaddr . sin_port = htons ( CONFIG_NET_SAMPLE_MQTT_SN_BROADCAST_PORT );
134
- err = zsock_inet_pton ( AF_INET , CONFIG_NET_SAMPLE_MQTT_SN_BROADCAST_IP ,
135
- & bcaddr . sin_addr );
136
- __ASSERT (err == 1 , "inet_pton () failed %d" , err );
131
+ bool success ;
132
+
133
+ LOG_DBG ( "Parsing Broadcast Address " CONFIG_NET_SAMPLE_MQTT_SN_BROADCAST_ADDRESS );
134
+ success = net_ipaddr_parse ( CONFIG_NET_SAMPLE_MQTT_SN_BROADCAST_ADDRESS ,
135
+ strlen ( CONFIG_NET_SAMPLE_MQTT_SN_BROADCAST_ADDRESS ), & bcaddr );
136
+ __ASSERT (success , "net_ipaddr_parse () failed" );
137
137
138
138
LOG_INF ("Waiting for connection..." );
139
139
LOG_HEXDUMP_DBG (& bcaddr , sizeof (bcaddr ), " broadcast address" );
140
140
141
- err = mqtt_sn_transport_udp_init (& tp , ( struct sockaddr * ) & bcaddr , sizeof ((bcaddr )));
141
+ err = mqtt_sn_transport_udp_init (& tp , & bcaddr , sizeof ((bcaddr )));
142
142
__ASSERT (err == 0 , "mqtt_sn_transport_udp_init() failed %d" , err );
143
143
144
144
err = mqtt_sn_client_init (& mqtt_client , & client_id , & tp .tp , evt_cb , tx_buf , sizeof (tx_buf ),
@@ -147,15 +147,24 @@ static void process_thread(void)
147
147
148
148
if (IS_ENABLED (CONFIG_NET_SAMPLE_MQTT_SN_STATIC_GATEWAY )) {
149
149
LOG_INF ("Adding predefined Gateway" );
150
- struct sockaddr_in gwaddr = {0 };
150
+ struct sockaddr gwaddr = {0 };
151
151
152
- LOG_DBG ("Parsing Gateway IP %s" , SAMPLE_GW_IP );
153
- gwaddr .sin_family = AF_INET ;
154
- gwaddr .sin_port = htons (CONFIG_NET_SAMPLE_MQTT_SN_GATEWAY_PORT );
155
- err = zsock_inet_pton (AF_INET , SAMPLE_GW_IP , & gwaddr .sin_addr );
156
- __ASSERT (err == 1 , "inet_pton() failed %d" , err );
152
+ LOG_DBG ("Parsing Gateway address %s" , SAMPLE_GW_ADDRESS );
153
+ success = net_ipaddr_parse (SAMPLE_GW_ADDRESS , strlen (SAMPLE_GW_ADDRESS ), & gwaddr );
154
+ __ASSERT (success , "net_ipaddr_parse() failed" );
157
155
struct mqtt_sn_data gwaddr_data = {.data = (uint8_t * )& gwaddr ,
158
156
.size = sizeof (gwaddr )};
157
+ /* Reduce size to allow this to work with smaller values for
158
+ * CONFIG_MQTT_SN_LIB_MAX_ADDR_SIZE.
159
+ */
160
+ switch (gwaddr .sa_family ) {
161
+ case AF_INET :
162
+ gwaddr_data .size = sizeof (struct sockaddr_in );
163
+ break ;
164
+ case AF_INET6 :
165
+ gwaddr_data .size = sizeof (struct sockaddr_in6 );
166
+ break ;
167
+ }
159
168
160
169
err = mqtt_sn_add_gw (& mqtt_client , 0x1f , gwaddr_data );
161
170
__ASSERT (err == 0 , "mqtt_sn_add_gw() failed %d" , err );
0 commit comments