00001 /*!@file NeovisionII/nv2-test-client.c */ 00002 00003 // //////////////////////////////////////////////////////////////////// // 00004 // The iLab Neuromorphic Vision C++ Toolkit - Copyright (C) 2000-2005 // 00005 // by the University of Southern California (USC) and the iLab at USC. // 00006 // See http://iLab.usc.edu for information about this project. // 00007 // //////////////////////////////////////////////////////////////////// // 00008 // Major portions of the iLab Neuromorphic Vision Toolkit are protected // 00009 // under the U.S. patent ``Computation of Intrinsic Perceptual Saliency // 00010 // in Visual Environments, and Applications'' by Christof Koch and // 00011 // Laurent Itti, California Institute of Technology, 2001 (patent // 00012 // pending; application number 09/912,225 filed July 23, 2001; see // 00013 // http://pair.uspto.gov/cgi-bin/final/home.pl for current status). // 00014 // //////////////////////////////////////////////////////////////////// // 00015 // This file is part of the iLab Neuromorphic Vision C++ Toolkit. // 00016 // // 00017 // The iLab Neuromorphic Vision C++ Toolkit is free software; you can // 00018 // redistribute it and/or modify it under the terms of the GNU General // 00019 // Public License as published by the Free Software Foundation; either // 00020 // version 2 of the License, or (at your option) any later version. // 00021 // // 00022 // The iLab Neuromorphic Vision C++ Toolkit is distributed in the hope // 00023 // that it will be useful, but WITHOUT ANY WARRANTY; without even the // 00024 // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // 00025 // PURPOSE. See the GNU General Public License for more details. // 00026 // // 00027 // You should have received a copy of the GNU General Public License // 00028 // along with the iLab Neuromorphic Vision C++ Toolkit; if not, write // 00029 // to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, // 00030 // Boston, MA 02111-1307 USA. // 00031 // //////////////////////////////////////////////////////////////////// // 00032 // 00033 // Primary maintainer for this file: Rob Peters <rjpeters at usc dot edu> 00034 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/NeovisionII/nv2-test-client.c $ 00035 // $Id: nv2-test-client.c 8362 2007-05-12 16:34:40Z rjpeters $ 00036 // 00037 00038 #ifndef NEOVISIONII_NV2_TEST_CLIENT_C_DEFINED 00039 #define NEOVISIONII_NV2_TEST_CLIENT_C_DEFINED 00040 00041 #include "NeovisionII/nv2_common.h" 00042 #include "NeovisionII/nv2_label_reader.h" 00043 00044 #include <arpa/inet.h> 00045 #include <errno.h> 00046 #include <netinet/in.h> 00047 #include <pthread.h> 00048 #include <stdio.h> 00049 #include <stdlib.h> 00050 #include <string.h> 00051 #include <sys/socket.h> 00052 #include <sys/un.h> 00053 #include <unistd.h> 00054 00055 int main (int argc, char* const argv[]) 00056 { 00057 if (argc < 4) 00058 { 00059 fprintf(stderr, "usage: %s dest-ip-addr imagesize nimages\n", 00060 argv[0]); 00061 return 0; 00062 } 00063 00064 const char* const dest_ip_addr = argv[1]; 00065 const int imagesize = atoi(argv[2]); 00066 const int nimages = atoi(argv[3]); 00067 00068 if (imagesize <= 0) 00069 { 00070 fprintf(stderr, "expected imagesize>0, " 00071 "but got imagesize=%d\n", imagesize); 00072 } 00073 00074 srand(time(0) + getpid() * 345); 00075 00076 struct nv2_label_reader* reader = 00077 nv2_label_reader_create(NV2_LABEL_READER_PORT, 00078 dest_ip_addr, 00079 NV2_PATCH_READER_PORT); 00080 00081 for (int i = 0; i < nimages; ++i) 00082 { 00083 struct nv2_image_patch p; 00084 p.protocol_version = NV2_PATCH_PROTOCOL_VERSION; 00085 p.width = imagesize; 00086 p.height = imagesize; 00087 p.id = (uint32_t) i; 00088 p.type = NV2_PIXEL_TYPE_GRAY8; 00089 p.data = (unsigned char*) malloc(p.width * p.height 00090 * sizeof(unsigned char)); 00091 00092 for (uint32_t i = 0; i < p.width * p.height; ++i) 00093 p.data[i] = rand() % 256; 00094 00095 nv2_label_reader_send_patch(reader, &p); 00096 00097 usleep(100000); 00098 00099 struct nv2_patch_label l; 00100 if (nv2_label_reader_get_current_label(reader, &l)) 00101 { 00102 fprintf(stderr, 00103 "got patch label: id=%u, " 00104 "source=%s, name=%s, extra_info=%s\n", 00105 (unsigned int) l.patch_id, 00106 l.source, l.name, l.extra_info); 00107 } 00108 } 00109 00110 nv2_label_reader_send_patch(reader, 0); 00111 00112 nv2_label_reader_destroy(reader); 00113 00114 return 0; 00115 } 00116 00117 // ###################################################################### 00118 /* So things look consistent in everyone's emacs... */ 00119 /* Local Variables: */ 00120 /* indent-tabs-mode: nil */ 00121 /* c-file-style: "linux" */ 00122 /* End: */ 00123 00124 #endif // NEOVISIONII_NV2_TEST_CLIENT_C_DEFINED