X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/rigol/blobdiff_plain/77385d56dba9eb59dce4191923d109d13b8501de..7a226bb8f5a070842eed562c04df6b79970a4e4b:/rigold.c diff --git a/rigold.c b/rigold.c index 0be124f..8f73431 100644 --- a/rigold.c +++ b/rigold.c @@ -5,9 +5,10 @@ #include #include #include -#include +#include +#include -#include "usbtmc.h" +#include "scope.h" #include "commands.h" static int send_binary(int s, char *buf, int len) @@ -32,24 +33,26 @@ static int send_text(int s, char *buf) return send_binary(s, buf, strlen(buf)); } -static void serve_index(int s) +static void serve_index(int s, struct scope *sc) { send_text(s, "HTTP/1.0 200 OK"); send_text(s, "Content-type: text/html\n\n"); - send_text(s, "Rigol DS1000\n"); + send_text(s, ""); + send_text(s, scope_idn(sc)); + send_text(s, "\n"); send_text(s, "\n"); send_text(s, "\n"); } -static void serve_lcd(int s, struct usb_dev_handle *sc) +static void serve_lcd(int s, struct scope *sc) { char buf[256]; int imglen; unsigned char *png; - usbtmc_claim(sc); + claimscope(sc); png = get_lcd(sc, &imglen, 0); - usbtmc_release(sc); + releasescope(sc); if (png == NULL) return; @@ -63,7 +66,7 @@ static void serve_lcd(int s, struct usb_dev_handle *sc) free(png); } -static void parse_request(int s, struct usb_dev_handle *sc) +static void parse_request(int s, struct scope *sc) { int ret; char buf[1024]; @@ -107,22 +110,40 @@ static void parse_request(int s, struct usb_dev_handle *sc) } while(token != NULL); if (strcmp("/", file) == 0) { - serve_index(s); + serve_index(s, sc); } else if (strcmp("/lcd.png", file) == 0) { serve_lcd(s, sc); } } +void sighandler(int sig) +{ + printf("Signal %d received\n", sig); +} + int main(int argc, char **argv) { + struct sigaction act; int sock, csock; int opt; socklen_t slen; - struct usb_dev_handle *sc; + struct scope *sc; struct sockaddr_in sin, clientsin; unsigned short port = 8088; - sc = usbtmc_initscope(); + sc = initscope(); + if (sc == NULL) { + printf("Scope not found!\n"); + exit(EXIT_FAILURE); + } + + bzero(&act, sizeof(act)); + act.sa_handler = sighandler; + act.sa_flags = SA_RESTART; + if (sigaction(SIGPIPE, &act, NULL) == -1) { + perror("sigaction"); + exit(EXIT_FAILURE); + } if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); @@ -161,6 +182,6 @@ int main(int argc, char **argv) close(csock); } - usbtmc_close(sc); + closescope(sc); return 0; }