graphlcd-base/glcddrivers/picctl.c
changeset 15 cba463042186
parent 14 ccaf76b245ec
child 16 5bf89d28ba80
equal deleted inserted replaced
14:ccaf76b245ec 15:cba463042186
    89     //width = config->width;
    89     //width = config->width;
    90     //height = config->height;
    90     //height = config->height;
    91     refreshCounter = 0;
    91     refreshCounter = 0;
    92     ack_flag = false;
    92     ack_flag = false;
    93     
    93     
    94     buf_pos = 1;
    94     buf_pos = 0;
    95     buf_cmd_start = 255;
    95     buf_cmd_start = 255;
    96     buf_flag_escape = false;
    96     buf_flag_escape = false;
    97 }
    97 }
    98 
    98 
    99 cDriverPICCtl::~cDriverPICCtl()
    99 cDriverPICCtl::~cDriverPICCtl()
   102     delete oldConfig;
   102     delete oldConfig;
   103 }
   103 }
   104 
   104 
   105 void cDriverPICCtl::SignalHandler(int signal)
   105 void cDriverPICCtl::SignalHandler(int signal)
   106 {
   106 {
   107     uint8_t i;
   107 //    uint8_t i;
   108 
   108 
   109     // read all available data
   109     // read all available data
   110     while (instance->port->ReadData(&buf[buf_pos]))
   110     while (instance->port->ReadData(&buf[buf_pos]) > 0)
   111     {
   111     {
   112         // search for SYNC byte
   112         // search for SYNC byte
   113         if ((buf[buf_pos] == CMD_SYNC_RECV) && (!buf_flag_escape))
   113         if ((buf[buf_pos] == CMD_SYNC_RECV) && (!buf_flag_escape))
   114 	{
   114 	{
   115 	    if (buf_cmd_start != 255)
   115 	    if (buf_cmd_start != 255)
   116 	    {
   116 	    {
   117 	        // bytes = buf_cmd_start - buf_pos
   117 	        // bytes = buf_cmd_start - buf_pos
   118                 syslog(LOG_INFO, "PICCtl received a malformed packet. Scrapped xxx bytes\n");
   118                 syslog(LOG_INFO, "PICCtl received a malformed packet. Scrapped xxx bytes\n");
   119 		buf_cmd_start = 0;
       
   120 		buf_pos = 0;
   119 		buf_pos = 0;
   121 		buf[buf_pos] = CMD_SYNC_RECV;
   120 		buf[buf_pos] = CMD_SYNC_RECV;
   122 	    }
   121 	    }
   123  	    buf_cmd_start = buf_pos;
   122  	    buf_cmd_start = buf_pos;
   124 	}
   123 	}
   133         buf_flag_escape = false;
   132         buf_flag_escape = false;
   134 
   133 
   135 /*        printf("buf: ");
   134 /*        printf("buf: ");
   136         for (i=1; i<=buf_pos; i++) { printf("0x%02x ",buf[i]);}
   135         for (i=1; i<=buf_pos; i++) { printf("0x%02x ",buf[i]);}
   137 	printf("\n");*/
   136 	printf("\n");*/
       
   137         
       
   138 	buf_pos++;
   138 
   139 
   139         // we need to check for a valid packet...
   140         // we need to check for a valid packet...
   140 	if (buf_pos >=CMD_DATA_START)
   141 	if (buf_pos >= CMD_DATA_START)
   141 	{
   142 	{
   142             // if we recieved a valid packet: start decoding
   143             // if we recieved a valid packet: start decoding
   143 	    if (buf[CMD_HDR_LENGTH+1] == (buf_pos - CMD_DATA_START))
   144 	    if (buf[CMD_HDR_LENGTH+1] == (buf_pos - CMD_DATA_START))
   144 	    {
   145 	    {
   145 	        instance->DecodeCmd(&buf[buf_cmd_start],(buf_pos));
   146 	        instance->DecodeCmd(&buf[buf_cmd_start],buf_pos);
   146 		buf_pos = 0;
   147 		buf_pos = 0;
   147 		buf_cmd_start = 0;
   148 		buf_cmd_start = 255;
   148 	    }
   149 	    }
   149 	}
   150 	}
   150 
   151 
   151         buf_pos++;
       
   152 	printf ("still captured in while-loop\n");
       
   153 
       
   154     }
   152     }
   155 }
   153 }
   156 
   154 
   157 
   155 
   158 void cDriverPICCtl::DecodeCmd(uint8_t * cmd, uint8_t len)
   156 void cDriverPICCtl::DecodeCmd(uint8_t * cmd, uint8_t len)
   159 {
   157 {
   160     uint8_t i;
   158 /*    uint8_t i;
   161 
       
   162     printf("cmd(%2d): ",len);
   159     printf("cmd(%2d): ",len);
   163     for (i=0; i<len; i++) { printf("0x%02x ",cmd[i]);}
   160     for (i=0; i<len; i++) { printf("0x%02x ",cmd[i]);}
   164     printf("\n");
   161     printf("\n");*/
   165 
   162 
   166     switch (cmd[CMD_HDR_COMMAND])
   163     switch (cmd[CMD_HDR_COMMAND])
   167     {
   164     {
   168         case CMD_SYS_ACK:	ack_flag = true;
   165         case CMD_SYS_ACK:	ack_flag = true;
   169 				printf ("ack_!\n");
       
   170 	 			break;
   166 	 			break;
   171 
   167 
   172 	case CMD_SYS_IR:	printf(" Incoming Key-Event 0x%02x (Source 0x%02x)\n",cmd[CMD_DATA_START+1],cmd[CMD_DATA_START]);
   168 	case CMD_SYS_IR:	printf(" Incoming Key-Event 0x%02x (Source 0x%02x)\n",cmd[CMD_DATA_START+1],cmd[CMD_DATA_START]);
   173 	  			break;
   169 	  			break;
   174 
   170 
   225 
   221 
   226     // clear display
   222     // clear display
   227     Clear();
   223     Clear();
   228     CmdDispClearScreen();
   224     CmdDispClearScreen();
   229     CmdDispSetManaged();
   225     CmdDispSetManaged();
       
   226     CmdDispSetBrightness(0);
   230 
   227 
   231     syslog(LOG_INFO, "%s: PICCtl initialized.\n", config->name.c_str());
   228     syslog(LOG_INFO, "%s: PICCtl initialized.\n", config->name.c_str());
   232     return 0;
   229     return 0;
   233 }
   230 }
   234 
   231