First version of my operation system for stm32 board
Dependencies: RA8875 VS1053 sd-driver-hs
main.cpp@0:86f82f777a7a, 2018-03-01 (annotated)
- Committer:
- Hagrid
- Date:
- Thu Mar 01 06:58:17 2018 +0000
- Revision:
- 0:86f82f777a7a
- Child:
- 2:a3d00f0610f9
First version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Hagrid | 0:86f82f777a7a | 1 | #include "include.h" |
Hagrid | 0:86f82f777a7a | 2 | |
Hagrid | 0:86f82f777a7a | 3 | //Serial device |
Hagrid | 0:86f82f777a7a | 4 | Serial keyboard(Tx_KB,Rx_KB);// Tx, Rx |
Hagrid | 0:86f82f777a7a | 5 | |
Hagrid | 0:86f82f777a7a | 6 | //SPI device |
Hagrid | 0:86f82f777a7a | 7 | VS1053 mp3(MOSI_AUDIO, MISO_AUDIO, CLK_AUDIO, CS_AUDIO, RST_AUDIO,DREQ_AUDIO,DSC_AUDIO,PA_4); |
Hagrid | 0:86f82f777a7a | 8 | RA8875 lcd(MOSI_LCD, MISO_LCD, CLK_LCD, CS_LCD, NC, "tft"); |
Hagrid | 0:86f82f777a7a | 9 | SDBlockDevice sd(MOSI_SD, MISO_SD, CLK_SD, CS_SD); |
Hagrid | 0:86f82f777a7a | 10 | |
Hagrid | 0:86f82f777a7a | 11 | //File system |
Hagrid | 0:86f82f777a7a | 12 | FATFileSystem fs("fs"); |
Hagrid | 0:86f82f777a7a | 13 | |
Hagrid | 0:86f82f777a7a | 14 | //Tread |
Hagrid | 0:86f82f777a7a | 15 | Thread kb_thread; |
Hagrid | 0:86f82f777a7a | 16 | |
Hagrid | 0:86f82f777a7a | 17 | void keyboard_task() |
Hagrid | 0:86f82f777a7a | 18 | { |
Hagrid | 0:86f82f777a7a | 19 | while(true) { |
Hagrid | 0:86f82f777a7a | 20 | input[position] = keyboard.getc(); |
Hagrid | 0:86f82f777a7a | 21 | } |
Hagrid | 0:86f82f777a7a | 22 | } |
Hagrid | 0:86f82f777a7a | 23 | |
Hagrid | 0:86f82f777a7a | 24 | int main() |
Hagrid | 0:86f82f777a7a | 25 | { |
Hagrid | 0:86f82f777a7a | 26 | wait(0.3); |
Hagrid | 0:86f82f777a7a | 27 | //init device |
Hagrid | 0:86f82f777a7a | 28 | lcd.init(480,272); |
Hagrid | 0:86f82f777a7a | 29 | mp3.initialize(); |
Hagrid | 0:86f82f777a7a | 30 | keyboard.baud(57600); |
Hagrid | 0:86f82f777a7a | 31 | lcd.foreground(Orange); |
Hagrid | 0:86f82f777a7a | 32 | kb_thread.start(keyboard_task); |
Hagrid | 0:86f82f777a7a | 33 | sd.init(); |
Hagrid | 0:86f82f777a7a | 34 | fs.mount(&sd); |
Hagrid | 0:86f82f777a7a | 35 | lcd.printf("HagridOS v.5.0\n\r>"); |
Hagrid | 0:86f82f777a7a | 36 | |
Hagrid | 0:86f82f777a7a | 37 | fs.mount(&sd); |
Hagrid | 0:86f82f777a7a | 38 | ///start main code |
Hagrid | 0:86f82f777a7a | 39 | while (true) { |
Hagrid | 0:86f82f777a7a | 40 | |
Hagrid | 0:86f82f777a7a | 41 | if(!keyboard.readable()) { //scan key |
Hagrid | 0:86f82f777a7a | 42 | if (input[position] == '\n') { //press enter |
Hagrid | 0:86f82f777a7a | 43 | input[position] = '\0'; //insert in end position NULL character |
Hagrid | 0:86f82f777a7a | 44 | kbsplit(input);//split keyboard input |
Hagrid | 0:86f82f777a7a | 45 | |
Hagrid | 0:86f82f777a7a | 46 | if(tmpE[0] == NULL) { //press only enter if |
Hagrid | 0:86f82f777a7a | 47 | lcd.printf("\n\r"); |
Hagrid | 0:86f82f777a7a | 48 | lcd.printf(">"); |
Hagrid | 0:86f82f777a7a | 49 | } else { |
Hagrid | 0:86f82f777a7a | 50 | switch(compare(&tmpE[0])) { //switch run basic commands |
Hagrid | 0:86f82f777a7a | 51 | case 0: |
Hagrid | 0:86f82f777a7a | 52 | fs.mkdir(tmpE[1],777); |
Hagrid | 0:86f82f777a7a | 53 | lcd.printf("\n\r"); |
Hagrid | 0:86f82f777a7a | 54 | lcd.printf(">"); |
Hagrid | 0:86f82f777a7a | 55 | erase(); |
Hagrid | 0:86f82f777a7a | 56 | break; |
Hagrid | 0:86f82f777a7a | 57 | case 1: |
Hagrid | 0:86f82f777a7a | 58 | fs.remove(tmpE[1]); |
Hagrid | 0:86f82f777a7a | 59 | lcd.printf("\n\r"); |
Hagrid | 0:86f82f777a7a | 60 | lcd.printf(">"); |
Hagrid | 0:86f82f777a7a | 61 | erase(); |
Hagrid | 0:86f82f777a7a | 62 | break; |
Hagrid | 0:86f82f777a7a | 63 | case 2: |
Hagrid | 0:86f82f777a7a | 64 | fs.mount(&sd); |
Hagrid | 0:86f82f777a7a | 65 | DIR *d; |
Hagrid | 0:86f82f777a7a | 66 | struct dirent *p; |
Hagrid | 0:86f82f777a7a | 67 | d = opendir("/fs/"); |
Hagrid | 0:86f82f777a7a | 68 | if (d != NULL) { |
Hagrid | 0:86f82f777a7a | 69 | while ((p = readdir(d)) != NULL) { |
Hagrid | 0:86f82f777a7a | 70 | lcd.printf("\n\r"); |
Hagrid | 0:86f82f777a7a | 71 | lcd.printf(p->d_name); |
Hagrid | 0:86f82f777a7a | 72 | } |
Hagrid | 0:86f82f777a7a | 73 | } |
Hagrid | 0:86f82f777a7a | 74 | closedir(d); |
Hagrid | 0:86f82f777a7a | 75 | fs.unmount(); |
Hagrid | 0:86f82f777a7a | 76 | lcd.printf("\n\r"); |
Hagrid | 0:86f82f777a7a | 77 | lcd.printf(">"); |
Hagrid | 0:86f82f777a7a | 78 | erase(); |
Hagrid | 0:86f82f777a7a | 79 | break; |
Hagrid | 0:86f82f777a7a | 80 | case 3: |
Hagrid | 0:86f82f777a7a | 81 | lcd.cls(); |
Hagrid | 0:86f82f777a7a | 82 | lcd.printf("HagridOS v.5.0\n\r>"); |
Hagrid | 0:86f82f777a7a | 83 | erase(); |
Hagrid | 0:86f82f777a7a | 84 | break; |
Hagrid | 0:86f82f777a7a | 85 | case 4: |
Hagrid | 0:86f82f777a7a | 86 | lcd.printf("\n\rBasic Operation System for STM32 by HAGRID\n\r"); |
Hagrid | 0:86f82f777a7a | 87 | lcd.printf("Version: 5.0 release: 24.02.2018\n\r"); |
Hagrid | 0:86f82f777a7a | 88 | lcd.printf("SD size: %lluMb\n\r",(sd.size()/1024)/1024); |
Hagrid | 0:86f82f777a7a | 89 | lcd.printf("CPU speed: %d MHz", SystemCoreClock/1000000); |
Hagrid | 0:86f82f777a7a | 90 | lcd.printf("\n\r"); |
Hagrid | 0:86f82f777a7a | 91 | lcd.printf(">"); |
Hagrid | 0:86f82f777a7a | 92 | erase(); |
Hagrid | 0:86f82f777a7a | 93 | break; |
Hagrid | 0:86f82f777a7a | 94 | case 5: |
Hagrid | 0:86f82f777a7a | 95 | lcd.printf("\n\r"); |
Hagrid | 0:86f82f777a7a | 96 | lcd.printf(">"); |
Hagrid | 0:86f82f777a7a | 97 | erase(); |
Hagrid | 0:86f82f777a7a | 98 | break; |
Hagrid | 0:86f82f777a7a | 99 | case 6: |
Hagrid | 0:86f82f777a7a | 100 | wait(atoi(tmpE[1])); |
Hagrid | 0:86f82f777a7a | 101 | lcd.printf("\n\r"); |
Hagrid | 0:86f82f777a7a | 102 | lcd.printf(">"); |
Hagrid | 0:86f82f777a7a | 103 | erase(); |
Hagrid | 0:86f82f777a7a | 104 | break; |
Hagrid | 0:86f82f777a7a | 105 | case 7: |
Hagrid | 0:86f82f777a7a | 106 | lcd.printf("\n\r"); |
Hagrid | 0:86f82f777a7a | 107 | lcd.printf(">"); |
Hagrid | 0:86f82f777a7a | 108 | erase(); |
Hagrid | 0:86f82f777a7a | 109 | break; |
Hagrid | 0:86f82f777a7a | 110 | case 8: |
Hagrid | 0:86f82f777a7a | 111 | lcd.Backlight(atof(tmpE[1])); |
Hagrid | 0:86f82f777a7a | 112 | lcd.printf("\n\r"); |
Hagrid | 0:86f82f777a7a | 113 | lcd.printf(">"); |
Hagrid | 0:86f82f777a7a | 114 | erase(); |
Hagrid | 0:86f82f777a7a | 115 | break; |
Hagrid | 0:86f82f777a7a | 116 | case 9: |
Hagrid | 0:86f82f777a7a | 117 | FILE* song = fopen(tmpE[1], "r"); |
Hagrid | 0:86f82f777a7a | 118 | |
Hagrid | 0:86f82f777a7a | 119 | while(!feof(song)) { |
Hagrid | 0:86f82f777a7a | 120 | int n=fread(&array, 1, sizeof(array), song); |
Hagrid | 0:86f82f777a7a | 121 | mp3.writeStream(array,n); |
Hagrid | 0:86f82f777a7a | 122 | } |
Hagrid | 0:86f82f777a7a | 123 | mp3.terminateStream(); |
Hagrid | 0:86f82f777a7a | 124 | |
Hagrid | 0:86f82f777a7a | 125 | fclose(song); //close the file |
Hagrid | 0:86f82f777a7a | 126 | lcd.printf("\n\r"); |
Hagrid | 0:86f82f777a7a | 127 | lcd.printf(">"); |
Hagrid | 0:86f82f777a7a | 128 | erase(); |
Hagrid | 0:86f82f777a7a | 129 | break; |
Hagrid | 0:86f82f777a7a | 130 | case 10: |
Hagrid | 0:86f82f777a7a | 131 | sprintf(c_dir,"%s%s",home,tmpE[1]); |
Hagrid | 0:86f82f777a7a | 132 | lcd.printf("\n\r"); |
Hagrid | 0:86f82f777a7a | 133 | lcd.printf(">"); |
Hagrid | 0:86f82f777a7a | 134 | erase(); |
Hagrid | 0:86f82f777a7a | 135 | break; |
Hagrid | 0:86f82f777a7a | 136 | default: |
Hagrid | 0:86f82f777a7a | 137 | lcd.printf("\n\r"); |
Hagrid | 0:86f82f777a7a | 138 | lcd.printf("hsh: %s command not found",tmpE[0]); |
Hagrid | 0:86f82f777a7a | 139 | lcd.printf("\n\r"); |
Hagrid | 0:86f82f777a7a | 140 | lcd.printf(">"); |
Hagrid | 0:86f82f777a7a | 141 | erase(); |
Hagrid | 0:86f82f777a7a | 142 | break; |
Hagrid | 0:86f82f777a7a | 143 | }//end switch |
Hagrid | 0:86f82f777a7a | 144 | }//end press enter only |
Hagrid | 0:86f82f777a7a | 145 | } else { |
Hagrid | 0:86f82f777a7a | 146 | lcd.printf(&(input[position])); |
Hagrid | 0:86f82f777a7a | 147 | position++; |
Hagrid | 0:86f82f777a7a | 148 | }//end press enter |
Hagrid | 0:86f82f777a7a | 149 | }//end press key |
Hagrid | 0:86f82f777a7a | 150 | wait(0.1); |
Hagrid | 0:86f82f777a7a | 151 | }//end while |
Hagrid | 0:86f82f777a7a | 152 | fs.unmount(); |
Hagrid | 0:86f82f777a7a | 153 | }//end main |