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); }
// 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); } }
// 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); } }
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); }
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; }
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); }
// 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); } }
// 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); } }
/*! * 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); }
/** * 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); }
void update_score(uint8_t score_p1, uint8_t score_p2) { shift_data((score_p2 & 0x0F) | ((score_p1 & 0x0F) << 4)); }
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; }