RADIO_RX_STATUS Radio_Receive(radiopacket_t* buffer) { uint8_t len = 32; uint8_t status; uint8_t pipe_number; uint8_t doMove = 1; RADIO_RX_STATUS result; transmit_lock = 0; RADIO_CE_LOW(); status = _get_status(); pipe_number = (status & 0xE) >> 1; if (pipe_number == RADIO_PIPE_EMPTY) { result = RADIO_RX_FIFO_EMPTY; doMove = 0; } if (rx_pipe_widths[pipe_number] > len) { // the buffer isn't big enough, so don't copy the data. result = RADIO_RX_INVALID_ARGS; doMove = 0; } if (doMove) { // Move the data payload into the local send_instruction(R_RX_PAYLOAD, (uint8_t*)buffer, (uint8_t*)buffer, rx_pipe_widths[pipe_number]); status = _get_status(); pipe_number = (status & 0xE) >> 1; if (pipe_number != RADIO_PIPE_EMPTY) result = RADIO_RX_MORE_PACKETS; else result = RADIO_RX_SUCCESS; } RADIO_CE_HIGH(); transmit_lock = 0; return result; }
static gboolean _get_played_time (int *played_time) { ol_assert_ret (played_time != NULL, FALSE); if (!_ensure_connection ()) return FALSE; int muine_time = 0; if (!ol_dbus_get_int (proxy, GET_POSITION, &muine_time)) return FALSE; muine_time *= 1000; _ensure_elapse (muine_time); enum OlPlayerStatus status = _get_status (); if (status == OL_PLAYER_PLAYING) *played_time = ol_elapse_emulator_get_real_ms (elapse_emulator, muine_time); else if (status == OL_PLAYER_PAUSED) *played_time = ol_elapse_emulator_get_last_ms (elapse_emulator, muine_time); else *played_time = 0; return TRUE; }
static gboolean _get_played_time (int *played_time) { ol_assert_ret (played_time != NULL, FALSE); if (!_ensure_dbus ()) return FALSE; int juk_time; if (!ol_dbus_get_int (proxy, CURRENT_TIME, &juk_time)) return FALSE; juk_time *= 1000; _ensure_elapse (juk_time); enum OlPlayerStatus status = _get_status (); if (status == OL_PLAYER_PLAYING) *played_time = ol_elapse_emulator_get_real_ms (elapse_emulator, juk_time); else if (status == OL_PLAYER_PAUSED) *played_time = ol_elapse_emulator_get_last_ms (elapse_emulator, juk_time); else *played_time = 0; return TRUE; }
int d2save_get_expansion(d2save_t d2s, int *val) { return _get_status(d2s, STATUSBIT_EXPANSION, val); }
int d2save_get_hardcore(d2save_t d2s, int *val) { return _get_status(d2s, STATUSBIT_HARDCORE, val); }
int d2save_get_died(d2save_t d2s, int *val) { return _get_status(d2s, STATUSBIT_DIED, val); }