Ejemplo n.º 1
0
void interpret_command(UART_HandleTypeDef *UartHandle){

  //if return is sent, create a new line:
  uint8_t result[RESULTLENGTH] = {0};
  
  //printf("%s\n\r",(UartHandle->pRxBuffPtr));
  
  //check the incoming character:
  if((*UartHandle->pRxBuffPtr) == 13 || (*UartHandle->pRxBuffPtr) == 0x0A){
    //newline: return:
    //strcat((char *) result, "\n\r");
   
    //interpret message
    interpret_message(command,incoming_length,result);
    
    //add > - to result
    //strcat((char*)result,"\n> ");
    
    //reset command 
    reset_message(command, &incoming_length, COMMANDLENGTH);

  //}else if((*UartHandle->pRxBuffPtr) == 127){
    //backspace:
    /*
    if(incoming_length > 0){
      result[0] = (*UartHandle->pRxBuffPtr);
      result[1] = '\0';
      command[--incoming_length] = '\0';
    }
    */
    
    //send if there is something to send via UART
    if(strlen((const char*)result) > 0){
      txFunction(UartHandle,result, strlen((const char*)result));
    }
    
  }else if(strlen((char*)command) >= COMMANDLENGTH-1){
    reset_message(command,&incoming_length,COMMANDLENGTH-1);
    strcat((char*)result, "message too long...\n\r");
    show_help(result);
    //add > - to result
    strcat((char*)result,"\n> ");
  }else{
    //legal char:
    result[0] = (*UartHandle->pRxBuffPtr);
    result[1] = '\0';
    command[incoming_length++] = (*UartHandle->pRxBuffPtr);
  }

  //enable RX again:
  irqfunc(&huart3);

}
Ejemplo n.º 2
0
/*############################ print_button() ###########################*/
void
print_button(Widget w, XtPointer client_data, XtPointer call_data)
{
   reset_message(statusbox_w);
   print_data(w, client_data, call_data);

   return;
}
Ejemplo n.º 3
0
/*
功能:
    处理硬盘相关请求的任务进程。初始化后,永久运行接收有关硬盘请求的信息
参数:
    (无)
返回值:
    (无)
*/
void task_hd(){
    MESSAGE message;
#ifdef DEBUG_HD
    printl("in task_hd\n");
#endif 
   //初始化硬盘
    init_hd();

    while(1){
        reset_message(&message);
        send_receive(RECEIVE,ANY,&message);
        
        int src=message.source_pid;
        switch(message.type){
        case INFO_FS_OPEN:
            hd_open(&message);
            break;
        case INFO_FS_CLOSE:
            hd_close(&message);
            break;
        case INFO_FS_READ:
        case INFO_FS_WRITE:
            hd_rdwt(&message);
            break;
        case INFO_FS_IOCTL:
            hd_ioctl(&message);
            break;
        case INFO_FS_DEVICE:
            hd_device_info(&message);
            break;
        default:
            //panic("unkonw message type(%d) in task_hd",src);
            break;
        }
        
#ifdef DEBUG_HD
        printl("in task_hd\n");
#endif
        /* message.source_pid=process2pid(p_process_ready); */
        send_receive(SEND,src,&message);
    }
}