#include <kernel.h>
#include <t_syslog.h>
#include <t_stdlib.h>

#include "kernel_cfg.h"
#include "led_onboard.h"
#include "syssvc/serial.h"

/* コントロールレジスタ */
#define PCCR2	((volatile unsigned short int *)(0xFFFE384A))
/* IOレジスタ */
#define PCIOR0	((volatile unsigned short int *)(0xFFFE3852))
/* データレジスタ */
#define PCDR0	((volatile unsigned short int *)(0xFFFE3856))

/*
 *  ボード上LEDの ON、OFF を切替えるタスク
 */
void bled_task(intptr_t exinf)
{
	while(1){
		slp_tsk();  /* このタスクを休止状態にする */
		
		/* 基板上のLEDの ON、OFF を切替える */
		if((*PCDR0 & 0x0100) == 0x0100){
			/* LEDを点灯 */
			*PCDR0 = *PCDR0 & 0xFEFF;
		}else{
			/* LEDを消灯 */
			*PCDR0 = *PCDR0 | 0x0100;	
		}
	}

	ext_tsk();
}

/*
 *  メインタスク
 */
void main_task(intptr_t exinf)
{
	/* PC8として使用 */
	*PCCR2 = *PCCR2 & 0xFFF0;		
	/* 出力として使用 */
	*PCIOR0= *PCIOR0 | 0x0100;		
	/* LEDを消灯 */
	*PCDR0 = *PCDR0 | 0x0100;		
	
	/* BLED_TASKの起動 */
	act_tsk(BLED_TASK);

	/* メインループ */
	do {
		dly_tsk(1000);
		wup_tsk(BLED_TASK);
	} while (1);

	assert(0);
}