Exemple #1
0
//run our program
void Run() {
    if(fp == NULL) {
        printf("ERROR OPENING FILE %s!!\n", "stacktrace.txt");
    }

    //print our initial values
    fprintf(fp,"Initial Values      %-5d%-5d%-5d\n", 0,0,-1);

    //run each instruction until we get to the halt condition
    while(!halt) {

        //get instruction
        Fetch();

        //write the instruction
        WriteToOutput(1);

        //ecevute the instruction
        Execute();

        //write the pointers
        WriteToOutput(2);

        //write the stack
        WriteToOutput(3);
    }

    fclose(fp);
}
void SerialComm::SendDebugString(const String& string, MessageType type) const {
    CobsPayload<2000> payload;
    WriteProtocolHead(type, 0xFFFFFFFF, payload);
    size_t str_len = string.length();
    for (size_t i = 0; i < str_len; ++i)
        payload.Append(string.charAt(i));
    WriteToOutput(payload);
}
ostream& PtrDynArray<T>::TextWrite(ostream& Os_, Boolean* Ok_) const
{
  size_t i, Max_;
  for (i = 0, Max_ = RunLength(); i < Max_; ++i)
  {
    const T* Ptr_ = ((*this)[i]);
    
    if (Ptr_)
      WriteToOutput(Os_, *Ptr_);
      
    Os_ <<" ";
  }

  return Os_;
}
void SerialComm::SendResponse(uint32_t mask, uint32_t response) const {
    CobsPayload<12> payload;
    WriteProtocolHead(MessageType::Response, mask, payload);
    payload.Append(response);
    WriteToOutput(payload);
}
void SerialComm::SendState(uint32_t timestamp_us, void (*extra_handler)(uint8_t*, size_t), uint32_t mask) const {
    if (!mask)
        mask = state_mask;
    // No need to publish empty state messages
    if (!mask)
        return;

    CobsPayloadGeneric payload;

    WriteProtocolHead(SerialComm::MessageType::State, mask, payload);

    if (mask & SerialComm::STATE_MICROS)
        payload.Append(timestamp_us);
    if (mask & SerialComm::STATE_STATUS)
        payload.Append(state->status);
    if (mask & SerialComm::STATE_V0)
        payload.Append(state->V0_raw);
    if (mask & SerialComm::STATE_I0)
        payload.Append(state->I0_raw);
    if (mask & SerialComm::STATE_I1)
        payload.Append(state->I1_raw);
    if (mask & SerialComm::STATE_ACCEL)
        payload.Append(state->accel);
    if (mask & SerialComm::STATE_GYRO)
        payload.Append(state->gyro);
    if (mask & SerialComm::STATE_MAG)
        payload.Append(state->mag);
    if (mask & SerialComm::STATE_TEMPERATURE)
        payload.Append(state->temperature);
    if (mask & SerialComm::STATE_PRESSURE)
        payload.Append(state->pressure);
    if (mask & SerialComm::STATE_RX_PPM) {
        for (int i = 0; i < 6; ++i)
            payload.Append(ppm[i]);
    }
    if (mask & SerialComm::STATE_AUX_CHAN_MASK)
        payload.Append(state->AUX_chan_mask);
    if (mask & SerialComm::STATE_COMMANDS)
        payload.Append(state->command_throttle, state->command_pitch, state->command_roll, state->command_yaw);
    if (mask & SerialComm::STATE_F_AND_T)
        payload.Append(state->Fz, state->Tx, state->Ty, state->Tz);
    if (mask & SerialComm::STATE_PID_FZ_MASTER)
        WritePIDData(payload, control->thrust_pid.master());
    if (mask & SerialComm::STATE_PID_TX_MASTER)
        WritePIDData(payload, control->pitch_pid.master());
    if (mask & SerialComm::STATE_PID_TY_MASTER)
        WritePIDData(payload, control->roll_pid.master());
    if (mask & SerialComm::STATE_PID_TZ_MASTER)
        WritePIDData(payload, control->yaw_pid.master());
    if (mask & SerialComm::STATE_PID_FZ_SLAVE)
        WritePIDData(payload, control->thrust_pid.slave());
    if (mask & SerialComm::STATE_PID_TX_SLAVE)
        WritePIDData(payload, control->pitch_pid.slave());
    if (mask & SerialComm::STATE_PID_TY_SLAVE)
        WritePIDData(payload, control->roll_pid.slave());
    if (mask & SerialComm::STATE_PID_TZ_SLAVE)
        WritePIDData(payload, control->yaw_pid.slave());
    if (mask & SerialComm::STATE_MOTOR_OUT)
        payload.Append(state->MotorOut);
    if (mask & SerialComm::STATE_KINE_ANGLE)
        payload.Append(state->kinematicsAngle);
    if (mask & SerialComm::STATE_KINE_RATE)
        payload.Append(state->kinematicsRate);
    if (mask & SerialComm::STATE_KINE_ALTITUDE)
        payload.Append(state->kinematicsAltitude);
    if (mask & SerialComm::STATE_LOOP_COUNT)
        payload.Append(state->loopCount);
    WriteToOutput(payload, extra_handler);
}
void SerialComm::SendConfiguration() const {
    CobsPayloadGeneric payload;
    WriteProtocolHead(SerialComm::MessageType::Command, COM_SET_EEPROM_DATA, payload);
    payload.Append(config->raw);
    WriteToOutput(payload);
}