1 /* This NetX test concentrates on compiling all APIs for NetXDuo. */
2
3 #include "nx_api.h"
4
5 extern void test_control_return(UINT status);
6 #if !defined(NX_DISABLE_ERROR_CHECKING) && defined(__PRODUCT_NETXDUO__)
7 #define DEMO_STACK_SIZE 2048
8 #include "nx_ip.h"
9 #include "nx_ipv6.h"
10 #include "nx_packet.h"
11 #include "nx_tcp.h"
12
13 /* Define the ThreadX and NetX object control blocks... */
14
15 static TX_THREAD ntest_0;
16 static NX_PACKET_POOL pool_0;
17 static ULONG error_counter = 0;
18
19 /* Define thread prototypes. */
20
21 static void ntest_0_entry(ULONG thread_input);
22 extern void _nx_ram_network_driver_256(struct NX_IP_DRIVER_STRUCT *driver_req);
23
24
25 /* Define what the initial system looks like. */
26
27 #ifdef CTEST
test_application_define(void * first_unused_memory)28 VOID test_application_define(void *first_unused_memory)
29 #else
30 void netx_api_compile_test_application_define(void *first_unused_memory)
31 #endif
32 {
33
34 CHAR *pointer;
35 UINT status;
36
37
38 /* Setup the working pointer. */
39 pointer = (CHAR *) first_unused_memory;
40
41 /* Create the main thread. */
42 tx_thread_create(&ntest_0, "thread 0", ntest_0_entry, 0,
43 pointer, DEMO_STACK_SIZE,
44 4, 4, TX_NO_TIME_SLICE, TX_AUTO_START);
45 pointer = pointer + DEMO_STACK_SIZE;
46
47 /* Initialize the NetX system. */
48 nx_system_initialize();
49
50 /* Create a packet pool. */
51 status = nx_packet_pool_create(&pool_0, "NetX Main Packet Pool", 256, pointer, 8192);
52 pointer = pointer + 8192;
53
54 if (status)
55 error_counter++;
56 }
57
58
59 /* Define the test threads. */
60
ntest_0_entry(ULONG thread_input)61 static void ntest_0_entry(ULONG thread_input)
62 {
63 NX_PACKET *pkt_ptr = NX_NULL;
64
65 /* Print out test information banner. */
66 printf("NetX Test: API Compile Test..........................................");
67
68 /* Check for earlier error. */
69 if (error_counter)
70 {
71 printf("ERROR!\n");
72 test_control_return(1);
73 }
74
75 /* APIs for ARP. */
76 nx_arp_dynamic_entries_invalidate(0);
77 nx_arp_dynamic_entry_set(0, 0, 0, 0);
78 nx_arp_enable(0, 0 , 0);
79 nx_arp_entry_delete(0, 0);
80 nx_arp_gratuitous_send(0, 0);
81 nx_arp_hardware_address_find(0, 0, 0, 0);
82 nx_arp_info_get(0, 0, 0, 0, 0, 0, 0, 0, 0);
83 nx_arp_ip_address_find(0, 0, 0, 0);
84 nx_arp_static_entries_delete(0);
85 nx_arp_static_entry_create(0, 0, 0, 0);
86 nx_arp_static_entry_delete(0, 0, 0, 0);
87
88 /* APIs for ICMP */
89 nx_icmp_enable(0);
90 nx_icmp_info_get(0, 0, 0, 0, 0, 0, 0);
91 nx_icmp_ping(0, 0, 0, 0, 0, 0);
92 nxd_icmp_enable(0);
93 nxd_icmp_ping(0, 0, 0, 0, 0, 0);
94 nxd_icmp_source_ping(0, 0, 0, 0, 0, 0, 0);
95 nxd_icmpv6_ra_flag_callback_set(0, 0);
96
97 /* APIs for IGMP */
98 nx_igmp_enable(0);
99 nx_igmp_info_get(0, 0, 0, 0, 0);
100 nx_igmp_loopback_disable(0);
101 nx_igmp_loopback_enable(0);
102 nx_igmp_multicast_interface_join(0, 0, 0);
103 nx_igmp_multicast_interface_leave(0, 0, 0);
104 nx_igmp_multicast_join(0, 0);
105 nx_igmp_multicast_leave(0, 0);
106
107 /* APIs for IP */
108 nx_ip_address_change_notify(0, 0, 0);
109 nx_ip_address_get(0, 0, 0);
110 nx_ip_address_set(0, 0, 0);
111 nx_ip_auxiliary_packet_pool_set(0, 0);
112 #ifndef NX_ENABLE_DUAL_PACKET_POOL
113 _nx_ip_auxiliary_packet_pool_set(0, 0);
114 #endif
115 nx_ip_create(0, 0, 0, 0, 0, 0, 0, 0, 0);
116 nx_ip_delete(0);
117 nx_ip_driver_direct_command(0, 0, 0);
118 nx_ip_driver_interface_direct_command(0, 0, 0, 0);
119 nx_ip_forwarding_disable(0);
120 nx_ip_forwarding_enable(0);
121 nx_ip_fragment_disable(0);
122 nx_ip_fragment_enable(0);
123 nx_ip_gateway_address_clear(0);
124 nx_ip_gateway_address_get(0, 0);
125 nx_ip_gateway_address_set(0, 0);
126 nx_ip_info_get(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
127 nx_ip_interface_address_get(0, 0, 0, 0);
128 nx_ip_interface_address_mapping_configure(0, 0, 0);
129 nx_ip_interface_address_set(0, 0, 0, 0);
130 nx_ip_interface_attach(0, 0, 0, 0, 0);
131 nx_ip_interface_capability_get(0, 0, 0);
132 nx_ip_interface_capability_set(0, 0, 0);
133 #ifndef NX_ENABLE_INTERFACE_CAPABILITY
134 _nx_ip_interface_capability_get(0, 0, 0);
135 _nx_ip_interface_capability_set(0, 0, 0);
136 #endif
137 nx_ip_interface_detach(0, 0);
138 nx_ip_interface_info_get(0, 0, 0, 0, 0, 0, 0, 0);
139 nx_ip_interface_mtu_set(0, 0, 0);
140 nx_ip_interface_physical_address_get(0, 0, 0, 0);
141 nx_ip_interface_physical_address_set(0, 0, 0, 0, 0);
142 nx_ip_interface_status_check(0, 0, 0, 0, 0);
143 nx_ip_link_status_change_notify_set(0, 0);
144 nx_ip_max_payload_size_find(0, 0, 0, 0, 0, 0, 0, 0);
145 nx_ip_status_check(0, 0, 0, 0);
146 nx_ip_static_route_add(0, 0, 0, 0);
147 nx_ip_static_route_delete(0, 0, 0);
148 #ifndef NX_ENABLE_IP_STATIC_ROUTING
149 _nx_ip_static_route_add(0, 0, 0, 0);
150 _nx_ip_static_route_delete(0, 0, 0);
151 #endif
152 nx_ipv4_multicast_interface_join(0, 0, 0);
153 nx_ipv4_multicast_interface_leave(0, 0, 0);
154 nxd_ipv6_address_change_notify(0, 0);
155 #ifndef NX_ENABLE_IPV6_ADDRESS_CHANGE_NOTIFY
156 _nxd_ipv6_address_change_notify(0, 0);
157 #endif
158 nxd_ipv6_address_delete(0, 0);
159 nxd_ipv6_address_get(0, 0, 0, 0, 0);
160 nxd_ipv6_address_set(0, 0, 0, 0, 0);
161 nxd_ipv6_default_router_add(0, 0, 0, 0);
162 nxd_ipv6_default_router_delete(0, 0);
163 nxd_ipv6_default_router_entry_get(0, 0, 0, 0, 0, 0, 0);
164 nxd_ipv6_default_router_get(0, 0, 0, 0, 0);
165 nxd_ipv6_default_router_number_of_entries_get(0, 0, 0);
166 nxd_ipv6_disable(0);
167 nxd_ipv6_enable(0);
168 nxd_ipv6_multicast_interface_join(0, 0, 0);
169 nxd_ipv6_multicast_interface_leave(0, 0, 0);
170 #ifndef NX_ENABLE_IPV6_MULTICAST
171 _nxd_ipv6_multicast_interface_join(0, 0, 0);
172 _nxd_ipv6_multicast_interface_leave(0, 0, 0);
173 #endif
174 nxd_ipv6_stateless_address_autoconfig_disable(0, 0);
175 nxd_ipv6_stateless_address_autoconfig_enable(0, 0);
176 #ifndef NX_IPV6_STATELESS_AUTOCONFIG_CONTROL
177 _nxd_ipv6_stateless_address_autoconfig_disable(0, 0);
178 _nxd_ipv6_stateless_address_autoconfig_enable(0, 0);
179 #endif
180
181 /* APIs for RAW service. */
182 nx_ip_raw_packet_disable(0);
183 nx_ip_raw_packet_enable(0);
184 nx_ip_raw_packet_filter_set(0, 0);
185 #ifndef NX_ENABLE_IP_RAW_PACKET_FILTER
186 _nx_ip_raw_packet_filter_set(0, 0);
187 #endif
188 nx_ip_raw_packet_receive(0, 0, 0);
189 nx_ip_raw_packet_send(0, pkt_ptr, 0, 0);
190 nx_ip_raw_packet_source_send(0, pkt_ptr, 0, 0, 0);
191 nx_ip_raw_receive_queue_max_set(0, 0);
192 nxd_ip_raw_packet_send(0, pkt_ptr, 0, 0, 0, 0);
193 nxd_ip_raw_packet_source_send(0, 0, 0, 0, 0, 0, 0);
194
195 /* APIs for ND cache. */
196 nxd_nd_cache_entry_set(0, 0, 0, 0);
197 nxd_nd_cache_entry_delete(0, 0);
198 nxd_nd_cache_hardware_address_find(0, 0, 0, 0, 0);
199 nxd_nd_cache_invalidate(0);
200 nxd_nd_cache_ip_address_find(0, 0, 0, 0, 0);
201
202 /* APIs for packet pool. */
203 nx_packet_allocate(0, 0, 0, 0);
204 nx_packet_copy(0, 0, 0, 0);
205 nx_packet_data_append(0, 0, 0, 0, 0);
206 nx_packet_data_extract_offset(0, 0, 0, 0, 0);
207 nx_packet_data_retrieve(0, 0, 0);
208 nx_packet_length_get(0, 0);
209 nx_packet_pool_create(0, 0, 0, 0, 0);
210 nx_packet_pool_delete(0);
211 nx_packet_pool_info_get(0, 0, 0, 0, 0, 0);
212 nx_packet_pool_low_watermark_set(0, 0);
213 #ifndef NX_ENABLE_LOW_WATERMARK
214 _nx_packet_pool_low_watermark_set(0, 0);
215 #endif
216 nx_packet_release(pkt_ptr);
217 nx_packet_transmit_release(pkt_ptr);
218
219 /* APIs for RARP. */
220 nx_rarp_disable(0);
221 nx_rarp_enable(0);
222 nx_rarp_info_get(0, 0, 0, 0);
223
224 /* APIs for TCP. */
225 nx_tcp_client_socket_bind(0, 0, 0);
226 nx_tcp_client_socket_connect(0, 0, 0, 0);
227 nx_tcp_client_socket_port_get(0, 0);
228 nx_tcp_client_socket_unbind(0);
229 nx_tcp_enable(0);
230 nx_tcp_free_port_find(0, 0, 0);
231 nx_tcp_info_get(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
232 nx_tcp_server_socket_accept(0, 0);
233 nx_tcp_server_socket_listen(0, 0, 0, 0, 0);
234 nx_tcp_server_socket_relisten(0, 0, 0);
235 nx_tcp_server_socket_unaccept(0);
236 nx_tcp_server_socket_unlisten(0, 0);
237 nx_tcp_socket_bytes_available(0, 0);
238 nx_tcp_socket_create(0, 0, 0, 0, 0, 0, 0, 0, 0);
239 nx_tcp_socket_delete(0);
240 nx_tcp_socket_disconnect(0, 0);
241 nx_tcp_socket_disconnect_complete_notify(0, 0);
242 nx_tcp_socket_establish_notify(0, 0);
243 #ifdef NX_DISABLE_EXTENDED_NOTIFY_SUPPORT
244 _nx_tcp_socket_disconnect_complete_notify(0, 0);
245 _nx_tcp_socket_establish_notify(0, 0);
246 #endif
247 nx_tcp_socket_info_get(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
248 nx_tcp_socket_mss_get(0, 0);
249 nx_tcp_socket_mss_peer_get(0, 0);
250 nx_tcp_socket_mss_set(0, 0);
251 nx_tcp_socket_peer_info_get(0, 0, 0);
252 nx_tcp_socket_queue_depth_notify_set(0, 0);
253 #ifndef NX_ENABLE_TCP_QUEUE_DEPTH_UPDATE_NOTIFY
254 _nx_tcp_socket_queue_depth_notify_set(0, 0);
255 #endif
256 nx_tcp_socket_receive(0, 0, 0);
257 nx_tcp_socket_receive_notify(0, 0);
258 nx_tcp_socket_receive_queue_max_set(0, 0);
259 #ifndef NX_ENABLE_LOW_WATERMARK
260 _nx_tcp_socket_receive_queue_max_set(0, 0);
261 #endif
262 nx_tcp_socket_send(0, pkt_ptr, 0);
263 nx_tcp_socket_state_wait(0, 0, 0);
264 nx_tcp_socket_timed_wait_callback(0, 0);
265 #ifdef NX_DISABLE_EXTENDED_NOTIFY_SUPPORT
266 _nx_tcp_socket_timed_wait_callback(0, 0);
267 #endif
268 nx_tcp_socket_transmit_configure(0, 0, 0, 0, 0);
269 nx_tcp_socket_window_update_notify_set(0, 0);
270 nxd_tcp_client_socket_connect(0, 0, 0, 0);
271 nxd_tcp_socket_peer_info_get(0, 0, 0);
272
273 /* APIs for UDP */
274 nx_udp_enable(0);
275 nx_udp_free_port_find(0, 0, 0);
276 nx_udp_info_get(0, 0, 0, 0, 0, 0, 0, 0);
277 nx_udp_packet_info_extract(0, 0, 0, 0, 0);
278 nx_udp_socket_bind(0, 0, 0);
279 nx_udp_socket_bytes_available(0, 0);
280 nx_udp_socket_checksum_disable(0);
281 nx_udp_socket_checksum_enable(0);
282 nx_udp_socket_create(0, 0, 0, 0, 0, 0, 0);
283 nx_udp_socket_delete(0);
284 nx_udp_socket_info_get(0, 0, 0, 0, 0, 0, 0, 0);
285 nx_udp_socket_port_get(0, 0);
286 nx_udp_socket_receive(0, 0, 0);
287 nx_udp_socket_receive_notify(0, 0);
288 nx_udp_socket_send(0, pkt_ptr, 0, 0);
289 nx_udp_socket_source_send(0, pkt_ptr, 0, 0, 0);
290 nx_udp_socket_unbind(0);
291 nx_udp_source_extract(0, 0, 0);
292 nxd_udp_packet_info_extract(0, 0, 0, 0, 0);
293 nxd_udp_socket_send(0, pkt_ptr, 0, 0);
294 nxd_udp_socket_source_send(0, pkt_ptr, 0, 0, 0);
295 nxd_udp_source_extract(0, 0, 0);
296
297 /* APIs for others. */
298 nx_system_initialize();
299 #ifndef NX_DRIVER_DEFERRED_PROCESSING
300 UINT status;
301
302 /* Allocate a packet. */
303 status = nx_packet_allocate(&pool_0, &pkt_ptr, NX_IP_PACKET, NX_WAIT_FOREVER);
304 if (status)
305 error_counter++;
306 _nx_ip_driver_deferred_enable(0, 0);
307 _nx_ip_driver_deferred_receive(0, pkt_ptr);
308 #endif
309
310 /* Check for earlier error. */
311 if (error_counter)
312 {
313 printf("ERROR!\n");
314 test_control_return(1);
315 }
316 else
317 {
318 printf("SUCCESS!\n");
319 test_control_return(0);
320 }
321 }
322 #else
323 #ifdef CTEST
test_application_define(void * first_unused_memory)324 VOID test_application_define(void *first_unused_memory)
325 #else
326 void netx_api_compile_test_application_define(void *first_unused_memory)
327 #endif
328 {
329 printf("NetX Test: API Compile Test..........................................N/A\n");
330 test_control_return(3);
331 }
332 #endif
333