]> git.decadent.org.uk Git - ap-utils.git/blobdiff - lib/scr.c
Update description to cover all current utilities
[ap-utils.git] / lib / scr.c
index 20a75ed790d06f881ee73885171cc1c94665ba2f..6ad506a3bcbefc3b2da320e9658380e4d9ac96b5 100644 (file)
--- a/lib/scr.c
+++ b/lib/scr.c
 #include <unistd.h>
 #include <string.h>
 #include "ap-utils.h"
-#include "ap-curses.h"
 #include <menu.h>
 
 extern WINDOW *main_sub, *win_for_help, *main_win;
+extern short ap_type, ap_vendorext;
 
 enum { dBm, percentage, rawval } sts_viewtype = dBm;
 
@@ -37,22 +37,16 @@ scroll_rows(struct MacListStat *first, int begin, int end, int row,
     struct MacListStat *curr = first;
     char message[100];
 
-    clear_main(3);
+    clear_main(row);
 
     while (i++ < begin)
        curr = curr->next;
     i = 0;
     while (end-- > begin) {
        if (stat == 1) {
-           /* NWN view */
+           /* NWN STAtions listing */
            sprintf(message,
-               (sts_viewtype == dBm) ?
-               "%4u       %02X%02X%02X%02X%02X%02X        %3u%5u   %3udBm"
-               :
-               (sts_viewtype == percentage) ?
-               "%4u       %02X%02X%02X%02X%02X%02X        %3u%5u     %3u%%"
-               :
-               "%4u       %02X%02X%02X%02X%02X%02X        %3u%5u      %3u",
+               "%4u       %02X%02X%02X%02X%02X%02X        %3u%5u     %3d",
                begin + i, curr->addr[0] & 0xFF, curr->addr[1] & 0xFF,
                curr->addr[2] & 0xFF, curr->addr[3] & 0xFF,
                curr->addr[4] & 0xFF, curr->addr[5] & 0xFF,
@@ -61,56 +55,50 @@ scroll_rows(struct MacListStat *first, int begin, int end, int row,
                conv_rssi(curr->rssi)
            );
        } else if (stat == 2) {
-           /* ATMEL410_SBRIDGES (firmware 1.4k.1) view */
-           sprintf(message,
-               (sts_viewtype == dBm) ?
-               "%2u %02X%02X%02X%02X%02X%02X %3d%% %4ddBm  %3u    %2u   %s"
-               :
-               (sts_viewtype == percentage) ?
-               "%2u %02X%02X%02X%02X%02X%02X %3d%%   %3u%%  %3u    %2u   %s"
-               :
-               "%2u %02X%02X%02X%02X%02X%02X %3d%%    %3u  %3u    %2u   %s",
-               begin + i,
-               curr->addr[0] & 0xFF, curr->addr[1] & 0xFF,
-               curr->addr[2] & 0xFF, curr->addr[3] & 0xFF,
-               curr->addr[4] & 0xFF, curr->addr[5] & 0xFF,
-               curr->quality,
-               conv_rssi(curr->rssi),
-               curr->Status,
-               curr->Port,
-               inet_ntoa(curr->IP)
-           );
-       } else if (stat == 3) {
-           /* ATMEL12350_VERNET view */
-           sprintf(message,
-               (sts_viewtype == dBm) ?
-               "%2u %02X%02X%02X%02X%02X%02X %02X%02X%02X%02X%02X%02X "
-               "%4ddBm  %3u    %2u  %s"
-               :
-               (sts_viewtype == percentage) ?
-               "%2u %02X%02X%02X%02X%02X%02X %02X%02X%02X%02X%02X%02X "
-               "  %3u%%   %3u    %2u  %s"
-               :
-               "%2u %02X%02X%02X%02X%02X%02X %02X%02X%02X%02X%02X%02X "
-               "   %3u   %3u    %2u  %s",
+           /* ATMEL STAtions listing */
+           char parentmac[13] = "      -     ";
+           char rssi[5] = "   -";
+           char quality[5] = "   -";
+           char status[4] = "  -";
+           char port[4] = " -";
+           char ip[16] = "      -        ";
+
+           if (curr->ParentMacAddress[0] | curr->ParentMacAddress[1] |
+               curr->ParentMacAddress[2] | curr->ParentMacAddress[3] |
+               curr->ParentMacAddress[4] | curr->ParentMacAddress[5])
+               sprintf(parentmac, "%02X%02X%02X%02X%02X%02X",
+                   curr->ParentMacAddress[0] & 0xFF,
+                   curr->ParentMacAddress[1] & 0xFF,
+                   curr->ParentMacAddress[2] & 0xFF,
+                   curr->ParentMacAddress[3] & 0xFF,
+                   curr->ParentMacAddress[4] & 0xFF,
+                   curr->ParentMacAddress[5] & 0xFF);
+
+           if (curr->rssi)
+               sprintf(rssi, "%4d", conv_rssi(curr->rssi));
+
+           if (curr->quality)
+               sprintf(quality, "%3u%%", curr->quality);
+
+           if (curr->Status)
+               sprintf(status, "%3u", curr->Status);
+
+           if (curr->Port)
+               sprintf(port, "%2u", curr->Port);
+
+           if(curr->IP.s_addr)
+               sprintf(ip, "%s", inet_ntoa(curr->IP));
+
+           sprintf(message, "%3u %02X%02X%02X%02X%02X%02X %s %s %s %s   %s %s",
                begin + i,
                curr->addr[0] & 0xFF, curr->addr[1] & 0xFF,
                curr->addr[2] & 0xFF, curr->addr[3] & 0xFF,
                curr->addr[4] & 0xFF, curr->addr[5] & 0xFF,
-               curr->ParentMacAddress[0] & 0xFF,
-               curr->ParentMacAddress[1] & 0xFF,
-               curr->ParentMacAddress[2] & 0xFF,
-               curr->ParentMacAddress[3] & 0xFF,
-               curr->ParentMacAddress[4] & 0xFF,
-               curr->ParentMacAddress[5] & 0xFF,
-               conv_rssi(curr->rssi),
-               curr->Status,
-               curr->Port,
-               inet_ntoa(curr->IP)
+               parentmac, rssi, quality, status, port, ip
            );
        } else {
-           /* generic ATMEL view */
-           sprintf(message, "%2u       %02X%02X%02X%02X%02X%02X",
+           /* MAC auth table listing */
+           sprintf(message, " %3u     %02X%02X%02X%02X%02X%02X",
                begin + i, curr->addr[0] & 0xFF, curr->addr[1] & 0xFF,
                curr->addr[2] & 0xFF, curr->addr[3] & 0xFF,
                curr->addr[4] & 0xFF, curr->addr[5] & 0xFF
@@ -140,77 +128,79 @@ void print_help(char *mess)
 
 void print_helperr(char *mess)
 {
-    wattrset(win_for_help, COLOR_PAIR(4) | A_BOLD);
+    wattrset(win_for_help, COLOR_PAIR(14) | A_BOLD);
     print_help(mess);
-    wattrset(win_for_help, COLOR_PAIR(1));
+    wattrset(win_for_help, COLOR_PAIR(11));
 }
 
-void print_title(char *mess)
+void print_bold(WINDOW *wptr, char *mess)
 {
-    int i;
-    /* íÁÌÀÀ ÒÁÍËÕ */
-    for (i = 0; i < COLS - MCOLS - 1; i++)
-       mvwaddch(main_win, 0, i, ACS_BSBS);
-    wattrset(main_win, A_BOLD);
-    mvwaddstr(main_win, 0, COLS - MCOLS - strlen(mess) - 2, mess);
-    wattrset(main_win, A_NORMAL);
-    wrefresh(main_win);
-}
-
-void print_viewtype(char *mess)
-{
-    /*
-     * note: when used to update with different strlen(mess) than previous one,
-     * call print_title() before this one so that the top line gets updated !
-     */
-    wattrset(main_win, A_BOLD);
-    mvwaddstr(main_win, 0, 1, "View: ");
-    waddstr(main_win, mess);
-    wattrset(main_win, A_NORMAL);
-    wrefresh(main_win);
-}
-
-void print_viewtype_rssi()
-{
-    switch (sts_viewtype) {
-       case dBm:
-          print_viewtype("RSSI in dBm");
-          return;
-       case percentage:
-          print_viewtype("RSSI in percentage");
-          return;
-       case rawval:
-          print_viewtype("RSSI in raw values");
-    }
+    wattrset(wptr, A_BOLD);
+    waddstr(wptr, mess);
+    wattrset(wptr, A_NORMAL);
+    wrefresh(wptr);
 }
 
 void print_menusel(int y, int x, char *mess1, char *mess2)
 {
     mvwaddstr(main_sub, y, x, mess1);
-    wattrset(main_sub, A_BOLD);
-    waddstr(main_sub, mess2);
-    wattrset(main_sub, A_NORMAL);
-    wrefresh(main_sub);
+    print_bold(main_sub, mess2);
 }
 
 void print_bottom(char *mess)
 {
     int i;
     char message[100];
-    extern short ap_type;
-    extern char *ap_types[];
+    extern short ap_type, ap_vendorext;
+    extern char *ap_types[], *ap_vendorexts[][3];
 
-    sprintf(message, _("Current AP: %s Type: %s"), mess, ap_types[ap_type]);
+    sprintf(message, _("Current AP: %s Type: %s Ext: %s"),
+       mess, ap_types[ap_type], ap_vendorexts[ap_type][ap_vendorext]);
     /* íÁÌÀÀ ÒÁÍËÕ */
     for (i = 0; i < COLS - MCOLS - 1; i++)
        mvwaddch(main_win, LINES - 3, i, ACS_BSBS);
+
+    wmove(main_win, LINES - 3, COLS - MCOLS - strlen(message) - 1);
+    print_bold(main_win, message);
+}
+
+void print_top(char *title_left, char *title_right)
+{
+    int i = 0;
+
+    wmove(main_win, 0, 0);
+    while (i++ < COLS - MCOLS - 1)
+       waddch(main_win, ACS_BSBS);
+
     wattrset(main_win, A_BOLD);
-    mvwaddstr(main_win, LINES - 3, COLS - MCOLS - strlen(message) - 1,
-             message);
+    if (title_left)
+       mvwaddstr(main_win, 0, 2, title_left);
+
+    if (title_right)
+       mvwaddstr(main_win, 0, COLS - MCOLS - strlen(title_right) - 2,
+           title_right);
+
     wattrset(main_win, A_NORMAL);
     wrefresh(main_win);
 }
 
+void print_top_rssi(char *message_r)
+{
+    char message_l[200];
+
+    sprintf(message_l, "%s", "RSSI: ");
+    switch (sts_viewtype) {
+       case dBm:
+          strcat(message_l, "dBm");
+          break;
+       case percentage:
+          strcat(message_l, "%");
+          break;
+       case rawval:
+          strcat(message_l, "raw");
+    }
+    print_top(message_l, message_r);
+}
 
 void clear_main(int m)
 {
@@ -231,7 +221,7 @@ int conv_rssi(int raw_rssi)
 {
     switch (sts_viewtype) {
        case dBm:
-          return (-96 + raw_rssi); 
+          return (dbmconv(raw_rssi)); 
        case percentage:
           return ((int)((minimum (raw_rssi, 40)) * (float)2.5));
        case rawval: