Revert "Added defines for various CD structre values to replace magic numbers in code."
Was causing buggy SENS output
This reverts commit c054352b86.
This commit is contained in:
parent
c054352b86
commit
207eaff65f
4 changed files with 33 additions and 45 deletions
19
i2s.c
19
i2s.c
|
|
@ -27,10 +27,6 @@ extern volatile bool hasData;
|
|||
extern int *logical_track_to_sector;
|
||||
extern bool *is_data_track;
|
||||
extern mutex_t mechacon_mutex;
|
||||
extern uint8_t current_sens;
|
||||
|
||||
extern void set_sens_output(uint8_t sens_output);
|
||||
extern void set_sens_level(uint8_t sens_output, bool new_level);
|
||||
|
||||
|
||||
char SCExData[][44] = {
|
||||
|
|
@ -119,7 +115,7 @@ void i2s_data_thread() {
|
|||
logical_track_to_sector = malloc(sizeof(int)*(num_logical_tracks+2));
|
||||
is_data_track = malloc(sizeof(bool)*(num_logical_tracks+2));
|
||||
logical_track_to_sector[0] = 0;
|
||||
logical_track_to_sector[1] = CD_LEADIN_LENGTH;
|
||||
logical_track_to_sector[1] = 4500;
|
||||
|
||||
f_gets(buf, 128, &fil);
|
||||
while (1) {
|
||||
|
|
@ -149,7 +145,7 @@ void i2s_data_thread() {
|
|||
int ss = atoi(strtok(NULL, ":"));
|
||||
int ff = atoi(strtok(NULL, ":"));
|
||||
if (logical_track != 1) {
|
||||
logical_track_to_sector[logical_track] = mm*60*75 + ss*75 + ff + CD_TRACK1_START;
|
||||
logical_track_to_sector[logical_track] = mm*60*75 + ss*75 + ff + 4650;
|
||||
}
|
||||
printf("cue: %d %d %d %d\n", logical_track, mm, ss, ff);
|
||||
}
|
||||
|
|
@ -159,7 +155,7 @@ void i2s_data_thread() {
|
|||
if (FR_OK != fr && FR_EXIST != fr)
|
||||
panic("f_open(%s) error: (%d)\n", FRESULT_str(fr), fr);
|
||||
|
||||
logical_track_to_sector[num_logical_tracks+1] = f_size(&fil)/2352 + CD_TRACK1_START;
|
||||
logical_track_to_sector[num_logical_tracks+1] = f_size(&fil)/2352 + 4650;
|
||||
is_data_track[num_logical_tracks+1] = 0;
|
||||
is_data_track[0] = 0;
|
||||
|
||||
|
|
@ -186,8 +182,7 @@ void i2s_data_thread() {
|
|||
latched >>= 8;
|
||||
latched |= c << 16;
|
||||
}
|
||||
set_sens_output(latched >> 20);
|
||||
set_sens_level(current_sens, SENS_data[current_sens]);
|
||||
gpio_put(SENS, SENS_data[latched >> 20]);
|
||||
mutex_exit(&mechacon_mutex);
|
||||
}
|
||||
|
||||
|
|
@ -242,7 +237,7 @@ abort_psnee:
|
|||
}
|
||||
}
|
||||
int cacheHit = -1;
|
||||
int sector_to_search = sector_t < CD_TRACK1_START ? (sector_t % SECTOR_CACHE) + CD_TRACK1_START : sector_t;
|
||||
int sector_to_search = sector_t < 4650 ? (sector_t % SECTOR_CACHE) + 4650 : sector_t;
|
||||
for (int i=0; i<SECTOR_CACHE; i++) {
|
||||
if (cachedSectors[i] == sector_to_search) {
|
||||
cacheHit = i;
|
||||
|
|
@ -251,7 +246,7 @@ abort_psnee:
|
|||
}
|
||||
|
||||
if (cacheHit == -1) {
|
||||
uint64_t seek_bytes = (sector_to_search-CD_TRACK1_START)*2352LL;
|
||||
uint64_t seek_bytes = (sector_to_search-4650)*2352LL;
|
||||
if (seek_bytes >= 0) {
|
||||
fr = f_lseek(&fil, seek_bytes);
|
||||
if (FR_OK != fr) {
|
||||
|
|
@ -268,7 +263,7 @@ abort_psnee:
|
|||
roundRobinCacheIndex = (roundRobinCacheIndex + 1) % SECTOR_CACHE;
|
||||
}
|
||||
|
||||
if (sector_t >= CD_TRACK1_START) {
|
||||
if (sector_t >= 4650) {
|
||||
for (int i=0; i<CD_SAMPLES*2; i++) {
|
||||
uint32_t i2s_data;
|
||||
if (is_data_track[current_logical_track]) {
|
||||
|
|
|
|||
26
main.c
26
main.c
|
|
@ -42,7 +42,6 @@ int *logical_track_to_sector;
|
|||
bool *is_data_track;
|
||||
volatile int current_logical_track = 0;
|
||||
volatile int mode = 1;
|
||||
volatile uint8_t current_sens = 0;
|
||||
|
||||
bool SENS_data[16] = {
|
||||
0,0,0,0,0,
|
||||
|
|
@ -134,18 +133,6 @@ void initialize() {
|
|||
pio_enable_sm_mask_in_sync(pio1, (1u << SCOR_SM) | (1u << MECHACON_SM));
|
||||
}
|
||||
|
||||
void set_sens_output(uint8_t sens_output)
|
||||
{
|
||||
current_sens = sens_output;
|
||||
}
|
||||
|
||||
void set_sens_level(uint8_t sens_output, bool new_level)
|
||||
{
|
||||
SENS_data[sens_output] = new_level;
|
||||
if (sens_output == current_sens) {
|
||||
gpio_put(SENS, new_level);
|
||||
}
|
||||
}
|
||||
int main() {
|
||||
stdio_init_all();
|
||||
|
||||
|
|
@ -156,15 +143,14 @@ int main() {
|
|||
uint64_t subq_delay_time = 0;
|
||||
|
||||
while (true) {
|
||||
gpio_put(LMTSW, sector > CD_LIMIT_SW);
|
||||
gpio_put(LMTSW, sector > 3000);
|
||||
if (mutex_try_enter(&mechacon_mutex,0)) {
|
||||
while(!pio_sm_is_rx_fifo_empty(pio1, MECHACON_SM)) {
|
||||
uint c = reverseBits(pio_sm_get_blocking(pio1, MECHACON_SM),8);
|
||||
latched >>= 8;
|
||||
latched |= c << 16;
|
||||
}
|
||||
set_sens_output(latched >> 20);
|
||||
set_sens_level(current_sens, SENS_data[current_sens]);
|
||||
gpio_put(SENS, SENS_data[latched >> 20]);
|
||||
mutex_exit(&mechacon_mutex);
|
||||
}
|
||||
|
||||
|
|
@ -239,7 +225,7 @@ int main() {
|
|||
|
||||
if ((track - original_track) >= count_track) {
|
||||
original_track = track;
|
||||
set_sens_level(SENS_COUT, !SENS_data[SENS_COUT]);
|
||||
SENS_data[SENS_COUT] = !SENS_data[SENS_COUT];
|
||||
}
|
||||
}
|
||||
} else if (sled_move_direction == SLED_MOVE_REVERSE) {
|
||||
|
|
@ -250,11 +236,11 @@ int main() {
|
|||
sector_for_track_update = sector;
|
||||
if ((original_track - track) >= count_track) {
|
||||
original_track = track;
|
||||
set_sens_level(SENS_COUT, !SENS_data[SENS_COUT]);
|
||||
SENS_data[SENS_COUT] = !SENS_data[SENS_COUT];
|
||||
}
|
||||
}
|
||||
} else if (SENS_data[SENS_GFS]) {
|
||||
if (sector < CD_TRACK1_START && (time_us_64() - subq_start_time) > 13333) {
|
||||
if (sector < 4650 && (time_us_64() - subq_start_time) > 13333) {
|
||||
subq_start_time = time_us_64();
|
||||
start_subq();
|
||||
sector++;
|
||||
|
|
@ -277,7 +263,7 @@ int main() {
|
|||
}
|
||||
}
|
||||
|
||||
if (subq_delay && (sector >= CD_TRACK1_START && (time_us_64() - subq_delay_time) > 3333)) {
|
||||
if (subq_delay && (sector >= 4650 && (time_us_64() - subq_delay_time) > 3333)) {
|
||||
subq_delay = 0;
|
||||
start_subq();
|
||||
}
|
||||
|
|
|
|||
26
subq.c
26
subq.c
|
|
@ -32,15 +32,29 @@ void printf_subq(uint8_t *subqdata) {
|
|||
static inline void send_subq(uint8_t *subqdata) {
|
||||
subq_program_init(pio1, SUBQ_SM, subq_offset, SQSO, SQCK);
|
||||
pio_sm_set_enabled(pio1, SUBQ_SM, true);
|
||||
pio_sm_put_blocking(pio1, SUBQ_SM, (subqdata[3] << 24) | (subqdata[2] << 16) | (subqdata[1] << 8) | subqdata[0]);
|
||||
pio_sm_put_blocking(pio1, SUBQ_SM, (subqdata[7] << 24) | (subqdata[6] << 16) | (subqdata[5] << 8) | subqdata[4]);
|
||||
pio_sm_put_blocking(pio1, SUBQ_SM, (subqdata[11] << 24) | (subqdata[10] << 16) | (subqdata[9] << 8) | subqdata[8]);
|
||||
|
||||
uint sub1 = (reverseBits(subqdata[0],8) << 24) |
|
||||
(reverseBits(subqdata[1],8) << 16) |
|
||||
(reverseBits(subqdata[2],8) << 8) |
|
||||
(reverseBits(subqdata[3],8));
|
||||
uint sub2 = (reverseBits(subqdata[4],8) << 24) |
|
||||
(reverseBits(subqdata[5],8) << 16) |
|
||||
(reverseBits(subqdata[6],8) << 8) |
|
||||
(reverseBits(subqdata[7],8));
|
||||
uint sub3 = (reverseBits(subqdata[8],8) << 24) |
|
||||
(reverseBits(subqdata[9],8) << 16) |
|
||||
(reverseBits(subqdata[10],8) << 8) |
|
||||
(reverseBits(subqdata[11],8));
|
||||
pio_sm_put_blocking(pio1, SUBQ_SM, reverseBits(sub1,32));
|
||||
pio_sm_put_blocking(pio1, SUBQ_SM, reverseBits(sub2,32));
|
||||
pio_sm_put_blocking(pio1, SUBQ_SM, reverseBits(sub3,32));
|
||||
|
||||
pio_sm_put_blocking(pio1, SCOR_SM, 1);
|
||||
|
||||
}
|
||||
|
||||
void start_subq() {
|
||||
if (sector < CD_LEADIN_LENGTH) {
|
||||
if (sector < 4500) {
|
||||
int subq_entry = sector%(3+num_logical_tracks);
|
||||
|
||||
if (subq_entry == 0) {
|
||||
|
|
@ -58,7 +72,7 @@ void start_subq() {
|
|||
tracksubq[8] = 0x00;
|
||||
tracksubq[9] = 0x00;
|
||||
} else if (subq_entry == 2) {
|
||||
int sector_lead_out = logical_track_to_sector[num_logical_tracks+1] - CD_LEADIN_LENGTH;
|
||||
int sector_lead_out = logical_track_to_sector[num_logical_tracks+1] - 4500;
|
||||
tracksubq[0] = hasData ? 0x61 : 0x21;
|
||||
tracksubq[1] = 0x00;
|
||||
tracksubq[2] = 0xA2;
|
||||
|
|
@ -71,7 +85,7 @@ void start_subq() {
|
|||
if (logical_track == 1) {
|
||||
sector_track = 150;
|
||||
} else {
|
||||
sector_track = logical_track_to_sector[logical_track] - CD_LEADIN_LENGTH;
|
||||
sector_track = logical_track_to_sector[logical_track] - 4500;
|
||||
}
|
||||
tracksubq[0] = is_data_track[logical_track] ? 0x41 : 0x01;
|
||||
tracksubq[1] = 0x00;
|
||||
|
|
|
|||
7
values.h
7
values.h
|
|
@ -62,11 +62,4 @@
|
|||
#define PSNEE_SECTOR_LIMIT 4500
|
||||
#define SECTOR_CACHE 50
|
||||
|
||||
//
|
||||
// CD structure stuff
|
||||
#define CD_LEADIN_LENGTH 4500
|
||||
#define CD_PREGAP 150
|
||||
#define CD_TRACK1_START (CD_LEADIN_LENGTH+CD_PREGAP)
|
||||
#define CD_LIMIT_SW 3000
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue