Ejemplo n.º 1
0
static void
mwa_scan_in_addr (urj_bus_t *bus, unsigned int slave, uint32_t addr, int mode)
{
    urj_tap_register_t *r = bus->part->active_instruction->data_register->in;
    int i;

    DBG (DBG_BASIC, _("%s: slave=%01x, addr=%08lx, %s\n"),
         __FUNCTION__, slave,
         (long unsigned) addr,
         (mode == ACCESS_MODE_READ) ? "READ" : "WRITE");

    /* set slave bits */
    for (i = 0; i < 4; i++)
        register_set_bit (r, 31 + i, slave & (1 << i));

    /* set address bits */
    addr >>= 2;
    for (i = 0; i < 30; i++)
        register_set_bit (r, 1 + i, addr & (1 << i));

    /* set access mode */
    register_set_bit (r, 0, mode);

    shift_data (bus, 32);
}
Ejemplo n.º 2
0
// the ctbot class
void native_ctbot_bot_invoke(u08_t mref) {

  // JAVA: boolean getError()
  if(mref == NATIVE_METHOD_getError) {
    nvm_int_t val = get_input_bit(IO_SENS_ERROR)?1:0;
    stack_push(val);
  }
  
  // JAVA: void setExtension1Enabled()
  else if(mref == NATIVE_METHOD_setExtension1Enabled) {
    if (stack_pop_int())
      shift_reg_ena &= ~(uint8_t)ENA_ERW1;
    else
      shift_reg_ena |= ENA_ERW1;
    shift_data(shift_reg_ena, SHIFT_REGISTER_ENA);
  }
  
  // JAVA: int getExtension1Enabled()
  else if(mref == NATIVE_METHOD_getExtension1Enabled) {
    nvm_int_t val = (shift_reg_ena & ENA_ERW1)?1:0;
    stack_push(val);
  }

  // JAVA: int setExtension2Enabled()
  else if(mref == NATIVE_METHOD_setExtension2Enabled) {
    if (stack_pop_int())
      shift_reg_ena &= ~(uint8_t)ENA_ERW2;
    else
      shift_reg_ena |= ENA_ERW2;
    shift_data(shift_reg_ena, SHIFT_REGISTER_ENA);
  }

  // JAVA: int getExtension2Enabled()
  else if(mref == NATIVE_METHOD_getExtension2Enabled) {
    nvm_int_t val = (shift_reg_ena & ENA_ERW2)?1:0;
    stack_push(val);
  }

}
Ejemplo n.º 3
0
// the ctbot class
void native_ctbot_wheelencoder_invoke(u08_t mref) {

  // JAVA: int getLeftInc()
  if(mref == NATIVE_METHOD_getLeftInc) {
    cli();
    nvm_int_t val = (int16_t)wheelencoder_l;
    wheelencoder_l = 0;
    sei();
    stack_push(val);
  }

  // JAVA: int getRightInc()
  else if(mref == NATIVE_METHOD_getRightInc) {
    cli();
    nvm_int_t val = (int16_t)wheelencoder_r;
    wheelencoder_r = 0;
    sei();
    stack_push(val);
  }

  // JAVA: void setEnabled(boolean enabled)
  else if(mref == NATIVE_METHOD_setEnabled) {
    if (stack_pop_int())
      shift_reg_ena &= ~(uint8_t)ENA_RADLED;
    else
      shift_reg_ena |= ENA_RADLED;
    shift_data(shift_reg_ena, SHIFT_REGISTER_ENA);
  }

  // JAVA: boolean getEnabled()
  else if(mref == NATIVE_METHOD_getEnabled) {
    stack_push((shift_reg_ena & ENA_RADLED)?1:0);
  }

  // JAVA: int getLeftSpeed()
  else if(mref == NATIVE_METHOD_getLeftSpeed) {
    cli();
    nvm_int_t val = pid_left_speed;
    sei();
    stack_push(val);
  }

  // JAVA: int getRightSpeed()
  else if(mref == NATIVE_METHOD_getRightSpeed) {
    cli();
    nvm_int_t val = pid_right_speed;
    sei();
    stack_push(val);
  }
  
}
Ejemplo n.º 4
0
static void
nexus_access_write_data (urj_bus_t *bus, uint32_t data)
{
    urj_tap_register_t *r = bus->part->active_instruction->data_register->in;
    int i;

    DBG (DBG_BASIC, _("%s: data=%08lx\n"), __FUNCTION__,
         (long unsigned) data);

    register_set_bit (r, 0, 0);
    register_set_bit (r, 1, 0);

    for (i = 0; i < 32; i++)
        register_set_bit (r, 2 + i, data & (1 << i));

    shift_data (bus, 0);
}
Ejemplo n.º 5
0
static void
nexus_access_read_data (urj_bus_t *bus, uint32_t *pdata)
{
    urj_tap_register_t *r = bus->part->active_instruction->data_register->out;
    uint32_t data;
    int i;

    shift_data (bus, 32);

    data = 0;
    for (i = 0; i < 32; i++)
        data |= register_get_bit (r, i) << i;

    DBG (DBG_BASIC, _("%s: data=%08lx\n"), __FUNCTION__,
         (long unsigned) data);

    *pdata = data;
}
Ejemplo n.º 6
0
static void
nexus_access_set_addr (urj_bus_t *bus, uint32_t addr, int mode)
{
    urj_tap_register_t *r = bus->part->active_instruction->data_register->in;
    int i;

    DBG (DBG_BASIC, _("%s: addr=%08lx, mode=%s\n"), __FUNCTION__,
         (long unsigned) addr,
         (mode == ACCESS_MODE_READ) ? "READ" : "WRITE");

    urj_tap_register_fill (r, 0);

    /* set address bits */
    addr >>= 2;
    for (i = 0; i < 7; i++)
        register_set_bit (r, 27 + i, addr & (1 << i));

    /* set access mode */
    register_set_bit (r, 26, mode);

    shift_data (bus, 32);
}
Ejemplo n.º 7
0
// the ctbot class
void native_ctbot_edgedetector_invoke(u08_t mref) {

  // JAVA: void updateLeft()
  if(mref == NATIVE_METHOD_updateLeft) {
    value_l = adc_read(SENS_KANTE_L);
  }
  
  // JAVA: void updateRight()
  else if(mref == NATIVE_METHOD_updateRight) {
    value_r = adc_read(SENS_KANTE_R);
  }
  
  // JAVA: int getLeft()
  else if(mref == NATIVE_METHOD_getLeft) {
    nvm_int_t val = value_l;
    stack_push(val);
  }

  // JAVA: int getRight()
  else if(mref == NATIVE_METHOD_getRight) {
    nvm_int_t val = value_r;
    stack_push(val);
  }

  // JAVA: void setEnabled(boolean enabled)
  else if(mref == NATIVE_METHOD_setEnabled) {
    if (stack_pop_int())
      shift_reg_ena &= ~(uint8_t)ENA_KANTLED;
    else
      shift_reg_ena |= ENA_KANTLED;
    shift_data(shift_reg_ena, SHIFT_REGISTER_ENA);
  }

  // JAVA: boolean getEnabled()
  else if(mref == NATIVE_METHOD_getEnabled) {
    stack_push((shift_reg_ena & ENA_KANTLED)?1:0);
  }
}
Ejemplo n.º 8
0
// the ctbot class
void native_ctbot_lightbarrier_invoke(u08_t mref) {

  // JAVA: void getState()
  if(mref == NATIVE_METHOD_getState) {
    nvm_int_t val = get_input_bit(IO_SENS_SCHRANKE)?1:0;
    stack_push(val);
  }
  
  // JAVA: void setEnabled()
  else if(mref == NATIVE_METHOD_setEnabled) {
    if (stack_pop_int())
      shift_reg_ena &= ~(uint8_t)ENA_SCHRANKE;
    else
      shift_reg_ena |= ENA_SCHRANKE;
    shift_data(shift_reg_ena, SHIFT_REGISTER_ENA);
  }

  // JAVA: boolean getEnabled()
  else if(mref == NATIVE_METHOD_getEnabled) {
    nvm_int_t val = (shift_reg_ena & ENA_SCHRANKE)?1:0;
    stack_push(val);
  }
}
Ejemplo n.º 9
0
/*!
 * Zeigt eine 8-Bit Variable mit den LEDs an
 * @param LED Wert der gezeigt werden soll
 */
void LED_set(uint8 LED){
	led=LED;
	shift_data(led,SHIFT_REGISTER_LED); 
}
Ejemplo n.º 10
0
/**
 * Schaltet die Enable-Transistoren
 * Achtung, die Treiber-Transistoren sind Low-Aktiv!!!
 * ENA_set bezieht sich auf die Transistoren
 * Daher zieht es die entsprechende ENA_XXX-Leitung auf ~enable
 * @param enable ENA-Wert, der gesetzt werden soll
 */
void ENA_set(uint8_t enable) {
	ena = enable;
	shift_data((uint8_t) (~enable), SHIFT_REGISTER_ENA);
}
Ejemplo n.º 11
0
void update_score(uint8_t score_p1, uint8_t score_p2)
{
	shift_data((score_p2 & 0x0F) | ((score_p1 & 0x0F) << 4));
}
Ejemplo n.º 12
0
static int flv_write_trailer(AVFormatContext *s)
{
    int64_t file_size;
    AVIOContext *pb = s->pb;
    FLVContext *flv = s->priv_data;
    int build_keyframes_idx = flv->flags & FLV_ADD_KEYFRAME_INDEX;
    int i, res;
    int64_t cur_pos = avio_tell(s->pb);

    if (build_keyframes_idx) {
        FLVFileposition *newflv_posinfo, *p;

        avio_seek(pb, flv->videosize_offset, SEEK_SET);
        put_amf_double(pb, flv->videosize);

        avio_seek(pb, flv->audiosize_offset, SEEK_SET);
        put_amf_double(pb, flv->audiosize);

        avio_seek(pb, flv->lasttimestamp_offset, SEEK_SET);
        put_amf_double(pb, flv->lasttimestamp);

        avio_seek(pb, flv->lastkeyframetimestamp_offset, SEEK_SET);
        put_amf_double(pb, flv->lastkeyframetimestamp);

        avio_seek(pb, flv->lastkeyframelocation_offset, SEEK_SET);
        put_amf_double(pb, flv->lastkeyframelocation + flv->keyframe_index_size);
        avio_seek(pb, cur_pos, SEEK_SET);

        res = shift_data(s);
        if (res < 0) {
             goto end;
        }
        avio_seek(pb, flv->keyframes_info_offset, SEEK_SET);
        put_amf_string(pb, "filepositions");
        put_amf_dword_array(pb, flv->filepositions_count);
        for (newflv_posinfo = flv->head_filepositions; newflv_posinfo; newflv_posinfo = newflv_posinfo->next) {
            put_amf_double(pb, newflv_posinfo->keyframe_position + flv->keyframe_index_size);
        }

        put_amf_string(pb, "times");
        put_amf_dword_array(pb, flv->filepositions_count);
        for (newflv_posinfo = flv->head_filepositions; newflv_posinfo; newflv_posinfo = newflv_posinfo->next) {
            put_amf_double(pb, newflv_posinfo->keyframe_timestamp);
        }

        newflv_posinfo = flv->head_filepositions;
        while (newflv_posinfo) {
            p = newflv_posinfo->next;
            if (p) {
                newflv_posinfo->next = p->next;
                av_free(p);
                p = NULL;
            } else {
                av_free(newflv_posinfo);
                newflv_posinfo = NULL;
            }
        }

        put_amf_string(pb, "");
        avio_w8(pb, AMF_END_OF_OBJECT);

        avio_seek(pb, cur_pos + flv->keyframe_index_size, SEEK_SET);
    }

end:
    if (flv->flags & FLV_NO_SEQUENCE_END) {
        av_log(s, AV_LOG_DEBUG, "FLV no sequence end mode open\n");
    } else {
        /* Add EOS tag */
        for (i = 0; i < s->nb_streams; i++) {
            AVCodecParameters *par = s->streams[i]->codecpar;
            FLVStreamContext *sc = s->streams[i]->priv_data;
            if (par->codec_type == AVMEDIA_TYPE_VIDEO &&
                    (par->codec_id == AV_CODEC_ID_H264 || par->codec_id == AV_CODEC_ID_MPEG4))
                put_avc_eos_tag(pb, sc->last_ts);
        }
    }

    file_size = avio_tell(pb);

    if (build_keyframes_idx) {
        flv->datasize = file_size - flv->datastart_offset;
        avio_seek(pb, flv->datasize_offset, SEEK_SET);
        put_amf_double(pb, flv->datasize);
    }
    if (!(flv->flags & FLV_NO_DURATION_FILESIZE)) {
        /* update information */
        if (avio_seek(pb, flv->duration_offset, SEEK_SET) < 0) {
            av_log(s, AV_LOG_WARNING, "Failed to update header with correct duration.\n");
        } else {
            put_amf_double(pb, flv->duration / (double)1000);
        }
        if (avio_seek(pb, flv->filesize_offset, SEEK_SET) < 0) {
            av_log(s, AV_LOG_WARNING, "Failed to update header with correct filesize.\n");
        } else {
            put_amf_double(pb, file_size);
        }
    }
    avio_seek(pb, file_size, SEEK_SET);
    return 0;
}