void log_send_ack(msg t) { int logfd = open("log.txt", O_WRONLY|O_APPEND); char *time_buffer = getTime(); char mes[100]; if (time_buffer != NULL) { sprintf(mes, "[%s] [receiver] Trimit ACK:\n", time_buffer); write(logfd, mes, strlen(mes)); sprintf(mes, "Seq No: %d\n", t.payload[0]); write(logfd, mes, strlen(mes)); sprintf(mes, "Checksum: %s\n", getBitString(t.payload[t.len - 1])); write(logfd, mes, strlen(mes)); write(logfd, DELIM, strlen(DELIM)); free(time_buffer); } close(logfd); }
std::bitset<26> Instruction::jmp_offset(){ return std::bitset<26>( getBitString( 25, 0 ) ); }
std::bitset<6> Instruction::funct(){ return std::bitset<6>( getBitString( 5, 0 ) ); }
std::bitset<16> Instruction::imm(){ return std::bitset<16>( getBitString( 15, 0 ) ); }
std::bitset<5> Instruction::shamt(){ return std::bitset<5>( getBitString( 10, 6 ) ); }
std::bitset<5> Instruction::rd(){ return std::bitset<5>( getBitString( 15, 11 ) ); }
std::bitset<5> Instruction::rt(){ return std::bitset<5>( getBitString( 20, 16 ) ); }
std::bitset<5> Instruction::rs(){ return std::bitset<5>( getBitString( 25, 21 ) ); }
// Access the different fields std::bitset<6> Instruction::opcode() { return std::bitset<6>( getBitString( 31, 26 ) ); }