Ashwath M Pavithran / Mbed OS csi066_rev0p3_harald_prog

Dependencies:   csi059

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 
00003 Serial pc(USBTX, USBRX);
00004 const int frequ = 50; //unit kHz
00005 const char dev_addr = 0x00; //fixed
00006 const char version[4] = "0.3";
00007 
00008 void testmode(void);
00009 void i2c_read(void);
00010 void i2c_write(void);
00011 void EasyFuse_prog(void);
00012 void hot_read(void);
00013 void adc_test(void);
00014   
00015 void clear_screen() {
00016     int i=0;
00017     pc.printf("\033[%dm", 36);//change text color to cyan
00018     pc.printf("\033[2J");//clears screen
00019     pc.printf("\033[%d;%dH%c", 1, 1);//locate cursor to the 0,0
00020     pc.printf("\n\r");    
00021     //Print CSI059
00022     pc.printf("\n\r     \332\304"); 
00023     for ( i = 0; i<46; i++) pc.printf("\304");
00024     pc.printf("\304\302");            
00025     pc.printf("\n\r     \263\t\t\t\t\t\t      \263");
00026     pc.printf("\n\r     \263   \334\334\334\t \334\334\334\t\334\334\334\t \334\334 \t \334\334 \t \334\334   \263");
00027     pc.printf("\n\r     \263  \333    \t\333   \t \333 \t\333  \333\t\333   \t\333     \263");
00028     pc.printf("\n\r     \263  \333    \t\337\337\334\334\t \333 \t\333  \333\t\333\337\337\334\t\333\337\337\334  \263");
00029     pc.printf("\n\r     \263  \333    \t   \333\t \333 \t\333  \333\t\333  \333\t\333  \333  \263");
00030     pc.printf("\n\r     \263   \337\337\337\t\337\337\337 \t\337\337\337\t \337\337 \t \337\337 \t \337\337   \263");
00031     pc.printf("\n\r     \263\t\t\t\t\t\t      \263\n\r     \300\304");
00032     for ( i = 0; i<46; i++) pc.printf("\304");
00033     pc.printf("\304\331");
00034     pc.printf("\n\n\n\r\tPROTYPE EVALUATION S/W");
00035     pc.printf("\n\n\r\tVersion : %s",version);
00036     pc.printf("\n\n\r   \315");   
00037     for ( i = 0; i<80; i++) pc.printf("\315"); 
00038     pc.printf("\n\n\n\r");
00039     pc.printf("\033[%dm", 32);//change text color to green    
00040 }      
00041 
00042 void print_menu() {
00043     int i=0;
00044     pc.printf("\n\n\r\tWhat do you want to do next ?");
00045     pc.printf("\033[%dm ", 31);//change text color to red
00046     pc.printf("\n\n\n\r\t\332\304"); 
00047     for ( i = 0; i<45; i++) pc.printf("\304");
00048     pc.printf("\304\302");
00049     pc.printf("\n\r\t\263\t\t\t\t\t\t\263");
00050     pc.printf("\n\r\t\263  Press 't' : to generate Test-Mode Sequence\t\263");
00051     pc.printf("\n\r\t\263\t\t\t\t\t\t\263");
00052     pc.printf("\n\r\t\263  Press 'r' : to perform Register Read      \t\263");
00053     pc.printf("\n\r\t\263\t\t\t\t\t\t\263");
00054     pc.printf("\n\r\t\263  Press 'w' : to perform Register Write     \t\263");
00055     pc.printf("\n\r\t\263\t\t\t\t\t\t\263");
00056     pc.printf("\n\r\t\263  Press 'p' : to program Easy Fuse          \t\263");
00057     pc.printf("\n\r\t\263\t\t\t\t\t\t\263");
00058     pc.printf("\n\r\t\263  Press 'h' : to Perform Hot Register Read  \t\263");
00059     pc.printf("\n\r\t\263\t\t\t\t\t\t\263"); 
00060     pc.printf("\n\r\t\263  Press 'a' : to Perform ADC tests          \t\263");
00061     pc.printf("\n\r\t\263\t\t\t\t\t\t\263");    
00062     pc.printf("\n\r\t\263  Press 'c' : to clear screen               \t\263");
00063     pc.printf("\n\r\t\263\t\t\t\t\t\t\263"); 
00064     pc.printf("\n\r\t\300\304");
00065     for ( i = 0; i<45; i++) pc.printf("\304");
00066     pc.printf("\304\331");
00067     pc.printf("\033[%dm", 32);//change text color to green                
00068     pc.printf("\n\n\n\r\tYour Selection : ");
00069 }         
00070 
00071 void draw_line() {
00072     pc.printf("\033[%dm ", 33);//change text color to yellow
00073     pc.printf("\n\n\n\n\r   \315");   
00074     for ( int i = 0; i<80; i++) pc.printf("\315");
00075     pc.printf("\033[%dm ", 32);//change text color to green
00076     pc.printf("\n\n\r");
00077 }    
00078 
00079 void draw_bar() {
00080     pc.printf("\033[%dm ", 33);//change text color to yellow
00081     pc.printf("\n\n\n\n\r   \334");   
00082     for ( int i = 0; i<80; i++) pc.printf("\334");
00083     pc.printf("\033[%dm ", 32);//change text color to green
00084     pc.printf("\n\n\r");
00085 }               
00086 
00087 void clear_screen_ques() {
00088     int temp;
00089     pc.printf("\n\n\r\tClear Screen (y/n) : ");  
00090     temp = 0;
00091     while ( temp!='y' && temp!='n') {
00092         temp = pc.getc();
00093     }
00094     if (temp == 'y') clear_screen();
00095     else draw_bar();
00096 }
00097                             
00098 char get_selection() {
00099     char current_char;
00100     int flag = 0;
00101     while (flag == 0) {
00102         current_char = pc.getc();
00103         if ( current_char == 't' || current_char == 'r' || current_char == 'w' || current_char == 'p' || current_char == 'c' || current_char == 'h' || current_char == 'a' ) flag = 1;
00104         else {
00105             pc.printf(" \033[%dm Invalid Chracter!! No worries, let us try again \033[%dm",41,40); 
00106             pc.printf("\n\n\r\tYour Selection : "); 
00107         }
00108     }
00109     return current_char;
00110 }   
00111     
00112 void print_note() {
00113     pc.printf("\033[%dm", 34);//change text color to blue
00114     pc.printf("\n\n\r\tNote : ");
00115     pc.printf("\n\r\t\304\304\304\304\304\304");
00116     pc.printf("\n\n\r\t1. In Tera Term, enable 'Local echo' in Setup -> Terminal");
00117     pc.printf("\n\n\r\t2. When not specified, please do not press 'enter' key after typing any entry ");
00118     pc.printf("\033[%dm", 32);//change text color to green
00119     draw_line();
00120 }  
00121 
00122 int main() {
00123     char current_char=0;  
00124     clear_screen();
00125     print_note();
00126     while(1) {
00127         print_menu();
00128         current_char = get_selection();
00129         draw_line();
00130         
00131         switch (current_char) {
00132             
00133             case 't':
00134                 testmode();
00135                 clear_screen_ques();
00136                 break;
00137                 
00138             case 'r':
00139                 i2c_read();
00140                 clear_screen_ques();
00141                 break;
00142                                 
00143             case 'w':
00144                 i2c_write();
00145                 clear_screen_ques();
00146                 break; 
00147                 
00148             case 'p':
00149                 EasyFuse_prog();
00150                 clear_screen_ques();
00151                 break;
00152                 
00153             case 'h':
00154                 hot_read();
00155                 clear_screen_ques();
00156                 break;
00157                                 
00158             case 'a':
00159                 adc_test();
00160                 clear_screen_ques();
00161                 break; 
00162                                                                           
00163             case 'c':
00164                 clear_screen();
00165                 break;           
00166         }      
00167     }//end of while     
00168 }