Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "timer.h"
- #include "i8254.h"
- #include <limits.h>
- #include <string.h>
- #include <errno.h>
- static int proc_args(int argc, char **argv);
- static unsigned long parse_ulong(char *str, int base);
- static void print_usage(char **argv);
- int main(int argc, char **argv)
- {
- /* DO NOT FORGET TO initialize service */
- sef_startup();
- /* Enable IO-sensitive operations for ourselves */
- sys_enable_iop(SELF);
- if (argc == 1) { /* Prints usage of the program if no arguments are passed */
- print_usage(argv);
- return 0;
- }
- else return proc_args(argc, argv);
- }
- static void print_usage(char **argv)
- {
- printf("Usage: one of the following:\n"
- "\t service run %s -args \"config <decimal no.- timer>\"\n"
- "\t service run %s -args \"square <decimal no. - frequency>\"\n"
- "\t service run %s -args \"int <decimal no. - time>\"\n",
- argv[0], argv[0], argv[0]);
- }
- static int proc_args(int argc, char **argv)
- {
- unsigned long ass, num;
- unsigned char* leds;
- //kbd_test_scan()
- if (strncmp(argv[1], "config", strlen("config")) == 0) {
- if (argc != 3) {
- printf("KBD: wrong no. of arguments for kbd_test_scan()\n");
- return 1;
- }
- if (ass = parese_ulong(argv[2], 10) == ULONG_MAX)
- return 1;
- printf("KBD::kbd_test_scan(%lu)\n", ass);
- return kbd_test_scan(ass);
- }
- //kbd_test_leds()
- else if (strncmp(argv[1], "Led", strlen("Led")) == 0) {
- if (argc != 3) {
- printf("KBD: wrong no. of arguments for kbd_test_leds()\n");
- return 1;
- }
- num = argc - 2;
- if (leds == ULONG_MAX)
- return 1;
- printf("KBD::kbd_test_leds(%lu, leds)\n");
- return kbd_test_leds(n, leds);
- }
- else if (strncmp(argv[1], "int", strlen("int")) == 0) {
- if (argc != 3) {
- printf("KBD: wrong no of arguments for kbd_test_timed_scan\n");
- return 1;
- }
- time = parse_ulong(argv[2], 10); /* Parses string to unsigned long */
- if (time == ULONG_MAX)
- return 1;
- printf("KBD::kbd_test_timed_scan(%lu)\n");
- return kbd_test_timed_scan(n);
- }
- else {
- printf("KBD: %s - no valid function!\n", argv[1]);
- return 1;
- }
- }
- static unsigned long parse_ulong(char *str, int base)
- {
- char *endptr;
- unsigned long val;
- /* Convert string to unsigned long */
- val = strtoul(str, &endptr, base);
- /* Check for conversion errors */
- if ((errno == ERANGE && val == ULONG_MAX) || (errno != 0 && val == 0)) {
- perror("strtoul");
- return ULONG_MAX;
- }
- if (endptr == str) {
- printf("timer: parse_ulong: no digits were found in %s\n", str);
- return ULONG_MAX;
- }
- /* Successful conversion */
- return val;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement