bool OpenPlannerSimulator::LoadSimulationData(PlannerHNS::WayPoint& start_p) { ostringstream fileName; fileName << "SimuCar_"; fileName << m_SimParams.id; fileName << ".csv"; string simuDataFileName = UtilityHNS::UtilityH::GetHomeDirectory()+UtilityHNS::DataRW::LoggingMainfolderName+UtilityHNS::DataRW::SimulationFolderName + fileName.str(); UtilityHNS::SimulationFileReader sfr(simuDataFileName); UtilityHNS::SimulationFileReader::SimulationData data; if(sfr.ReadAllData(data) == 0) return false; start_p = PlannerHNS::WayPoint(data.startPoint.x, data.startPoint.y, data.startPoint.z, data.startPoint.a); start_p.v = data.startPoint.v; start_p.cost = data.startPoint.c; return true; }
//---------------------------------------------------------------------- int idaapi ana(void) { //получить один байт uchar code = ua_next_byte(); switch ( code ) { //Mnemonic Operand Instruction Code // B1 B2 B3 B4 case 0x00: { //ROR A, 1 0000 0000 cmd.itype = NEC_78K_0S_ror; cmd.Op1.type = o_reg; cmd.Op1.reg = rA; cmd.Op2.type = o_imm; cmd.Op2.value = 1; cmd.Op2.regmode = 1; } break; case 0x02: { //RORC A, 1 0000 0010 cmd.itype = NEC_78K_0S_rorc; cmd.Op1.type = o_reg; cmd.Op1.reg = rA; cmd.Op2.type = o_imm; cmd.Op2.value = 1; cmd.Op2.regmode = 1; } break; case 0x04: { //CLR1 CY 0000 0100 cmd.itype = NEC_78K_0S_clr1; cmd.Op1.type = o_phrase; cmd.Op1.reg = bCY; } break; case 0x05: { //XCH A, saddr 0000 0101 Saddr-offset cmd.itype = NEC_78K_0S_xch; cmd.Op1.type = o_reg; cmd.Op1.reg = rA; cmd.Op2.type = o_mem; cmd.Op2.dtyp = dt_byte; cmd.Op2.addr=saddr(ua_next_byte()); } break; case 0x06: { //NOT1 CY 0000 0110 cmd.itype = NEC_78K_0S_not1; cmd.Op1.type = o_phrase; cmd.Op1.reg = bCY; } break; case 0x07: { //XCH A, sfr 0000 0111 Sfr-offset cmd.itype = NEC_78K_0S_xch; cmd.Op1.type = o_reg; cmd.Op1.reg = rA; cmd.Op2.type = o_mem; cmd.Op2.dtyp = dt_byte; cmd.Op2.addr = sfr(ua_next_byte()); } break; case 0x08: { //NOP 0000 1000 cmd.itype = NEC_78K_0S_nop; } break; case 0x0A: // All 0x0A commands { uchar code2 = ua_next_byte(); switch ( code2 ) { case 0x88: case 0x98: case 0xA8: case 0xB8: case 0xC8: case 0xD8: case 0xE8: case 0xF8: { //BT saddr.bit, $addr16 0000 1010 1 B2 B1 B0 1000 Saddr-offset jdisp cmd.itype = NEC_78K_0S_bt; cmd.Op1.type = o_bit; cmd.Op1.dtyp = dt_byte; cmd.Op1.addr = saddr(ua_next_byte()); cmd.Op1.value = (code2>>4) & 0x07; jdisp(cmd.Op2, ua_next_byte(), 4); } break; case 0x84: case 0x94: case 0xA4: case 0xB4: case 0xC4: case 0xD4: case 0xE4: case 0xF4: { //BT sfr.bit, $addr16 0000 1010 1 B2 B1 B0 0100 Sfr-offset jdisp //BT PSW.bit, $addr16 0000 1010 1 B2 B1 B0 1000 0001 1110 jdisp cmd.itype = NEC_78K_0S_bt; uchar code3 = ua_next_byte(); if ( code3==0x1E ) { cmd.Op1.type = o_bit; cmd.Op1.reg = rPSW; cmd.Op1.value = (code2>>4)&0x07; jdisp(cmd.Op2, code3, 4); } else { cmd.Op1.type = o_bit; cmd.Op1.dtyp = dt_byte; cmd.Op1.addr = sfr(code3); cmd.Op1.value = (code2>>4) & 0x07; jdisp(cmd.Op2, ua_next_byte(), 4); } } break; case 0x08: case 0x18: case 0x28: case 0x38: case 0x48: case 0x58: case 0x68: case 0x78: { //BF saddr.bit, $addr16 0000 1010 0 B2 B1 B0 1000 Saddr-offset jdisp //BF PSW.bit, $addr16 0000 1010 0 B2 B1 B0 1000 0001 1110 jdisp cmd.itype = NEC_78K_0S_bf; uchar code3=ua_next_byte(); if ( code3==0x1E ) { cmd.Op1.type = o_bit; cmd.Op1.reg = rPSW; cmd.Op1.value = (code2>>4)&0x07; jdisp(cmd.Op2, ua_next_byte(), 4); } else { cmd.Op1.type = o_bit; cmd.Op1.dtyp = dt_byte; cmd.Op1.addr = saddr(code3); cmd.Op1.value = (code2>>4) & 0x07; jdisp(cmd.Op2, ua_next_byte(), 4); } } break;
int main ( int argc, char** argv ) { int golombM; int quant; if (argc != 3 && argc != 5) { usage(argc, argv); return -1; } if (argc == 5) { golombM = std::atoi(argv[3]); quant = std::atoi(argv[4]); } else { golombM = GOLOMB_ENC_M; quant = QUANTIZATION; } std::string finname(argv[1]); std::string foutname(argv[2]); SFReader sfr(finname); BitStream bs(foutname, BitStream::WRITE); MonkeyCoder pc(quant); if (sfr.open()) { printf("Unable to open file %s for reading!\n", argv[1]); return -1; } if (bs.open()) { printf("Unable to open file %s for writing!\n", argv[2]); return -1; } bs.writeBits((uint32_t)sfr.getNFrames(), 32); bs.writeBits((uint32_t)sfr.getSamplerate(), 32); bs.writeBits((uint32_t)sfr.getChannels(), 32); bs.writeBits((uint32_t)golombM, 32); bs.writeBits((uint32_t)quant, 32); if (sfr.open()) { printf("Unable to open file %s for reading!\n", argv[1]); return -1; } for (uint32_t i = 0; i < sfr.getNFrames(); i++) { int16_t sample[2]; int32_t diff[2]; sfr.nextFrame(sample); pc.encode(sample, diff); Golomb::encode(golombM, diff[0], bs); Golomb::encode(golombM, diff[1], bs); } sfr.close(); bs.close(); printf("Done! Encoded %u frames.\n", sfr.getNFrames()); }