Dependencies: mbed NetEthApiLPC1768 NetServicesLPC1768
main.cpp@0:c6d1b3f0c307, 2010-06-07 (annotated)
- Committer:
- nucho
- Date:
- Mon Jun 07 03:15:06 2010 +0000
- Revision:
- 0:c6d1b3f0c307
- Child:
- 1:e1bfb7d930e5
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nucho | 0:c6d1b3f0c307 | 1 | #include "mbed.h" |
nucho | 0:c6d1b3f0c307 | 2 | #include "TextLCD.h" |
nucho | 0:c6d1b3f0c307 | 3 | #include "EthernetNetIf.h" |
nucho | 0:c6d1b3f0c307 | 4 | #include "HttpClient.h" |
nucho | 0:c6d1b3f0c307 | 5 | |
nucho | 0:c6d1b3f0c307 | 6 | void free_member(struct member *p); |
nucho | 0:c6d1b3f0c307 | 7 | void print_member(struct member *p); |
nucho | 0:c6d1b3f0c307 | 8 | struct member *add_member(char *name, int id, struct member *head); |
nucho | 0:c6d1b3f0c307 | 9 | unsigned int readCard(); |
nucho | 0:c6d1b3f0c307 | 10 | struct member * search_id(struct member *p,unsigned int id); |
nucho | 0:c6d1b3f0c307 | 11 | struct member *create_member(void); |
nucho | 0:c6d1b3f0c307 | 12 | void LED_Bright(int led_num); |
nucho | 0:c6d1b3f0c307 | 13 | void LED_KnightRider(); |
nucho | 0:c6d1b3f0c307 | 14 | |
nucho | 0:c6d1b3f0c307 | 15 | using namespace std; |
nucho | 0:c6d1b3f0c307 | 16 | |
nucho | 0:c6d1b3f0c307 | 17 | EthernetNetIf eth; |
nucho | 0:c6d1b3f0c307 | 18 | HttpClient http; |
nucho | 0:c6d1b3f0c307 | 19 | |
nucho | 0:c6d1b3f0c307 | 20 | LocalFileSystem local("local"); |
nucho | 0:c6d1b3f0c307 | 21 | |
nucho | 0:c6d1b3f0c307 | 22 | Serial pc(USBTX, USBRX); // tx, rx |
nucho | 0:c6d1b3f0c307 | 23 | DigitalOut led1(LED1); |
nucho | 0:c6d1b3f0c307 | 24 | DigitalOut led2(LED2); |
nucho | 0:c6d1b3f0c307 | 25 | DigitalOut led3(LED3); |
nucho | 0:c6d1b3f0c307 | 26 | DigitalOut led4(LED4); |
nucho | 0:c6d1b3f0c307 | 27 | |
nucho | 0:c6d1b3f0c307 | 28 | Serial device(p13, p14); // tx, rx |
nucho | 0:c6d1b3f0c307 | 29 | InterruptIn button(p17); |
nucho | 0:c6d1b3f0c307 | 30 | DigitalIn irq(p19); |
nucho | 0:c6d1b3f0c307 | 31 | //DigitalOut rst(p20); |
nucho | 0:c6d1b3f0c307 | 32 | |
nucho | 0:c6d1b3f0c307 | 33 | TextLCD lcd(p15, p9, p16, p8, p11, p7, p10); // rs, rw, e, d0, d1, d2, d3 |
nucho | 0:c6d1b3f0c307 | 34 | |
nucho | 0:c6d1b3f0c307 | 35 | const char user[] = "your accout"; |
nucho | 0:c6d1b3f0c307 | 36 | const char pass[] = "yourt password"; |
nucho | 0:c6d1b3f0c307 | 37 | const char login_msg[] = " is login now."; |
nucho | 0:c6d1b3f0c307 | 38 | const char logout_msg[] = " is logout now."; |
nucho | 0:c6d1b3f0c307 | 39 | const char url[] = "http://twitter.com/statuses/update.xml"; |
nucho | 0:c6d1b3f0c307 | 40 | const char ntp_server[] = "http://ntp-a1.nict.go.jp/cgi-bin/ntp"; |
nucho | 0:c6d1b3f0c307 | 41 | bool card_flag=false; |
nucho | 0:c6d1b3f0c307 | 42 | |
nucho | 0:c6d1b3f0c307 | 43 | struct member { |
nucho | 0:c6d1b3f0c307 | 44 | char name[100]; |
nucho | 0:c6d1b3f0c307 | 45 | unsigned int id; |
nucho | 0:c6d1b3f0c307 | 46 | bool enter; |
nucho | 0:c6d1b3f0c307 | 47 | struct member *next; |
nucho | 0:c6d1b3f0c307 | 48 | }; |
nucho | 0:c6d1b3f0c307 | 49 | |
nucho | 0:c6d1b3f0c307 | 50 | void cardIRQ() { |
nucho | 0:c6d1b3f0c307 | 51 | card_flag=true; |
nucho | 0:c6d1b3f0c307 | 52 | } |
nucho | 0:c6d1b3f0c307 | 53 | |
nucho | 0:c6d1b3f0c307 | 54 | |
nucho | 0:c6d1b3f0c307 | 55 | int main() { |
nucho | 0:c6d1b3f0c307 | 56 | device.baud(19200); |
nucho | 0:c6d1b3f0c307 | 57 | pc.baud(9600); |
nucho | 0:c6d1b3f0c307 | 58 | printf("Init\n"); |
nucho | 0:c6d1b3f0c307 | 59 | lcd.printf("Init\n"); |
nucho | 0:c6d1b3f0c307 | 60 | char sendmsg[255]; |
nucho | 0:c6d1b3f0c307 | 61 | char buf[40]; |
nucho | 0:c6d1b3f0c307 | 62 | member *p=NULL; |
nucho | 0:c6d1b3f0c307 | 63 | member *head=NULL; |
nucho | 0:c6d1b3f0c307 | 64 | time_t seconds = time(NULL); |
nucho | 0:c6d1b3f0c307 | 65 | HttpClient twitter; |
nucho | 0:c6d1b3f0c307 | 66 | char *e; |
nucho | 0:c6d1b3f0c307 | 67 | char name[100]; |
nucho | 0:c6d1b3f0c307 | 68 | unsigned int id; |
nucho | 0:c6d1b3f0c307 | 69 | |
nucho | 0:c6d1b3f0c307 | 70 | HttpMap msg; |
nucho | 0:c6d1b3f0c307 | 71 | |
nucho | 0:c6d1b3f0c307 | 72 | //connect Ethernet |
nucho | 0:c6d1b3f0c307 | 73 | printf("\r\nSetting up...\r\n"); |
nucho | 0:c6d1b3f0c307 | 74 | EthernetErr ethErr = eth.setup(); |
nucho | 0:c6d1b3f0c307 | 75 | if (ethErr) { |
nucho | 0:c6d1b3f0c307 | 76 | printf("Error %d in setup.\n", ethErr); |
nucho | 0:c6d1b3f0c307 | 77 | return -1; |
nucho | 0:c6d1b3f0c307 | 78 | } |
nucho | 0:c6d1b3f0c307 | 79 | printf("\r\nSetup OK\r\n"); |
nucho | 0:c6d1b3f0c307 | 80 | |
nucho | 0:c6d1b3f0c307 | 81 | twitter.basicAuth(user, pass); //We use basic authentication, replace with you accoun |
nucho | 0:c6d1b3f0c307 | 82 | |
nucho | 0:c6d1b3f0c307 | 83 | //read member |
nucho | 0:c6d1b3f0c307 | 84 | pc.printf("Opening File...\n"); // Drive should be marked as removed |
nucho | 0:c6d1b3f0c307 | 85 | FILE *fp = fopen("/local/member.txt", "r"); |
nucho | 0:c6d1b3f0c307 | 86 | |
nucho | 0:c6d1b3f0c307 | 87 | while (fscanf( fp, "%[^,],%d\n",name, &id) != EOF ) { |
nucho | 0:c6d1b3f0c307 | 88 | head = add_member(name,id, head); |
nucho | 0:c6d1b3f0c307 | 89 | } |
nucho | 0:c6d1b3f0c307 | 90 | fclose(fp); |
nucho | 0:c6d1b3f0c307 | 91 | pc.printf("Opened.\n"); |
nucho | 0:c6d1b3f0c307 | 92 | |
nucho | 0:c6d1b3f0c307 | 93 | // Start RTC |
nucho | 0:c6d1b3f0c307 | 94 | lcd.printf("RTC setting...\n"); |
nucho | 0:c6d1b3f0c307 | 95 | HttpText txt; |
nucho | 0:c6d1b3f0c307 | 96 | |
nucho | 0:c6d1b3f0c307 | 97 | http.get(ntp_server, &txt); |
nucho | 0:c6d1b3f0c307 | 98 | int start_body=strstr(txt.gets(),"<BODY>")-txt.gets()+7; |
nucho | 0:c6d1b3f0c307 | 99 | int end_body = strstr(txt.gets(),"</BODY>")-txt.gets()-1; |
nucho | 0:c6d1b3f0c307 | 100 | strncpy(buf, txt.gets()+start_body, end_body-start_body); |
nucho | 0:c6d1b3f0c307 | 101 | |
nucho | 0:c6d1b3f0c307 | 102 | |
nucho | 0:c6d1b3f0c307 | 103 | //printf("<%s>\n",txt.gets()); |
nucho | 0:c6d1b3f0c307 | 104 | //printf("%lu\n",strtoul(buf,&e,10)); |
nucho | 0:c6d1b3f0c307 | 105 | seconds = strtoul(buf,&e,10)-2208988800UL+32400; |
nucho | 0:c6d1b3f0c307 | 106 | set_time(seconds); |
nucho | 0:c6d1b3f0c307 | 107 | |
nucho | 0:c6d1b3f0c307 | 108 | button.rise(&cardIRQ); |
nucho | 0:c6d1b3f0c307 | 109 | while (1) { |
nucho | 0:c6d1b3f0c307 | 110 | seconds = time(NULL); |
nucho | 0:c6d1b3f0c307 | 111 | strftime(buf,sizeof(buf),"%Y/%m/%d %a\n%H:%M:%S Ready!", localtime(&seconds)); |
nucho | 0:c6d1b3f0c307 | 112 | printf("%s\n", buf); |
nucho | 0:c6d1b3f0c307 | 113 | lcd.printf("%s", buf); |
nucho | 0:c6d1b3f0c307 | 114 | wait(0.3); |
nucho | 0:c6d1b3f0c307 | 115 | |
nucho | 0:c6d1b3f0c307 | 116 | if (card_flag) { |
nucho | 0:c6d1b3f0c307 | 117 | lcd.cls(); |
nucho | 0:c6d1b3f0c307 | 118 | strcpy(sendmsg,""); |
nucho | 0:c6d1b3f0c307 | 119 | |
nucho | 0:c6d1b3f0c307 | 120 | id= readCard(); |
nucho | 0:c6d1b3f0c307 | 121 | pc.printf("id=%u\n",id); |
nucho | 0:c6d1b3f0c307 | 122 | p = search_id(head,id);//checkID |
nucho | 0:c6d1b3f0c307 | 123 | |
nucho | 0:c6d1b3f0c307 | 124 | if (p!=NULL) {//list has same ID |
nucho | 0:c6d1b3f0c307 | 125 | pc.printf("%s\n",p->name); |
nucho | 0:c6d1b3f0c307 | 126 | |
nucho | 0:c6d1b3f0c307 | 127 | lcd.locate(0,0); |
nucho | 0:c6d1b3f0c307 | 128 | lcd.printf("%s",p->name); |
nucho | 0:c6d1b3f0c307 | 129 | lcd.locate(0,1); |
nucho | 0:c6d1b3f0c307 | 130 | lcd.printf("id=%u",p->id); |
nucho | 0:c6d1b3f0c307 | 131 | |
nucho | 0:c6d1b3f0c307 | 132 | strcat(sendmsg,p->name); |
nucho | 0:c6d1b3f0c307 | 133 | seconds = time(NULL); |
nucho | 0:c6d1b3f0c307 | 134 | strftime(buf,sizeof(buf), " (%Y/%m/%d %a %H:%M:%S)", localtime(&seconds)); |
nucho | 0:c6d1b3f0c307 | 135 | |
nucho | 0:c6d1b3f0c307 | 136 | if (p->enter) { |
nucho | 0:c6d1b3f0c307 | 137 | strcat(sendmsg,logout_msg); |
nucho | 0:c6d1b3f0c307 | 138 | strcat(sendmsg,buf); |
nucho | 0:c6d1b3f0c307 | 139 | pc.printf("%s\n",sendmsg); |
nucho | 0:c6d1b3f0c307 | 140 | msg["status"] = sendmsg; |
nucho | 0:c6d1b3f0c307 | 141 | twitter.post(url, msg, NULL); |
nucho | 0:c6d1b3f0c307 | 142 | |
nucho | 0:c6d1b3f0c307 | 143 | p->enter=false; |
nucho | 0:c6d1b3f0c307 | 144 | } else { |
nucho | 0:c6d1b3f0c307 | 145 | strcat(sendmsg,login_msg); |
nucho | 0:c6d1b3f0c307 | 146 | strcat(sendmsg,buf); |
nucho | 0:c6d1b3f0c307 | 147 | pc.printf("%s\n",sendmsg); |
nucho | 0:c6d1b3f0c307 | 148 | msg["status"] = sendmsg; |
nucho | 0:c6d1b3f0c307 | 149 | twitter.post(url, msg, NULL); |
nucho | 0:c6d1b3f0c307 | 150 | |
nucho | 0:c6d1b3f0c307 | 151 | p->enter=true; |
nucho | 0:c6d1b3f0c307 | 152 | } |
nucho | 0:c6d1b3f0c307 | 153 | LED_KnightRider(); |
nucho | 0:c6d1b3f0c307 | 154 | |
nucho | 0:c6d1b3f0c307 | 155 | card_flag=false; |
nucho | 0:c6d1b3f0c307 | 156 | lcd.cls(); |
nucho | 0:c6d1b3f0c307 | 157 | } else { |
nucho | 0:c6d1b3f0c307 | 158 | lcd.locate(0,0); |
nucho | 0:c6d1b3f0c307 | 159 | lcd.printf("You are'nt member"); |
nucho | 0:c6d1b3f0c307 | 160 | lcd.locate(0,1); |
nucho | 0:c6d1b3f0c307 | 161 | lcd.printf("id=%u",p->id); |
nucho | 0:c6d1b3f0c307 | 162 | wait(1); |
nucho | 0:c6d1b3f0c307 | 163 | } |
nucho | 0:c6d1b3f0c307 | 164 | |
nucho | 0:c6d1b3f0c307 | 165 | } |
nucho | 0:c6d1b3f0c307 | 166 | |
nucho | 0:c6d1b3f0c307 | 167 | } |
nucho | 0:c6d1b3f0c307 | 168 | } |
nucho | 0:c6d1b3f0c307 | 169 | |
nucho | 0:c6d1b3f0c307 | 170 | void LED_KnightRider() { |
nucho | 0:c6d1b3f0c307 | 171 | LED_Bright(1); |
nucho | 0:c6d1b3f0c307 | 172 | wait(0.05); |
nucho | 0:c6d1b3f0c307 | 173 | LED_Bright(2); |
nucho | 0:c6d1b3f0c307 | 174 | wait(0.05); |
nucho | 0:c6d1b3f0c307 | 175 | LED_Bright(3); |
nucho | 0:c6d1b3f0c307 | 176 | wait(0.05); |
nucho | 0:c6d1b3f0c307 | 177 | LED_Bright(4); |
nucho | 0:c6d1b3f0c307 | 178 | wait(0.05); |
nucho | 0:c6d1b3f0c307 | 179 | LED_Bright(3); |
nucho | 0:c6d1b3f0c307 | 180 | wait(0.05); |
nucho | 0:c6d1b3f0c307 | 181 | LED_Bright(2); |
nucho | 0:c6d1b3f0c307 | 182 | wait(0.05); |
nucho | 0:c6d1b3f0c307 | 183 | LED_Bright(1); |
nucho | 0:c6d1b3f0c307 | 184 | wait(0.05); |
nucho | 0:c6d1b3f0c307 | 185 | LED_Bright(0); |
nucho | 0:c6d1b3f0c307 | 186 | wait(0.05); |
nucho | 0:c6d1b3f0c307 | 187 | LED_Bright(1); |
nucho | 0:c6d1b3f0c307 | 188 | wait(0.05); |
nucho | 0:c6d1b3f0c307 | 189 | LED_Bright(2); |
nucho | 0:c6d1b3f0c307 | 190 | wait(0.05); |
nucho | 0:c6d1b3f0c307 | 191 | LED_Bright(3); |
nucho | 0:c6d1b3f0c307 | 192 | wait(0.05); |
nucho | 0:c6d1b3f0c307 | 193 | LED_Bright(4); |
nucho | 0:c6d1b3f0c307 | 194 | wait(0.05); |
nucho | 0:c6d1b3f0c307 | 195 | LED_Bright(3); |
nucho | 0:c6d1b3f0c307 | 196 | wait(0.05); |
nucho | 0:c6d1b3f0c307 | 197 | LED_Bright(2); |
nucho | 0:c6d1b3f0c307 | 198 | wait(0.05); |
nucho | 0:c6d1b3f0c307 | 199 | LED_Bright(1); |
nucho | 0:c6d1b3f0c307 | 200 | wait(0.05); |
nucho | 0:c6d1b3f0c307 | 201 | LED_Bright(0); |
nucho | 0:c6d1b3f0c307 | 202 | } |
nucho | 0:c6d1b3f0c307 | 203 | |
nucho | 0:c6d1b3f0c307 | 204 | void LED_Bright(int led_num) { |
nucho | 0:c6d1b3f0c307 | 205 | switch (led_num) { |
nucho | 0:c6d1b3f0c307 | 206 | case 1: |
nucho | 0:c6d1b3f0c307 | 207 | led1=1; |
nucho | 0:c6d1b3f0c307 | 208 | led2=0; |
nucho | 0:c6d1b3f0c307 | 209 | led3=0; |
nucho | 0:c6d1b3f0c307 | 210 | led4=0; |
nucho | 0:c6d1b3f0c307 | 211 | break; |
nucho | 0:c6d1b3f0c307 | 212 | case 2: |
nucho | 0:c6d1b3f0c307 | 213 | led1=0; |
nucho | 0:c6d1b3f0c307 | 214 | led2=1; |
nucho | 0:c6d1b3f0c307 | 215 | led3=0; |
nucho | 0:c6d1b3f0c307 | 216 | led4=0; |
nucho | 0:c6d1b3f0c307 | 217 | break; |
nucho | 0:c6d1b3f0c307 | 218 | case 3: |
nucho | 0:c6d1b3f0c307 | 219 | led1=0; |
nucho | 0:c6d1b3f0c307 | 220 | led2=0; |
nucho | 0:c6d1b3f0c307 | 221 | led3=1; |
nucho | 0:c6d1b3f0c307 | 222 | led4=0; |
nucho | 0:c6d1b3f0c307 | 223 | break; |
nucho | 0:c6d1b3f0c307 | 224 | case 4: |
nucho | 0:c6d1b3f0c307 | 225 | led1=0; |
nucho | 0:c6d1b3f0c307 | 226 | led2=0; |
nucho | 0:c6d1b3f0c307 | 227 | led3=0; |
nucho | 0:c6d1b3f0c307 | 228 | led4=1; |
nucho | 0:c6d1b3f0c307 | 229 | break; |
nucho | 0:c6d1b3f0c307 | 230 | default: |
nucho | 0:c6d1b3f0c307 | 231 | led1=0; |
nucho | 0:c6d1b3f0c307 | 232 | led2=0; |
nucho | 0:c6d1b3f0c307 | 233 | led3=0; |
nucho | 0:c6d1b3f0c307 | 234 | led4=0; |
nucho | 0:c6d1b3f0c307 | 235 | break; |
nucho | 0:c6d1b3f0c307 | 236 | } |
nucho | 0:c6d1b3f0c307 | 237 | } |
nucho | 0:c6d1b3f0c307 | 238 | |
nucho | 0:c6d1b3f0c307 | 239 | |
nucho | 0:c6d1b3f0c307 | 240 | unsigned int readCard() { |
nucho | 0:c6d1b3f0c307 | 241 | unsigned int id=0; |
nucho | 0:c6d1b3f0c307 | 242 | int len,i; |
nucho | 0:c6d1b3f0c307 | 243 | |
nucho | 0:c6d1b3f0c307 | 244 | device.getc();//header |
nucho | 0:c6d1b3f0c307 | 245 | device.getc();//header |
nucho | 0:c6d1b3f0c307 | 246 | len = device.getc(); |
nucho | 0:c6d1b3f0c307 | 247 | |
nucho | 0:c6d1b3f0c307 | 248 | char data[len]; |
nucho | 0:c6d1b3f0c307 | 249 | for (i=0;i<len;i++) { |
nucho | 0:c6d1b3f0c307 | 250 | data[i]=device.getc(); |
nucho | 0:c6d1b3f0c307 | 251 | } |
nucho | 0:c6d1b3f0c307 | 252 | if (data[0]==0x50) {//success |
nucho | 0:c6d1b3f0c307 | 253 | for (i=0;i<4;i++) { |
nucho | 0:c6d1b3f0c307 | 254 | id |= (data[4-i] << (i * 8)); |
nucho | 0:c6d1b3f0c307 | 255 | } |
nucho | 0:c6d1b3f0c307 | 256 | } else {//failre |
nucho | 0:c6d1b3f0c307 | 257 | } |
nucho | 0:c6d1b3f0c307 | 258 | |
nucho | 0:c6d1b3f0c307 | 259 | return id; |
nucho | 0:c6d1b3f0c307 | 260 | } |
nucho | 0:c6d1b3f0c307 | 261 | |
nucho | 0:c6d1b3f0c307 | 262 | void print_member(struct member *p) { |
nucho | 0:c6d1b3f0c307 | 263 | while (p != NULL) { |
nucho | 0:c6d1b3f0c307 | 264 | pc.printf("%s %u\n", p->name,p->id); |
nucho | 0:c6d1b3f0c307 | 265 | p = p->next; |
nucho | 0:c6d1b3f0c307 | 266 | } |
nucho | 0:c6d1b3f0c307 | 267 | } |
nucho | 0:c6d1b3f0c307 | 268 | |
nucho | 0:c6d1b3f0c307 | 269 | void free_member(struct member *p) { |
nucho | 0:c6d1b3f0c307 | 270 | struct member *p2; |
nucho | 0:c6d1b3f0c307 | 271 | |
nucho | 0:c6d1b3f0c307 | 272 | while (p != NULL) { |
nucho | 0:c6d1b3f0c307 | 273 | p2 = p->next; |
nucho | 0:c6d1b3f0c307 | 274 | free(p); |
nucho | 0:c6d1b3f0c307 | 275 | p = p2; |
nucho | 0:c6d1b3f0c307 | 276 | } |
nucho | 0:c6d1b3f0c307 | 277 | } |
nucho | 0:c6d1b3f0c307 | 278 | |
nucho | 0:c6d1b3f0c307 | 279 | |
nucho | 0:c6d1b3f0c307 | 280 | struct member *add_member(char *name, int id, struct member *head) { |
nucho | 0:c6d1b3f0c307 | 281 | struct member *p; |
nucho | 0:c6d1b3f0c307 | 282 | |
nucho | 0:c6d1b3f0c307 | 283 | p=create_member(); |
nucho | 0:c6d1b3f0c307 | 284 | p->id = id; |
nucho | 0:c6d1b3f0c307 | 285 | strcpy(p->name, name); |
nucho | 0:c6d1b3f0c307 | 286 | |
nucho | 0:c6d1b3f0c307 | 287 | p->next = head; |
nucho | 0:c6d1b3f0c307 | 288 | head = p; |
nucho | 0:c6d1b3f0c307 | 289 | |
nucho | 0:c6d1b3f0c307 | 290 | return head; |
nucho | 0:c6d1b3f0c307 | 291 | } |
nucho | 0:c6d1b3f0c307 | 292 | |
nucho | 0:c6d1b3f0c307 | 293 | struct member *create_member(void) { |
nucho | 0:c6d1b3f0c307 | 294 | struct member *p; |
nucho | 0:c6d1b3f0c307 | 295 | |
nucho | 0:c6d1b3f0c307 | 296 | if ((p = (struct member *) malloc(sizeof(struct member))) == NULL) { |
nucho | 0:c6d1b3f0c307 | 297 | printf("malloc error\n"); |
nucho | 0:c6d1b3f0c307 | 298 | exit(EXIT_FAILURE); |
nucho | 0:c6d1b3f0c307 | 299 | } |
nucho | 0:c6d1b3f0c307 | 300 | p->enter = false; |
nucho | 0:c6d1b3f0c307 | 301 | |
nucho | 0:c6d1b3f0c307 | 302 | return p; |
nucho | 0:c6d1b3f0c307 | 303 | } |
nucho | 0:c6d1b3f0c307 | 304 | |
nucho | 0:c6d1b3f0c307 | 305 | struct member * search_id(struct member *p,unsigned int id) { |
nucho | 0:c6d1b3f0c307 | 306 | struct member *findp=NULL; |
nucho | 0:c6d1b3f0c307 | 307 | while (p != NULL) { |
nucho | 0:c6d1b3f0c307 | 308 | if (p->id==id) { |
nucho | 0:c6d1b3f0c307 | 309 | findp = p; |
nucho | 0:c6d1b3f0c307 | 310 | break; |
nucho | 0:c6d1b3f0c307 | 311 | } |
nucho | 0:c6d1b3f0c307 | 312 | p = p->next; |
nucho | 0:c6d1b3f0c307 | 313 | } |
nucho | 0:c6d1b3f0c307 | 314 | return findp; |
nucho | 0:c6d1b3f0c307 | 315 | } |