Exemplo n.º 1
0
Arquivo: echo.c Projeto: monaka/B-Free
/*****************************************************************************
 * init_echo 
 *
 * 引数:
 *	なし
 *
 * 返り値:
 *	エラー番号
 *	E_OK	正常終了
 *
 * 機能:
 *
 *
 */
ER
init_echo (void)
{
  ER		err;
  T_CTSK	pktsk;

  err = def_dev (L"ECHO", CHAR, ANY_DEVICE, &deviceid);
  if (err != E_OK)
    {
      printf ("cannot initialize for echo device. err = %d\n", err);
      return (err);
    }

  DPRINTF(("init_echo: setup\n"));

  pktsk.tskatr = TA_HLNG;
  pktsk.startaddr = echo_server;
  pktsk.itskpri = 1;
  pktsk.stksz = PAGE_SIZE * 2;
  pktsk.addrmap = NULL;
  err = new_task (&pktsk, &taskid, TRUE);
  if (err != E_OK)
    {
      printf ("cannot create task for echo. err = %d\n", err);
      return (err);
    }
  printf ("echo: TASK ID = %d\n", taskid);
  return (E_OK);
}
Exemplo n.º 2
0
// Pre-define devices. B.A. : Return value change from void to int 
int predef_dev(struct prog_info *pi) 
{
	int i;
	char temp[MAX_DEV_NAME+1];
	def_dev(pi);
	for (i=0;(!i)||(device_list[i].name);i++) {
		strncpy(temp,DEV_PREFIX,MAX_DEV_NAME);
		if (!i) strncat(temp,DEF_DEV_NAME,MAX_DEV_NAME);
		else strncat(temp,device_list[i].name,MAX_DEV_NAME);
		strncat(temp,DEV_SUFFIX,MAX_DEV_NAME);
		/* B.A. : New. Forward references allowed. But check, if everything is ok ... */
		if(pi->pass==PASS_1) { /* Pass 1 */
      if(test_constant(pi,temp,NULL)!=NULL) {
        fprintf(stderr,"Error: Can't define symbol %s twice. Please don't use predefined symbols !\n", temp);
        return(False);
      }
      if(def_const(pi, temp, i)==False)
        return(False);
	  } else { /* Pass 2 */
			int j;
			if(get_constant(pi, temp, &j)==False) {   /* Defined in Pass 1 and now missing ? */
   	    fprintf(stderr,"Constant %s is missing in pass 2\n",temp);
 	      return(False);
			}
		  if(i != j) {
 	      fprintf(stderr,"Constant %s changed value from %d in pass1 to %d in pass 2\n",temp,j,i);
 	      return(False);
			}
			/* OK. definition is unchanged */
	  }
	}
	return(True);
}
Exemplo n.º 3
0
/*****************************************************************************
 * init_gdc7220 --- PD7220 の初期化
 *
 * 引数:
 *	なし
 *
 * 返り値:
 *	エラー番号
 *	E_OK	正常終了
 *
 * 機能:
 *	グラフィック GDC の初期化を行う。
 *	画面設定する:
 *	  サイズ:	640x400
 *	  カラー数:	16 Color
 *
 *
 * 処理概要:
 *	1. RESETコマンドの発行
 *	2. 動作モードの選択 
 *	3. 表示の開始
 *
 *	4. ドライバ登録の実行
 *
 */
ER
init_pd7220 (void)
{
  ER	err;
  T_CTSK	pktsk;

/*  err = gdc_reset ();
  CHK_ERR;
  err = gdc_sync (MODE_DISP, 80, 0x08, 0x07, 0, 0, 0, 400, 0);
  CHK_ERR;
*/
  gdc_display ();

  err = def_dev (L"DSP", CHAR, ANY_DEVICE, &deviceid);
  if (err != E_OK)
    {
      printf ("cannot initialize for PD7220 device. err = %d\n", err);
      return (err);
    }
  pktsk.tskatr = TA_HLNG;
  pktsk.startaddr = gdc_server;
  pktsk.itskpri = 1;
  pktsk.stksz = PAGE_SIZE * 2;
  pktsk.addrmap = NULL;
  err = new_task (&pktsk, &taskid, TRUE);
  if (err != E_OK)
    {
      printf ("cannot create task for PD7220. err = %d\n", err);
      return (err);
    }
  printf ("PD7220: TASK ID = %d\n", taskid);
  return (E_OK);
}
Exemplo n.º 4
0
struct device *get_device(struct prog_info *pi, char *name)
{
	int i = 1;

    LastDevice = 0;
	if(name == NULL) {
        def_dev(pi);
	    return(&device_list[0]);
	}
	while(device_list[i].name) {
		if(!nocase_strcmp(name, device_list[i].name)) {
			LastDevice=i;
            def_dev(pi);
			return(&device_list[i]);
		}
		i++;
	}
	def_dev(pi);
	return(NULL);
}