| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- //Include Header-----------------------------------------------------
- #include"prog.h"
- //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- //Main-Program
- int main(int argc, const char * argv[]){
- //Setting up Timer-Signal--------------------------------------------
- sigset_t signal;
- pthread_t thread;
- int signal_err, pthread_err;
- signal_err = sigemptyset(&signal);
- if(signal_err!=0){
- error_handler(signal_err, "Not a valid Signal");
- }
- signal_err = sigaddset(&signal, SIGALRM);
- if(signal_err!=0){
- error_handler(signal_err, "Not a valid Signal");
- }
- pthread_err = pthread_sigmask(SIG_BLOCK, &signal, NULL);
- if(pthread_err!=0){
- error_handler(pthread_err, "Error changing Signal-Mask");
- }
- //Loading Page-------------------------------------------------------
- FILE * file_stream = fopen("test.hex", "r");
- if(file_stream==NULL){
- fprintf(stderr, "No File \n");
- }
- char * page_get_ptr = page_get(file_stream);
- for(int i=0; i<page_size; i++){
- printf("%02X \n", *page_get_ptr);
- page_get_ptr++;
- }
- //initializing USART at USB_PORT-------------------------------------
- int USB = open("/dev/ttyACM3", O_RDWR|O_NOCTTY|O_NONBLOCK);
- int USB_err = isatty(USB);
- if(USB_err!=1){
- error_handler(USB_err, "No File Descriptor");
- }
- struct termios * termios_ptr = (struct termios *)
- malloc(sizeof(struct termios));
- (*termios_ptr).c_iflag = IGNPAR; //ignore Parity-Err
- (*termios_ptr).c_oflag = 0;
- (*termios_ptr).c_cflag = CS8|CREAD; //set Size, enable RX
- (*termios_ptr).c_lflag = 0;
- (*termios_ptr).c_cc[VMIN] = 0; //set min Characters
- cfsetspeed(termios_ptr, B19200); //set Baudrate 19.2k
- tcsetattr(USB, TCSANOW ,termios_ptr);
- //Get Command--------------------------------------------------------
- char cmd_check = 0;
- char * frame_ptr;
- char * cmd_ack_ptr = (char *)malloc(3*sizeof(char));
- frame_ptr = cmd_build(page_read, (char)page_size);
- write(USB, frame_ptr, 3*sizeof(char));
- while(cmd_check<3){
- read(USB, cmd_ack_ptr, sizeof(char));
- tcflush(USB, TCIFLUSH);
- if(*cmd_ack_ptr==page_size){
- cmd_check++;
- }
- }
- tcflush(USB, TCIOFLUSH);
- set_timer(0, 1000);
- pthread_err = pthread_create(&thread, NULL,
- &signal_thread, (void *)&signal);
- if(pthread_err!=0){
- error_handler(pthread_err, "Failed to create Thread");
- }
- while(timer_state);
- printf("Page Read acknoledged \n");
- char * cmd_done_ptr = (char *)malloc(sizeof(char));
- cmd_check = 0;
- char * page_ptr = page_mask(page_build(page_size));
- write(USB, page_ptr, 2*page_size*sizeof(char));
- while(cmd_check<3){
- read(USB, cmd_done_ptr, sizeof(char));
- tcflush(USB, TCIFLUSH);
- if(*cmd_done_ptr==frame_mask){
- break;
- }
- }
- printf("Page Read Complete \n");
- close(USB);
- return EXIT_SUCCESS;
- }
- //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|