static int dspio_get_output_sample(struct dspio_state *state, void *ptr, int is16bit) { if (rng_count(&state->fifo_out)) { if (is16bit) { rng_get(&state->fifo_out, ptr); } else { Bit16u tmp; rng_get(&state->fifo_out, &tmp); *(Bit8u *) ptr = tmp; } return 1; } return 0; }
real_t rng_uniform(rng_t* rng) { if (rng->vtable.uniform != NULL) return rng->vtable.uniform(rng->context); else return (real_t)(1.0 * rng_get(rng) / (rng->max + 1.0)); }
Bit8u dspio_get_midi_in_byte(void *dspio) { Bit8u val; int ret = rng_get(&DSPIO->midi_fifo_in, &val); assert(ret == 1); return val; }
static Bit8u dspio_get_midi_data(struct dspio_state *state) { Bit8u val; int ret = rng_get(&state->midi_fifo_out, &val); assert(ret == 1); return val; }
static int dspio_get_dma_data(struct dspio_state *state, void *ptr, int is16bit) { if (sb_get_dma_data(ptr, is16bit)) return 1; if (rng_count(&state->fifo_in)) { if (is16bit) { rng_get(&state->fifo_in, ptr); } else { Bit16u tmp; rng_get(&state->fifo_in, &tmp); *(Bit8u *) ptr = tmp; } return 1; } error("SB: input fifo empty\n"); return 0; }
STATIC mp_obj_t os_urandom(mp_obj_t num) { machine_int_t n = mp_obj_get_int(num); byte *data; mp_obj_t o = mp_obj_str_builder_start(&mp_type_bytes, n, &data); for (int i = 0; i < n; i++) { data[i] = rng_get(); } return mp_obj_str_builder_end(o); }
STATIC mp_obj_t os_urandom(mp_obj_t num) { mp_int_t n = mp_obj_get_int(num); vstr_t vstr; vstr_init_len(&vstr, n); for (int i = 0; i < n; i++) { vstr.buf[i] = rng_get(); } return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); }
uint32_t rng_uniform_int(rng_t* rng, uint32_t n) { if (rng->vtable.uniform_int != NULL) return rng->vtable.uniform_int(rng->context, n); else { uint32_t reduction_factor = rng->max / n; return rng_get(rng) / reduction_factor; } }