int main() { int major; int fd1, fd2, fd3; float value1, value2, value3; size_t i; ios_init(); major = ios_install_driver( "mon_driver.so.1.0.1", "127.0.0.1", 8080 ); printf( "Result is : %d\n", major ); if( major < 0 ) { ios_release(); return; } fd1 = ios_add_device( major, 7 ); printf( "Result is : %d\n", fd1 ); fd2 = ios_add_device( major, 3 ); printf( "Result is : %d\n", fd2 ); fd3 = ios_add_device( major, 2 ); ios_attach_global_handler( h ); ios_attach_handler( fd1, h1 ); for( i = 0; i < 60; i++ ) { sleep( 10 ); ios_read( fd1, DRV_FIELD_TEMPERATURE, &value1 ); ios_read( fd2, DRV_FIELD_TEMPERATURE, &value2 ); ios_read( fd3, DRV_FIELD_TEMPERATURE, &value3 ); printf( "Temp1 : %f / Temp2 : %f / Temp3 : %f\n", value1, value2, value3 ); ios_write( fd2, 10 ); } ios_remove_device( fd1 ); ios_remove_device( fd2 ); sleep( 1 ); ios_uninstall_driver( major ); ios_release(); return 0; }
/*============================================================================== * - T_shell() * * - the shell task entry */ void T_shell () { char usr_cmd_line[_CMD_LEN_MAX]; char *start_cmd = NULL; banner(); _shell_cmd_init(); /* i, exit ... */ yaffs_init(); /* cd, ls, pwd ... */ vi_cmd_init(); /* vi */ net_init(); tetris_cmd_init(); /* tetris */ lian_cmd_init(); /* lianliankan */ date_cmd_init(); /* show and set date */ cal_cmd_init(); /* calculator expression */ gui_init(); ios_init(); media_init(); wtd_cmd_init(); #if 0 fat_cmd_init(); /* fatls */ usb_cmd_init(); /* usb.start ... */ #endif serial_puts("\n-> "); FOREVER { _get_cmd_line(usr_cmd_line); start_cmd = _del_front_space(usr_cmd_line); /* * cmd_line have no char except blank */ if (strlen(start_cmd) == 0) { serial_puts("-> "); continue; } /* * deal with cmd_line */ if (cmd_do(start_cmd) == CMD_EXIT) { serial_puts("\nAu Revoir!\n"); break; } else { serial_puts("\n-> "); } } }
int read_sensors(const char* path, infos_sensor* sensor, infos_drv* drv) { xmlDocPtr capteurs_doc; xmlNodePtr drivers_node; xmlNodePtr driver_node; xmlNodePtr capteur_node; capteurs_doc = xmlParseFile(path); if (capteurs_doc == NULL) { perror("xmlParseFile"); return -1; } /* the first xml element node of the file */ drivers_node = children_XML_ELEMENT_NODE((xmlNodePtr)capteurs_doc); /* init, install drivers and add all the capteurs */ ios_init(); int i; for(i=0; i < MAX_NUMBER_OF_SENSORS ; i++) { sensor[i].fd=0; sensor[i].id=0; sensor[i].name=NULL; sensor[i].used_fields=0; } int driver_counter = 0; int capteur_counter = 0; for( driver_node = children_XML_ELEMENT_NODE(drivers_node); driver_node != NULL; driver_node = next_XML_ELEMENT_NODE(driver_node)) { /* install a driverX/ */ xmlChar* drv_so_name = xmlGetProp(driver_node,(const xmlChar*)"so"); xmlChar* drv_ip = xmlGetProp(driver_node,(const xmlChar*)"ip"); xmlChar* drv_port = xmlGetProp(driver_node,(const xmlChar*)"port"); unsigned int port; sscanf((char*) drv_port, "%u", &port); printf("DEBUG unsigned int = %u\n", port); drv[driver_counter].id = ios_install_driver((char*) drv_so_name, (char*) drv_ip, port); drv[driver_counter].name = drv_so_name; xmlFree(drv_ip); xmlFree(drv_port); if( drv[driver_counter].id < 0 ) { ios_release(); perror("Driver loading error"); return drv[driver_counter].id; } for( capteur_node = children_XML_ELEMENT_NODE(driver_node); capteur_node != NULL; capteur_node = next_XML_ELEMENT_NODE(capteur_node)) { /* install a driverX/capteurY/ */ xmlChar* etat = xmlGetProp(capteur_node,(const xmlChar*)"etat"); if(etat[0] == 'O' && etat[1] == 'N'){ sensor[capteur_counter].name = xmlNodeGetContent(capteur_node); printf("\tname = %s\n", (char*)sensor[capteur_counter].name); xmlChar* id = xmlGetProp(capteur_node,(const xmlChar*)"id"); int id_int; sscanf((char*)id, "%X", &id_int); sensor[capteur_counter].fd = ios_add_device( drv[driver_counter].id,id_int); sensor[capteur_counter].id = id_int; xmlFree(id); } xmlFree(etat); capteur_counter++; } driver_counter++; } xmlFreeDoc(capteurs_doc); return 0; }