// Main routine void main(void) { OSCCON = 0x7C; // Internal Oscillator 16MHz Enabled OSCTUNE = 0x5F; OSCCON2bits.PLLRDY = 1; VREFCON1 = 0xE0; T2CON = 0x7B; INTCONbits.GIE = 1; // Global, peripheral & timer 2 interrupt enable INTCONbits.PEIE = 1; PIE1bits.TMR2IE = 1; PR2 = 0xff; // period registor 2 with max value VREFCON2 = 0; // zero brightness LED_DIR = 0; // LED pin on output LED = 1; lcdinit(); // Initialize LCD in 4bit mode, ultrasonic and brightness lcdcmd(0x01); initUltrasonic(); initBrightness(); LED = 0; while(1) { readPIR(); if(resPIR) { pirIndicate(); readUltrasonic(); f1 = 0; f2 = 1; while(resUS < 100 && resUS > 10) { T2CONbits.TMR2ON = 1; setBrightness(); if(f2) { lcdcmd(0x80); sprintf(line1," Welcome ! "); lcdstring(line1); sprintf(line2," Chaitanya. "); lcdcmd(0xc0); lcdstring(line2); msDelay(1000); f2 = 0; } if(sec >= 60) { mn++; sec = 0; } if(mn >= 60) { hr++; mn = 0; } sprintf(line1," Study Time "); sprintf(line2," %i:%i:%i ",hr,mn,sec); lcdcmd(0x80); lcdstring(line1); lcdcmd(0xc0); lcdstring(line2); eventL(); eventL(); readUltrasonic(); f1 = 1; } T2CONbits.TMR2ON = 0; if(f1) { sprintf(line1," Thank You ! "); sprintf(line2," Good Bye...! "); lcdcmd(0x80); lcdstring(line1); lcdcmd(0xc0); lcdstring(line2); msDelay(3000); VREFCON2 = 0; } lcdcmd(0x01); } } }
/* Function: ReadSeq() * * Purpose: Read next sequence from an open database file. * Return the sequence and associated info. * * Args: fp - open sequence database file pointer * format - format of the file (previously determined * by call to SeqfileFormat()) * ret_seq - RETURN: sequence * sqinfo - RETURN: filled in w/ other information * * Return: 1 on success, 0 on failure. * ret_seq and some field of sqinfo are allocated here, * The preferred call mechanism to properly free the memory is: * * SQINFO sqinfo; * char *seq; * * ReadSeq(fp, format, &seq, &sqinfo); * ... do something... * FreeSequence(seq, &sqinfo); */ int ReadSeq(SQFILE *V, int format, char **ret_seq, SQINFO *sqinfo) { int gotuw; int apos, rpos; squid_errno = SQERR_OK; if (format < kMinFormat || format > kMaxFormat) { squid_errno = SQERR_FORMAT; *ret_seq = NULL; return 0; } /* Here's the hack for sequential access of sequences from * the multiple sequence alignment formats */ if (format == kMSF || format == kSelex || format == kClustal) { if (V->ali_curridx >= V->ali_ainfo.nseq) return 0; /* out of aseqs */ SeqinfoCopy(sqinfo, &(V->ali_ainfo.sqinfo[V->ali_curridx])); /* copy and dealign the appropriate aligned seq */ V->seq = MallocOrDie (sizeof(char) * (V->ali_ainfo.alen+1)); for (rpos = apos = 0; apos < V->ali_ainfo.alen; apos++) if (!isgap(V->ali_aseqs[V->ali_curridx][apos])) V->seq[rpos++] = V->ali_aseqs[V->ali_curridx][apos]; V->seq[rpos] = '\0'; V->seqlen = rpos; V->ali_curridx++; } else { if (feof(V->f)) return 0; V->seq = (char*) calloc (kStartLength+1, sizeof(char)); V->maxseq = kStartLength; V->seqlen = 0; V->sqinfo = sqinfo; V->sqinfo->flags = 0; V->dash_equals_n = (format == kEMBL) ? TRUE : FALSE; switch (format) { case kIG : readIG(V); break; case kStrider : readStrider(V); break; case kGenBank : readGenBank(V); break; case kPearson : readPearson(V); break; case kEMBL : readEMBL(V); break; case kZuker : readZuker(V); break; case kPIR : readPIR(V); break; case kSquid : readSquid(V); break; case kGCGdata : readGCGdata(V); break; case kGCG: do { /* skip leading comments on GCG file */ gotuw = (strstr(V->sbuffer,"..") != NULL); if (gotuw) readUWGCG(V); getline2(V); } while (! feof(V->f)); break; case kIdraw: /* SRE: no attempt to read idraw postscript */ default: squid_errno = SQERR_FORMAT; free(V->seq); return 0; } V->seq[V->seqlen] = 0; /* stick a string terminator on it */ } /* Cleanup */ sqinfo->len = V->seqlen; sqinfo->flags |= SQINFO_LEN; *ret_seq = V->seq; if (squid_errno == SQERR_OK) return 1; else return 0; }