FORGOT YOUR DETAILS?

CREATE ACCOUNT

Unison Help

  1. Unison Kernel
    1. Pthreads
      1. pthread_create()
      2. pthread_exit()
      3. pthread_self()
      4. pthread_equal()
      5. pthread_join()
      6. pthread_detach()
      7. pthread_setschedparam()
      8. pthread_getschedparam()
      9. pthread_attr_init()
      10. pthread_attr_destroy()
      11. pthread_attr_setstackaddr()
      12. pthread_attr_getstackaddr()
      13. pthread_attr_setstacksize()
      14. pthread_attr_getstacksize()
      15. pthread_attr_setschedparam()
      16. pthread_attr_getschedparam()
      17. pthread_attr_setdetachstate()
      18. pthread_attr_getdetachstate()
      19. pthread_stackinfo()
      20. pthread_setprio()
      21. pthread_getprio()
      22. sched_get_priority_max()
      23. sched_get_priority_min()
      24. sched_yield()
    2. Pthread Cancellation
      1. pthread_cleanup_pop()
      2. pthread_cleanup_push()
      3. pthread_cancel()
      4. pthread_setcanceltype()
      5. pthread_setcancelstate()
      6. pthread_testcancel()
    3. Mutex
      1. pthread_mutex_init()
      2. pthread_mutex_destroy()
      3. pthread_mutex_lock()
      4. pthread_mutex_trylock()
      5. pthread_mutex_unlock()
    4. Semaphores
      1. sem_open()
      2. sem_close()
      3. sem_unlink()
      4. sem_init()
      5. sem_destroy()
      6. sem_wait()
      7. sem_trywait()
      8. sem_timedwait()
      9. sem_post()
      10. sem_getvalue()
    5. Message Queues
      1. mq_open()
      2. mq_close()
      3. mq_unlink()
      4. mq_send()
      5. mq_receive()
      6. mq_notify()
      7. mq_setattr()
      8. mq_getattr()
      9. mq_timedreceive()
      10. mq_timedsend()
    6. Conditional Variables
      1. pthread_cond_init()
      2. pthread_cond_destroy()
      3. pthread_cond_wait()
      4. pthread_cond_timedwait()
      5. pthread_cond_signal()
      6. pthread_cond_broadcast()
      7. pthread_condattr_init()
      8. pthread_condattr_destroy()
    7. Barriers
      1. pthread_barrier_init()
      2. pthread_barrier_destroy()
      3. pthread_barrier_wait()
    8. Timers
      1. timer_create()
      2. timer_delete()
      3. timer_settime()
      4. timer_gettime()
      5. timer_getoverrun()
      6. timer_tick()
      7. nanosleep()
    9. Clocks
      1. time()
      2. uptime()
      3. sleep()
      4. clock_settime()
      5. clock_gettime()
      6. clock_getres()
      7. clock_init()
    10. Memory Allocation
      1. POSIX.1
        1. malloc()
        2. free()
      2. Variable Length (Pools)
        1. pool_create()
        2. pool_destroy()
        3. pool_alloc()
        4. pool_free()
      3. Fixed Length (Partitions)
        1. pt_create()
        2. pt_destroy()
        3. pt_getblock()
        4. pt_freeblock()
    11. Rendezvous
      1. mr_init()
      2. mr_send()
      3. mr_receive()
      4. mr_reply()
      5. mr_sigrecv()
      6. mr_sigpost()
    12. Interrupts
      1. interrupts
      2. i_disable()
      3. i_restore()
    13. Directory Services
      1. dir_register()
      2. dir_deregister()
      3. dir_lookup()
      4. dir_lookup_string()
    14. Miscellaneous
      1. checkIstack()
      2. NanoStart() or DSPexec_Start()
      3. _isrStackFill
      4. Kernel Scaling
      5. kfatal()
      6. kalloc()
      7. kfree()
      8. mpu or mmu
      9. pthreadStackFill
      10. thread_numb()
      11. thread_utilization_start()
      12. thread_utilization_stop()
      13. xprintf()
      14. xputs()
      15. xputchar()
  2. Unison I/O Library
    1. accept()
    2. bind()
    3. chmod()
    4. close()
    5. connect()
    6. creat()
    7. fstat()
    8. getpeername()
    9. getsockname()
    10. getsockopt()
    11. ioctl()
    12. link()
    13. listen()
    14. lseek()
    15. mkdir()
    16. mkfs()
    17. mount()
    18. open()
    19. read()
    20. recv()
    21. recvfrom()
    22. rename()
    23. renameat()
    24. rmdir()
    25. select()
    26. send()
    27. sendto()
    28. setsockopt()
    29. shutdown()
    30. socket()
    31. stat()
    32. sync()
    33. umount()
    34. unlink()
    35. write()
  3. Unison STDIO Library
    1. STDIO Library Calls
      1. clearerr()
      2. dprintf()
      3. fclose()
      4. fdopen()
      5. feof()
      6. ferror()
      7. fileno()
      8. fflush()
      9. fgetc()
      10. fgetpos()
      11. fgets()
      12. fopen()
      13. fprintf()
      14. fputc()
      15. fputs()
      16. fread()
      17. freopen()
      18. fscanf()
      19. fseek()
      20. fseeko()
      21. fsetpos()
      22. ftell()
      23. ftello()
      24. fwrite()
      25. getc()
      26. getc_unlocked()
      27. getchar()
      28. getchar_unlocked()
      29. getdelim()
      30. getline()
      31. gets()
      32. get_stderr_ptr()
      33. get_stdin_ptr()
      34. get_stdout_ptr()
      35. noperprintf()
      36. perprintf()
      37. perror()
      38. posix_compat()
      39. printf()
      40. putc()
      41. putc_unlocked()
      42. putchar()
      43. putchar_unlocked()
      44. puts()
      45. remove()
      46. rewind()
      47. scanf()
      48. setbuf()
      49. setvbuf()
      50. snprintf()
      51. sprintf()
      52. sscanf()
      53. stderr_init()
      54. stderr_close()
      55. stdin_init()
      56. stdin_close()
      57. stdout_init()
      58. stdout_close()
      59. vdprintf()
      60. vscanf()
      61. vsscanf()
      62. vfscanf()
      63. vprintf()
      64. vsnprintf()
      65. vsprintf()
      66. vfprintf()
      67. ungetc()
    2. Do-nothing Stubs
      1. ctermid()
      2. flockfile()
      3. fmemopen()
      4. ftrylockfile()
      5. open_memstream()
      6. pclose()
      7. popen()
      8. tempnam()
      9. tmpfile()
      10. tmpnam()
  4. Unison LIBC Library
    1. LIBC Library Calls
      1. assert()
      2. realloc()
      3. strcasecmp()
      4. strdup()
      5. strncasecmp()
      6. strftime()
    2. Do-nothing Stubs
      1. abort()
      2. execve()
      3. exit()
      4. _Exit()
      5. fork()
      6. getpid()
      7. isatty()
      8. kill()
      9. sbrk()
      10. times()
      11. wait()
    3. Do-nothing Wide-character Stubs
      1. <wchar.h>
      2. <wctype.h>
  5. Unison I/O Servers
    1. File Servers
      1. Multimedia File Server - fsys
      2. FAT File System - fatfs
      3. NAND File Server - nandfsys
      4. NOR File Server - norfsys
      5. Network File Server - nfs
  6. Graphics, Camera, Video, Audio
    1. Vendor Graphics
    2. Prism++ Graphics
    3. ADPCM Services - adpcmd
    4. Camera
  7. Network Protocols
    1. TCP and UDP Server - tcpd
      1. IPv4 only server
      2. IPv4/IPv6 server
    2. DHCP Client Service - dhcp client
    3. DHCP Server - dhcpd
    4. Telnet Server - telnetd
    5. Tiny FTP Server - tftpd
    6. Point to Point - pppd
    7. Network Translation - NAT with PAT
    8. Firewall
      1. Packet filter: pf
      2. Packet filter control: pfctl
      3. Fitler rules: pf.filtering
      4. Translation rules: pf.nat
    9. Tiny HTTP Server - thttpd
    10. Tiny HTTP Server with TLS
    11. POP3 Server
    12. Simple Mail Transfer Protocol Services (SMTP)
    13. Bootp Protocol
    14. File Transfer Protocol Server (FTP)
    15. File Transfer Client Services
    16. RPC / XDR
    17. DNS Client
    18. HTTP/HTTPS Client
    19. REST Client
    20. AutoIP Service - autoip client
    21. mDNS server - mdnsd
    22. SNTP Client
    23. SNMP Agent - Snmpd server
    24. SSL/TLS library
    25. SSH server
    26. IP security
      1. IPsec description
      2. IPsec administration: ipsecadm
      3. Virtual Private Network: VPN
    27. Power Control
      1. Motor and Motion Control Servers
      2. PWM, Encoders
    28. Serial I/O
      1. Asynchronous Serial I/O Server - ttyserver
      2. CAN Server - cand
      3. I2C Server - i2cd
      4. I2S Server - i2sd
    29. System Services
      1. Power Management Servers
      2. Login Service - login_services
      3. XML
      4. POSIX Shell and Login Service - posh
    30. Universal Serial Bus (USB)
      1. USB Server
      2. USB Device Server
      3. USB Embedded Host Server
    31. Wireless
      1. Wireless Servers and Drivers
      2. 802.15.4 Radio Servers
      3. TCP/v6 with 6loWPAN
      4. ZigBee
      5. BlueTooth Server
      6. 802.11 Wi-Fi
      7. GPRS, UHF and GPS Radio Servers
    32. Remedy Tools for Unison
      1. Remedy Data Logging and Event Display Tools
      2. Remedy Diagnostics
      3. Remedy Flash Downloader/Bootloader
      4. Remedy Power On Self Test - POST
      5. Remedy OS Object Viewer
      6. Remedy Remote Control Tools

7.31.6.802.11 Wi-Fi #

NAME

Wi-Fi (802.11) wireless service

SYNOPSIS

#include <net80211/ieee80211.h>
#include <net80211/ieee80211_ioctl.h>
#include <net80211/ieee80211_proto.h>

int ioctl(int socket, int cmd, caddr_t param);

 

DESCRIPTION

The Wi-Fi (802.11) wireless service is a part of the TCP and UDP Server – tcpd. This service provides configuration and management of Wi-Fi interface parameters. User can do this by ioctl() function.


Wi-Fi service ioctl() commands

SIOCS80211SCAN – scan request
This command starts networks scanning procedure. If user not setup network name before scanning – stack will scan all available networks. If user setup network name, then after scan complete stack will try to connect to this network.

/*
 * scan request
 */
struct ifreq ifr;

memset(&ifr, 0, sizeof(ifr));
strcpy(ifr.ifr_name, "wifi0");
ioctl(s, SIOCS80211SCAN, (caddr_t)&ifr);

 

SIOCG80211ALLNODES – get the entire node cache
This command gets all networks which had been found by scan request. User can limit requesting networks number by size of array struct ieee80211_nodereq.

/*
 * get found nodes
 */
struct ieee80211_nodereq_all na;
struct ieee80211_nodereq nr[10];

memset(&na, 0, sizeof(na));
memset(&nr, 0, sizeof(nr));
na.na_node = nr;
na.na_size = sizeof(nr);

strcpy(na.na_ifname, "wifi0");
ioctl(s, SIOCG80211ALLNODES, &na);

 

SIOCS80211NWID – set nwid
This command sets network id (name). The name can be any text string up to 32 characters in length. The empty string allows the interface to scan all available access points.

/*
 * set nwid
 */
#define NET_NAME "network_name"
struct ifreq ifr;
struct ieee80211_nwid nwid;
int len;

memset(&ifr, 0, sizeof(ifr));
len = strlen(NET_NAME);
strcpy((char *)nwid.i_nwid, NET_NAME);
nwid.i_len = len;
ifr.ifr_data = (caddr_t)&nwid;

strcpy(ifr.ifr_name, "wifi0");
ioctl(s, SIOCS80211NWID, (caddr_t)&ifr);

 

SIOCG80211NWID – get nwid
This command gets network id (name). The name can be any text string up to 32 characters in length. The empty string allows the interface to scan all available access points.

/*
 * get nwid
 */
struct ifreq ifr;
struct ieee80211_nwid nwid;

memset(&ifr, 0, sizeof(ifr));
ifr.ifr_data = (caddr_t)&nwid;

strcpy(ifr.ifr_name, "wifi0");
ioctl(s, SIOCG80211NWID, (caddr_t)&ifr);

printf("nwid '%s'\n", nwid.i_nwid);

 

SIOCS80211CHANNEL – set network channel
This command sets network channel (radio frequency). If channel equals IEEE80211_CHAN_ANY, then interface gets channel from connected access point.

/*
 * set channel
 */
struct ieee80211chanreq channel;

channel.i_channel = 8;
strcpy(channel.i_name, "wifi0");
ioctl(s, SIOCS80211CHANNEL, (caddr_t)&channel);

 

SIOCG80211CHANNEL – get network channel
This command gets network channel (radio frequency).

/*
 * get channel
 */
struct ieee80211chanreq channel;

memset(&channel, 0, sizeof(channel));
strcpy(channel.i_name, "wifi0");
ioctl(s, SIOCG80211CHANNEL, (caddr_t)&channel);

if (channel.i_channel != IEEE80211_CHAN_ANY)
    printf("channel %d\n", channel.i_channel);

 

SIOCS80211NWKEY – set network access method and key
This command sets network access method and key (password).
Access methods:
– IEEE80211_NWKEY_OPEN: disable WEP encryption (no privacy)
– IEEE80211_NWKEY_WEP: enabled WEP encryption
The password can be any text string up to 16 characters in length.

/*
 * set nwkey
 */
#define NET_SEC_PROTO   IEEE80211_NWKEY_WEP
#define NET_KEY         "1234567890"
struct ieee80211_nwkey nwkey;
uchar keybuf[16];

memset(&nwkey, 0, sizeof(nwkey));
memset(&keybuf, 0, sizeof(keybuf));

nwkey.i_wepon = NET_SEC_PROTO;
nwkey.i_defkid = 1;

strcpy((char *)keybuf, NET_KEY);
nwkey.i_key[0].i_keylen = strlen(NET_KEY);
nwkey.i_key[0].i_keydat = keybuf;

strcpy(nwkey.i_name, "wifi0");
ioctl(s, SIOCS80211NWKEY, (caddr_t)&nwkey);

 

SIOCG80211NWKEY – get network access method and key
This command gets network access method and key (password).
Access methods:
– IEEE80211_NWKEY_OPEN: disable WEP encryption (no privacy)
– IEEE80211_NWKEY_WEP: enabled WEP encryption
The password can be any text string up to 16 characters in length.

/*
 * get nwkey
 */
struct ieee80211_nwkey nwkey;
uchar keybuf[16];

memset(&nwkey, 0, sizeof(nwkey));
memset(&keybuf, 0, sizeof(keybuf));

nwkey.i_key[0].i_keylen = sizeof(keybuf);
nwkey.i_key[0].i_keydat = keybuf;

strcpy(nwkey.i_name, "wifi0");
ioctl(s, SIOCG80211NWKEY, (caddr_t)&nwkey);

if (nwkey.i_wepon == IEEE80211_NWKEY_WEP)
    printf("wep key: '%s'\n", keybuf);

 

SIOCS80211WPAPARMS – set WPA parameters
This command enables WPA (Wi-Fi Protected Access) and sets version.
WPA versions:
– IEEE80211_WPA_PROTO_WPA1: WPA version 1
– IEEE80211_WPA_PROTO_WPA2: WPA version 2
If field wpa.i_enabled equals ‘0’, then WPA will be disable.

/*
 * set WPA version
 */
#define NET_SEC_PROTO   IEEE80211_WPA_PROTO_WPA1
struct ieee80211_wpaparams wpa;

memset(&wpa, 0, sizeof(wpa));
wpa.i_enabled = 1;
wpa.i_protos = NET_SEC_PROTO;

strcpy(wpa.i_name, "wifi0");
ioctl(s, SIOCS80211WPAPARMS, (caddr_t)&wpa);

 

SIOCG80211WPAPARMS – get WPA parameters
This command gets WPA state and version.
WPA versions:
– IEEE80211_WPA_PROTO_WPA1: WPA version 1
– IEEE80211_WPA_PROTO_WPA2: WPA version 2

/*
 * get WPA version
 */
struct ieee80211_wpaparams wpa;

memset(&wpa, 0, sizeof(wpa));
strcpy(wpa.i_name, "wifi0");
ioctl(s, SIOCG80211WPAPARMS, (caddr_t)&wpa);

if (wpa.i_enabled)
{
    if (wpa.i_protos == IEEE80211_WPA_PROTO_WPA1)
        printf("wpa1");
    else if (wpa.i_protos == IEEE80211_WPA_PROTO_WPA2)
        printf("wpa2");
}

 

SIOCS80211WPAPSK – set PSK
This command sets network PSK (Pre-Shared Key) for WPA. The key can be any text string up to 32 characters in length.

/*
 * set PSK key
 */
#define NET_KEY         "1234567890"
struct ieee80211_wpapsk psk;

memset(&psk, 0, sizeof(psk));
psk.i_enabled = 1;
strcpy((char *)psk.i_psk, NET_KEY);

strcpy(psk.i_name, "wifi0");
ioctl(s, SIOCS80211WPAPSK, (caddr_t)&psk);

 

SIOCG80211WPAPSK – get PSK
This command gets network PSK (Pre-Shared Key) for WPA. The key can be any text string up to 32 characters in length.

/*
 * get PSK key
 */
struct ieee80211_wpapsk psk;

memset(&psk, 0, sizeof(psk));
strcpy(psk.i_name, "wifi0");
ioctl(s, SIOCS80211WPAPSK, (caddr_t)&psk);

if (psk.i_enabled == 1)
    printf("psk: '%s'\n", psk.i_psk);

 

SIOCG80211STATE – get current state
This command gets interface current state.
Wi-Fi interface states:
– IEEE80211_S_INIT: default state
– IEEE80211_S_SCAN: scanning
– IEEE80211_S_AUTH: try to authenticate
– IEEE80211_S_ASSOC: try to associate
– IEEE80211_S_RUN: associated

/*
 * get state
 */
struct ifreq ifr;
enum ieee80211_state ic_state;

memset(&ifr, 0, sizeof(ifr));
memset(&ic_state, 0, sizeof(ic_state));
ifr.ifr_data = (caddr_t)&ic_state;

strcpy(ifr.ifr_name, "wifi0");
ioctl(s, SIOCG80211STATE, (caddr_t)&ifr);

 

SIOCGIFMEDIA – get interface media state
This command gets interface media activity state. The command not concern to Wi-Fi service directly but allow check network state.
Interface media activity bits:
– IFM_AVALID: active bit valid
– IFM_ACTIVE: interface attached to working net

/*
 * get media activity
 */
struct ifmediareq ifmr;

memset(&ifmr, 0, sizeof(ifmr));
strcpy(ifmr.ifm_name, "wifi0");
ioctl(s, SIOCGIFMEDIA, (caddr_t)&ifmr);

if (ifmr.ifm_status & IFM_AVALID)
{
    if (ifmr.ifm_status & IFM_ACTIVE)
        printf("active\n");
    else
        printf("no network\n");
}
else
    printf("status unknown\n");

 

NOTES

There are a Wi-Fi demo projects available for the Unison and DSPnano which is found in installdir/demo.

 

SEE ALSO

tcpd, socket(), ioctl()

Suggest Edit

CONTACT US

TO GET YOUR PROJECT STARTED

TOP