/** * Hangs up the modem if user online. Whether using modem or not, sets * hangup to 1. */ void hang_it_up() { hangup = true; #if !defined( __unix__ ) && !defined( __APPLE__ ) if (!ok_modem_stuff) { return; } GetSession()->remoteIO()->dtr(false); if (!GetSession()->remoteIO()->carrier()) { return; } wait1(9); if (!GetSession()->remoteIO()->carrier()) { return; } wait1(9); if (!GetSession()->remoteIO()->carrier()) { return; } int i = 0; GetSession()->remoteIO()->dtr(true); while (i++ < 2 && GetSession()->remoteIO()->carrier()) { wait1(27); rputs("\x1\x1\x1"); wait1(54); rputs((modem_i->hang[0]) ? modem_i->hang : "ATH\r"); wait1(6); } GetSession()->remoteIO()->dtr(true); #endif }
extern "C" int main(int argc, char *argv[]) { checkpointNext("Normal (FIFO):"); { SceUID fpl = sceKernelCreateFpl("fpl", PSP_MEMORY_PARTITION_USER, 0, 0x100, 1, NULL); void *data; sceKernelAllocateFpl(fpl, &data, NULL); FplWaitThread wait1("waiting thread 1", fpl, NO_TIMEOUT, 300, 0x30); FplWaitThread wait2("waiting thread 2", fpl, NO_TIMEOUT, 300, 0x34); FplWaitThread wait3("waiting thread 3", fpl, NO_TIMEOUT, 300, 0x31); sceKernelFreeFpl(fpl, data); schedfFpl(fpl); sceKernelDelayThread(200000); sceKernelDeleteFpl(fpl); } checkpointNext("Priority:"); { SceUID fpl = sceKernelCreateFpl("fpl", PSP_MEMORY_PARTITION_USER, PSP_FPL_ATTR_PRIORITY, 0x100, 1, NULL); void *data; sceKernelAllocateFpl(fpl, &data, NULL); FplWaitThread wait1("waiting thread 1", fpl, NO_TIMEOUT, 300, 0x30); FplWaitThread wait2("waiting thread 2", fpl, NO_TIMEOUT, 300, 0x34); FplWaitThread wait3("waiting thread 3", fpl, NO_TIMEOUT, 300, 0x31); sceKernelFreeFpl(fpl, data); schedfFpl(fpl); sceKernelDelayThread(200000); sceKernelDeleteFpl(fpl); } return 0; }
void lcd_init(void) { wait3(); /*15msウエイト*/ lcdwriteinit( 0x03 ); /*LCDファンクションセット*/ wait2(); /*4.1msウエイト*/ lcdwriteinit( 0x03 ); /*LCDファンクションセット*/ wait1(); /*0.1msウエイト*/ lcdwriteinit( 0x03 ); /*LCDファンクションセット*/ wait1(); lcdwriteinit( 0x02 ); /*LCDデータを4ビット長に設定*/ wait1(); lcdwrite1command(0x28); /*4bit、2行文、5×7ドットに設定*/ wait1(); /* ここまでで4ビット×2回のデータ転送ができるように設定されたので この後はビジーチェックをしてからデータ転送を行なう。 */ while(BUSY == lcdbusycheck()) /*LCDビジーチェック*/ ; lcdwrite1command(0x08); /*表示オフ*/ while(BUSY == lcdbusycheck()) /*LCDビジーチェック*/ ; lcdwrite1command(0x01); /*表示クリア*/ while(BUSY == lcdbusycheck()) /*LCDビジーチェック*/ ; lcdwrite1command(0x06); /*エントリーモード、インクリメント*/ while(BUSY == lcdbusycheck()) /*LCDビジーチェック*/ ; lcdwrite1command(0x0c); /*表示オン、カーソルオフ*/ }
void main() { // set all pins of PORTB as output DDRB = 0xff; // toggle PORTB every 500ms (using 16Mhz clock) while(1) { toggle(); wait1(TIMER1_PRESCALER_1024, 7812U); } }