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