0 Members and 2 Guests are viewing this topic.
%%|NUMS|10|TestA|TestB|TestC|TestD|TestE|TestF|TestG|TestH|TestI|TestJ
%%|NUMS|10|TestA|TestB|TestC|Tes
#include <os.h>#include <nspireio/uart.hpp>#include <nspireio/console.hpp>int key_already_pressed_ctrl = 0;int key_already_pressed_contact = 0;char* contact = "%%|NUMS|6|Name1|Name2|Name3|Name4|Name6|Name7";int hasSelectedContact = 0;// Modidification of the uart_getsn() function to remove the echo.char* uart_getsn_mdf(char* str, int num) { for(int i = 0; i < num-1; i++){ if(uart_ready()) { char c = uart_getchar(); str[i] = c; if(c == '\b'){ i -= 2; } else if(c == '\r') { str[i] =0; return str; } } } str[num] = 0; return str;}char* uart_gets_mdf(char* str){ return uart_getsn_mdf(str,50);}int numberOfCharsInArray(char* array) { return strlen(array);}int main(void){ //Write the program title assert_ndless_rev(874); nio_console csl; nio_init(&csl,NIO_MAX_COLS,NIO_MAX_ROWS,0,0,NIO_COLOR_WHITE,NIO_COLOR_BLACK,TRUE); nio_set_default(&csl); nio_color(&csl,NIO_COLOR_BLACK,NIO_COLOR_WHITE); nio_printf(" Nspire UART Chat by Samy. "); nio_printf(" Compiled the %s At %s ",__DATE__,__TIME__); nio_color(&csl,NIO_COLOR_BLACK,NIO_COLOR_LIGHTRED); nio_printf(" Press ESC key to exit and CTRL to send msg. "); nio_printf(" "); nio_color(&csl,NIO_COLOR_WHITE,NIO_COLOR_BLACK); nio_puts(""); //Send that we are online uart_printf("#$#CALC:ENTERING:SMS\r\n"); //Main loop while(!isKeyPressed(KEY_NSPIRE_ESC)){ if(isKeyPressed(KEY_NSPIRE_CTRL) && !key_already_pressed_ctrl && !key_already_pressed_contact){ if(hasSelectedContact) { nio_printf("<< "); char output[90] = {0}; nio_getsn(output,90); uart_printf("$#$SMS:"); int num = numberOfCharsInArray(output); for(char* it = output; *it; ++it) { uart_printf("%c",*it); sleep(100); } uart_printf("\r\n"); } else { nio_printf("You must select an contact !\r\n"); } key_already_pressed_ctrl = 1; } if(isKeyPressed(KEY_NSPIRE_C) && !key_already_pressed_contact && !key_already_pressed_ctrl){ // START Contact select part nio_clear(&csl); //Title nio_color(&csl,NIO_COLOR_BLACK,NIO_COLOR_WHITE); nio_printf(" Contact "); nio_color(&csl,NIO_COLOR_WHITE,NIO_COLOR_BLACK); //Search nio_printf("Name search: "); char output[90] = {0}; nio_getsn(output,90); uart_printf("$#$UPDATENUM:%s\r\n",output); nio_color(&csl,NIO_COLOR_BLACK,NIO_COLOR_WHITE); nio_clear(&csl); while(!uart_ready() && !isKeyPressed(KEY_NSPIRE_ESC)) { nio_printf(" Waiting "); sleep(500); } nio_color(&csl,NIO_COLOR_BLACK,NIO_COLOR_WHITE); nio_printf(" Contact "); nio_color(&csl,NIO_COLOR_WHITE,NIO_COLOR_BLACK); nio_clear(&csl); char input[1024] = {0}; //sleep(500); uart_getsn_mdf(input,1024); nio_puts(input); nio_puts("Select your contact:"); contact = input; char* namestable[1024]; char* s; int i=0; s = strtok(contact ,"|"); while (s != NULL) { if(i>1) { namestable[i] = s; } if(i>2) { nio_printf(" %i) %s. \r\n",i-3,s); } s = strtok (NULL, "|"); i++; } nio_printf("Change contact to (n)?"); char selected[10] = {0}; nio_getsn(selected,10); int ii = atoi(selected); ii=ii+3; if(ii >= 0 && namestable[ii] != "None") { nio_printf("Changing send contact to %s. \r\n",namestable[ii]); uart_printf("$#$CHANGENUM:%s\r\n",namestable[ii]); hasSelectedContact = 1; nio_clear(&csl); nio_color(&csl,NIO_COLOR_BLACK,NIO_COLOR_WHITE); // Display reponsive title nio_printf(" Info: Now chating with: %s \r\n", namestable[ii]); nio_printf(" "); nio_puts(""); } else { hasSelectedContact = 0; nio_clear(&csl); nio_color(&csl,NIO_COLOR_BLACK,NIO_COLOR_LIGHTRED); nio_printf(" "); nio_printf(" Error: Error while selecting contact please retry. "); nio_printf(" If the error persist contact samy :) "); nio_printf(" "); nio_color(&csl,NIO_COLOR_WHITE,NIO_COLOR_BLACK); nio_puts(""); } nio_color(&csl,NIO_COLOR_WHITE,NIO_COLOR_BLACK); // END Contact select part key_already_pressed_contact = 1; } if(!any_key_pressed()) { key_already_pressed_ctrl = 0; key_already_pressed_contact = 0; } if(uart_ready()) { sleep(500); char input[1024] = {0}; uart_gets_mdf(input); contact = input; nio_printf("%s\r\n",input); nio_printf("%s",input); nio_puts(""); } } //Send that we are offline uart_printf("#$#CALC:LEAVING:SMS\r\n"); //Exiting nio_puts("Offline message sended. Exiting ..."); nio_free(&csl); return 0;}
if(uart_ready()) { sleep(500); char input[1024] = {0}; uart_gets_mdf(input); nio_printf("%s",input); nio_puts(""); }
char* uart_getsn_mdf(char* str, int num) { for(int i = 0; i < num-1; i++){ if(uart_ready()) { char c = uart_getchar(); str[i] = c; if(c == '\b'){ i -= 2; } else if(c == '\r') { str[i] =0; return str; } } } str[num] = 0; return str;}char* uart_gets_mdf(char* str){ return uart_getsn_mdf(str,50);}
I have posted this bug
And I don't have an another module
char uart_getchar(void){ volatile unsigned *recv_buffer_reg = (unsigned*)0x90020000; volatile unsigned *fr = (unsigned*)0x90020018; while(!(*fr & 0x10)) idle(); return *recv_buffer_reg;}
error: can't convert « unsigned int* » to « volatile uint8_t* {aka volatile unsigned char*} » in the initialisation volatile uint8_t *fr = (unsigned*)0x90020018;
while(!(*fr & 0x10)) idle();