Exemplo n.º 1
0
void Synta::assembleResponse(char* dataPacket, char commandOrError, unsigned long responseData){
  char replyLength = cmd.getLength(commandOrError,0); //get the number of data bytes for response
  
  //char tempStr[11];
  if (replyLength == -1) {
    replyLength++;
    dataPacket[0] = errorChar;  
  } else {
    dataPacket[0] = startOutChar;
  
    if (replyLength == 2) {
      Nibbler nibble = {responseData};
      private_byteToHex(dataPacket+2,dataPacket+1,nibble);
    } else if (replyLength == 3) {
      DoubleNibbler nibble = {responseData};
      nibbleToHex(dataPacket+3, nibble.low);
      nibbleToHex(dataPacket+2, nibble.mid);
      nibbleToHex(dataPacket+1, nibble.high);
    } else if (replyLength == 6) {
      Inter inter = Inter(responseData);
      private_byteToHex(dataPacket+6,dataPacket+5,inter.highByter.lowNibbler);
      private_byteToHex(dataPacket+4,dataPacket+3,inter.lowByter.highNibbler);
      private_byteToHex(dataPacket+2,dataPacket+1,inter.lowByter.lowNibbler);
    }
  
  }
  /*
  dataPacket++;
  switch (replyLength){
    case -1:
        //error(dataPacket); //In otherwords, invalid command, so send error
        //return;
        break;
    case 0:  
        //clearBuffer(dataPacket+1,sizeof(tempStr)); //empty temporary string
        break;
    case 2:
        byteToHex(dataPacket,responseData);
        break;
    case 3:
        intToHex(dataPacket,responseData);
        break;
    case 6:
        longToHex(dataPacket,responseData);
        break;
  }*/
  
  dataPacket[(byte)replyLength + 1] = endChar;
  dataPacket[(byte)replyLength + 2] = 0;  
  //success(dataPacket,tempStr,replyLength + 1); //compile response
  return;
}
Exemplo n.º 2
0
void printHist() {
    for (int i=0;i<sizeof(hist)/sizeof(hist[0]);++i) {
        if (!hist[i].empty()) {
            printf("Histogram for %d\n",i);
            for (std::map<std::string,int>::iterator j=hist[i].begin(),je=hist[i].end();j!=je;++j) {
                std::string s = j->first;
                std::string hexS;
                for (std::string::iterator si=s.begin(),sie=s.end();si!=sie;++si) {
                    char byt = *si;
                    unsigned char b = byt;
                    
                    hexS+=nibbleToHex(b/16);
                    hexS+=nibbleToHex(b&15);
                    
                }
                printf ("%s : %d\n",hexS.c_str(),j->second);
            }
        }
    }
}
Exemplo n.º 3
0
static void	populateSerialNumberDescriptorData (void)
{
  const uint8_t *UniqProcessorId = (uint8_t *) 0x1FFF7A10;
  const uint8_t  UniqProcessorIdLen = 12;

  uint8_t *baseDdPtr = &serialNumberDescriptorData[2];
  for(uint32_t i=0; i<UniqProcessorIdLen; i++) {
    *baseDdPtr++ = nibbleToHex(UniqProcessorId[i] >> 4);
    *baseDdPtr++ = 0;
    *baseDdPtr++ = nibbleToHex(UniqProcessorId[i]);
    *baseDdPtr++ = 0;
  }
}
Exemplo n.º 4
0
inline void private_byteToHex(char* lower, char* upper, Nibbler nibbler){
  nibbleToHex(lower, nibbler.low);
  nibbleToHex(upper, nibbler.high);
}