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