# Copyright 2008 Alessio Sangalli # This code is GNU GPL #include #include #include #include #include #include int d = 0; int main() { GPContext* context; CameraAbilitiesList* al; GPPortInfoList* il; CameraList* list; const char* model; const char* port; int i, c; int res; Camera** cameras; char** camera_names; // Auto-detection of cameras context = gp_context_new(); gp_abilities_list_new(&al); gp_abilities_list_load(al, context); gp_port_info_list_new(&il); gp_port_info_list_load(il); gp_list_new(&list); gp_abilities_list_detect(al, il, list, context); // Now we have the list of connected cameras; let's prepare the structures c=gp_list_count(list)-1; cameras = malloc(sizeof(Camera*)*c); camera_names = malloc(sizeof(char*)*c); printf("Number of cameras: %d\n", c); // We skip the first "generic" one for(i=1; i<=c; i++) { int m, p; GPPortInfo info; CameraAbilities a; // We get info on the abilities of this camera... gp_list_get_name(list, i, &model); m = gp_abilities_list_lookup_model(al, model); gp_abilities_list_get_abilities(al, m, &a); // We get info about the port... gp_list_get_value(list, i, &port); p = gp_port_info_list_lookup_path(il, port); gp_port_info_list_get_info(il, p, &info); // We allocate and set the camera. printf("Detected camera #%d: name='%s' port='%s'\n", i-1, model, port); gp_camera_new(&cameras[i-1]); gp_camera_set_abilities(cameras[i-1], a); gp_camera_set_port_info(cameras[i-1], info); } // Cleanup gp_list_unref(list); gp_port_info_list_free(il); gp_abilities_list_free(al); // We now initialize the communication with cameras for(i=0; i