コード例 #1
0
ファイル: cw.c プロジェクト: adilinden/repeater-controller
/* code2snd
 * Takes string of . and - and turns them into audible tones. Typically
 * this will be one letter.
 * Requires prepared global variables:
 *   fd                 - file descriptor for DSP device
 *   ditbf, nditbf      - dit buffer and dit buffer length
 *   dahbf, ndahbf      - dah buffer and dit buffer length
 *   sgapbf, nsgapbf    - short gap buffer and dit buffer length
 *   lgapbf, nlgapbf    - long gap b uffer and dit buffer length
 */
void code2snd(char *cd)
{
    char    ch, w;

    setbuf(stdout, NULL);
    while ((ch = *cd++) != '\0') {
        /* Send dit or dah tone, or space */
        if (ch == '.') {
            w = sound_write(&ditbf, &nditbf, outp);
            if (verbose) fprintf(stderr, ".");
        }
        if (ch == '-') {
            w = sound_write(&dahbf, &ndahbf, outp);
            if (verbose) fprintf(stderr, "-");
        }
        if (ch == 'S') {
            /* Send word gap (7 dit). Note that each element is followed
             * by a short gap (1 dit) and also by the letter gap (3 dit).
             * This means we only need a single long gap here to accomplish
             * the 7 dit gap.
             */
            w = sound_write(&lgapbf, &nlgapbf, outp);
            if (verbose) fprintf(stderr, "  ");
        }
        /* Send inter-element gap (1 dit) */
        w = sound_write(&sgapbf, &nsgapbf, outp);
    }
    /* Send letter gap */
    w = sound_write(&lgapbf, &nlgapbf, outp);
    if (verbose) fprintf(stderr, " ");
}
コード例 #2
0
ファイル: intercom.c プロジェクト: ClusterM/intercom
int answer_record(char* filename1, char* filename2, char use_beep) // Отвечает, записывает сообщение,
{
	if (answer_play(filename1)) return 1; // Отвечаем, предлагаем оставить сообщение
	if (use_beep) beep(3000, 500);	// Биип
	sprintf(buffer, "/%08lu.wav", record_num); // Формируем имя файла
	clunet_send(CLUNET_BROADCAST_ADDRESS, CLUNET_PRIORITY_INFO, CLUNET_COMMAND_INTERCOM_MESSAGE, (char*)&record_num, sizeof(record_num)); // Отправляем в сеть сообщение
	record_num++;
	eeprom_write_dword((void*)0, record_num); // Запоминаем кол-во записей
	if (rec_wav(buffer) == 0) // Пишем сообщение
	{
		int s = 0;
		long int totalSize = 0;
		while (s >= 0 && totalSize < 8000UL*RECORD_MAX_LENGTH)
		{
			s = sound_write();
			totalSize += s;
			if (!LINE_POWER || OFFHOOK) // Сняли трубку, или сигнал исчез
			{
				sound_stop();
				return 1;
			}
		}
		sound_stop();
	}	
	if (play_wav_pgm(filename2) == 0) // Если пациент дождался, благодарим
	{
		while (sound_read() >= 0)
		{
			if (!LINE_POWER || OFFHOOK) // Сняли трубку, или сигнал исчез
			{
				sound_stop();
				return 1;
			}
		}
		sound_stop();
	}
	return 0;
}
コード例 #3
0
ファイル: io.c プロジェクト: mrzzzrm/mooboy
void io_write(u16 adr, u8 val) {
    u8 reg = adr & 0x00FF;

    switch(reg) {
        case 0x00: joy_select_col(val); break;

        case 0x01: /*serial.sb = val;*/  break;
        case 0x02: /*serial_sc_write(val);*/ break;

        case 0x04: timers.div = 0x00; break;
        case 0x05: timers.tima = val; break;
        case 0x06: timers.tma = val; break;
        case 0x07: timers_tac(val & 0x07); break;
        case 0x0F: cpu.irq = val & 0x1F; break;

        case 0x10: case 0x11: case 0x12: case 0x13:
        case 0x14: case 0x16: case 0x17: case 0x18:
        case 0x19: case 0x1A: case 0x1B: case 0x1C:
        case 0x1D: case 0x1E: case 0x20: case 0x21:
        case 0x22: case 0x23: case 0x24: case 0x25:
        case 0x26: case 0x30: case 0x31: case 0x32:
        case 0x33: case 0x34: case 0x35: case 0x36:
        case 0x37: case 0x38: case 0x39: case 0x3A:
        case 0x3B: case 0x3C: case 0x3D: case 0x3E:
        case 0x3F:
            sound_write(reg, val);
        break;

        case 0x15: case 0x1F: break;

        case 0x40: lcd_c_write(val); break;
        case 0x41: lcd.stat = (lcd.stat & 0x87) | (val & 0x78); break;
        case 0x42: lcd.scy = val; break;
        case 0x43: lcd.scx = val; break;
        case 0x44: lcd_reset_ly(); break;
        case 0x45: lcd_set_lyc(val); break;
        case 0x46: lcd_dma(val); break;
        case 0x47: lcd_dmg_palette_data(&lcd.bgp, val, 0); break;
        case 0x48: lcd_dmg_palette_data(&lcd.obp, val, 0); break;
        case 0x49: lcd_dmg_palette_data(&lcd.obp, val, 1); break;
        case 0x4A: lcd.wy = val; break;
        case 0x4B: lcd.wx = val; break;

        case 0x4D: cpu.freq_switch = val & 0x01;  break;

        case 0x4F: ram.selected_vrambank = val & 0x01; break;

        case 0x51: lcd.hdma_source = (lcd.hdma_source & 0x00FF) | (val << 8); break;
        case 0x52: lcd.hdma_source = (lcd.hdma_source & 0xFF00) | (val & 0xF0); break;
        case 0x53: lcd.hdma_dest = (lcd.hdma_dest & 0x80FF) | ((val & 0x1F) << 8); break;
        case 0x54: lcd.hdma_dest = (lcd.hdma_dest & 0xFF00) | (val & 0xF0); break;
        case 0x55: lcd_hdma_control(val); break;

        case 0x56: break;

        case 0x68: lcd_palette_control(&lcd.bgp, val); break;
        case 0x69: lcd_cgb_palette_data(&lcd.bgp, val); break;
        case 0x6A: lcd_palette_control(&lcd.obp, val); break;
        case 0x6B: lcd_cgb_palette_data(&lcd.obp, val); break;

        case 0x70:
            ram.rambank_index = (val & 0x07) != 0 ? val & 0x07 : 0x01;
            ram.rambank = ram.rambanks[ram.rambank_index];
        break;

        default:;
#ifdef DEBUG
            printf("Unknown IO write: %.2X=%.2X\n", reg, val);
#endif
    }
}