Пример #1
0
void handleClientRequest(int i)
{
    ssize_t r;
    char * p;
    size_t remain;

    if (stream[i].len >= sizeof(stream[i].buffer) - 2)
    {
        logAbort("Input line on stream %d too long: %s\n", i, stream[i].buffer);
    }
    remain = sizeof(stream[i].buffer) - stream[i].len - 2;

    logDebug("handleClientRequest: read i=%d\n", i);
    logDebug("read %s i=%d fd=%d len=%u remain=%u\n", streamTypeName[stream[i].type], i, stream[i].fd, stream[i].len, remain);
    r = read(stream[i].fd, stream[i].buffer + stream[i].len, remain);

    if (r <= 0)
    {
        logDebug("read %s i=%d fd=%d r=%d\n", streamTypeName[stream[i].type], i, stream[i].fd, r);
        if (stream[i].type == DATA_INPUT_STREAM)
        {
            logAbort("EOF on reading stdin\n");
        }
        closeStream(i);
        return;
    }

    stream[i].len += r;
    stream[i].buffer[stream[i].len] = 0;
    while (stream[i].len > 0)
    {
        size_t len;

        p = strchr(stream[i].buffer, '\n');
        if (!p)
        {
            break;
        }
        len = p - stream[i].buffer;
        sbAppendData(&tcpMessage, stream[i].buffer, len + 1);
        if (stream[i].type != DATA_INPUT_STREAM || stream[outputIdx].type == DATA_OUTPUT_COPY)
        {
            /* Send all TCP client input and the main stdin stream if the mode is -o */
            /* directly to stdout */
            sbAppendData(&outMessage, stream[i].buffer, len + 1);
        }
        *p = 0;
        if (storeMessage(stream[i].buffer, len))
        {
            convertJSONToNMEA0183(&nmeaMessage, stream[i].buffer);
        }
        p++, len++;
        stream[i].len -= len;

        /* Now remove [buffer..p> == the entire line */
        memmove(stream[i].buffer, p, stream[i].len + 1);
    }
}
//------------------------------------------------------------------
void MidiInputGenerator::newMidiMessage(ofxMidiMessage& msg){
    
    midiMessage = msg;
    
    if (msg.portName == this->midiDeviceName) {
        if (midiLearnActive) {
            Param* p       = new Param();
            p->midiControl = msg.control;
            storeMessage(p);
        }
        else if (midiControlMaps[msg.control].size() > 0) {
            for(int i = 0; i < midiControlMaps[msg.control].size(); i++){
                Param* p        = new Param();
                p->inputMax     = 127;
                p->inputMin     = 0;
                p->imageInputId = midiControlMaps[msg.control].at(i)->nodeId;
                p->name         = midiControlMaps[msg.control].at(i)->paramId;
                p->value        = msg.value;
                p->midiControl  = msg.control;
                p->intVal       = ofMap(msg.value,
                                        midiControlMaps[msg.control].at(i)->inputMinValue,
                                        midiControlMaps[msg.control].at(i)->inputMaxValue,
                                        midiControlMaps[msg.control].at(i)->paramMinValue,
                                        midiControlMaps[msg.control].at(i)->paramMaxValue);

                p->floatVal     = ofMap(msg.value,
                                        midiControlMaps[msg.control].at(i)->inputMinValue,
                                        midiControlMaps[msg.control].at(i)->inputMaxValue,
                                        midiControlMaps[msg.control].at(i)->paramMinValue,
                                        midiControlMaps[msg.control].at(i)->paramMaxValue);

                // since this is unthreaded, then i dont need to lock and unlock
                storeMessage(p);
            }
        }
    }
}
Пример #3
0
void ChannelWatcher::onMessageSent(const Tp::Message &message)
{
    StorageMessage msg;
    msg.messageDateTime = message.sent();
    msg.accountObjectPathId = m_accountDbId;
    msg.targetContactId = m_contactDbId;
    msg.message = message.text();
    msg.messageToken = message.messageToken();
    msg.isIncoming = false;
    msg.isDelivered = false;
    msg.type = 1;

    if (msg.messageToken.isEmpty()) {
        msg.messageToken = QCryptographicHash::hash(QString(msg.messageDateTime.toString() + msg.message).toUtf8(),
                                                    QCryptographicHash::Md5);
    }

    storeMessage(msg);
}
Пример #4
0
void ChannelWatcher::onMessageReceived(const Tp::ReceivedMessage &message)
{
    if (!message.isDeliveryReport()) {
        StorageMessage msg;
        msg.messageDateTime = message.received();
        msg.accountObjectPathId = m_accountDbId;
        msg.targetContactId = m_contactDbId;
        msg.message = message.text();
        msg.messageToken = message.messageToken();
        msg.isIncoming = true;
        msg.isDelivered = true;
        msg.type = 1;

        if (msg.messageToken.isEmpty()) {
            msg.messageToken = QCryptographicHash::hash(QString(msg.messageDateTime.toString() + msg.message).toUtf8(),
                                                        QCryptographicHash::Md5);
        }

        storeMessage(msg);
    } else {
        qDebug() << "Received a delivery report for message" << message.deliveryDetails().originalToken();

        //TODO
        //     QSqlQuery updateQuery;
        //     updateQuery.prepare("UPDATE data SET deliveredDateTime = :deliveredDateTime, isDelivered = :isDelivered WHERE id = :id");
        //     updateQuery.bindValue(":deliveredDateTime", message.deliveredDateTime);
        //     updateQuery.bindValue(":isDelivered", message.isDelivered);
        //     updateQuery.bindValue(":id", message.id);
        //
        //     bool transactionBegin = d->db.transaction();
        //     qDebug() << "Update transaction begins" << transactionBegin;
        //     bool queryResult = updateQuery.exec();
        //     qDebug() << "Update query gut" << queryResult;
        //     if (queryResult) {
        //         d->db.commit();
        //     } else {
        //         qWarning() << updateQuery.lastError().text();
        //         d->db.rollback();
        //     }

    }
}
Пример #5
0
int main(void) {
    int fd;
    ulong* map_base;

	if((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1) FATAL;
	map_base = (ulong*) mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, aam_port);
	printf("/dev/mem opened.\n"); 
	fflush(stdout);
	//let's store a message
	std::vector<ulong> myMessage;
	myMessage.push_back(4); myMessage.push_back(7); myMessage.push_back(2); myMessage.push_back(4);
	storeMessage(myMessage.begin(), map_base);
	std::cout << "Message [4,7,2,4] written." << std::endl;

	//let's see if read works properly
	eraseMessage(myMessage, 0);
	eraseMessage(myMessage, 3);
	std::vector<ulong> rslt = readMessage(myMessage.begin(), map_base);
	std::cout << "[X,7,2,X] read" << std::endl;
	std::cout << "Contends of result from read: size= "
	          <<rslt.size()<<" vals= ("<<rslt[0]<<", "<<rslt[1]<<")"<<std::endl;
	
}
Пример #6
0
void handleClientRequest(int i)
{
  ssize_t r;
  char * p;

  r = read(stream[i].fd, stream[i].buffer + stream[i].len, sizeof(stream[i].buffer) - 1 - stream[i].len);
  logDebug("read i=%d fd=%d r=%d\n", i, stream[i].fd, r);

  if (r < 0)
  {
    if (stream[i].fd == stdinfd)
    {
      logAbort("Read %d on reading stdin\n", r);
    }
    closeStream(i);
    return;
  }

  if (r == 0)
  {
    if (stream[i].type == DATA_INPUT_STREAM)
    {
      logAbort("EOF on reading stdin\n", r);
    }
    else
    {
      closeStream(i);
    }
    return;
  }

  stream[i].len += r;
  stream[i].buffer[stream[i].len] = 0;
  while (r > 0)
  {
    p = strchr(stream[i].buffer, '\n');
    if (p)
    {
      size_t len = ++p - stream[i].buffer;

      /* Feed it into the NMEA2000 message handler */
      char stash = *p;

      logDebug("Got msg='%1.*s'\n", len, stream[i].buffer);
      *p = 0;

      sbAppendData(&tcpMessage, stream[i].buffer, len);
      if (stream[i].type != DATA_INPUT_STREAM || stream[outputIdx].type == DATA_OUTPUT_COPY)
      {
        /* Send all TCP client input and the main stdin stream if the mode is -o */
        /* directly to stdout */
        sbAppendData(&outMessage, stream[i].buffer, len);
      }
      convertJSONToNMEA0183(&nmeaMessage, stream[i].buffer);
      storeMessage(stream[i].buffer, len);
      *p = stash;

      /* Now remove [buffer..p> */
      memcpy(stream[i].buffer, p, strlen(p));
      stream[i].len -= len;
      r -= len;
    }
    else
    {
      r = 0;
    }
  }
}