亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dps2spc3.c

?? profibus通信協議
?? C
?? 第 1 頁 / 共 2 頁
字號:
#define RBL_PRM                 0
#define RBL_CFG                 1
#define RBL_SSA                 2



   enum SPC3_INIT_RET dps2_buf_init( DPS2_BUFINIT
    *dps2_bptr,  UBYTE fdl_init,  UBYTE spec_prm)
   {
	  UBYTE real_buf_len[ASS_AUX_BUF];
	  WORD  aux_buf_len[2];      /* calculated lens of AUX-buffers */
	  UBYTE aux_ass;             /* var. for AUX-buffer-assignment */
	  WORD  r_din_dout_buf_len;  /* var. for real IO-data-lens */
	  UBYTE *spc_uptr;           /* helppointer, 'cos of C166 compiler */
	  //volatile UBYTE *b_ptr;  //      *b_ptr
	  
	  enum SPC3_INIT_RET ret = SPC3_INIT_OK;
      
	  //b_ptr = &spc3.user[0];
	  
	  dps2_buf_len = 0;

	  if (SPC3_GET_OFF_PASS())
	  {
		 return SPC3_INITF_NOFF; /*==== END: SPC3 is not Offline ====*/
	  }
	  dps2_binit = *dps2_bptr;    /* store init-data */
	  
	 // dps2_base_ptr = &spc3.user[0];      // start of memory 
      
	  dps2_base_ptr = (UBYTE *)&spc3.user;

	  
	  if(dps2_binit.din_dout_buf_len > 488)
	  {
		 ret = DPS2_INITF_DIN_DOUT_LEN;
	  }
	  if((dps2_binit.diag_buf_len < 6) || (dps2_binit.diag_buf_len > 244))
	  {
		 ret = DPS2_INITF_DIAG_LEN;
	  }
	  if((dps2_binit.prm_buf_len < 7) || (dps2_binit.prm_buf_len > 244))
	  {
		 ret = DPS2_INITF_PRM_LEN;
	  }
	  if((dps2_binit.cfg_buf_len < 1) || (dps2_binit.cfg_buf_len > 244))
	  {
		 ret = DPS2_INITF_PRM_LEN;
	  }
	  if(dps2_binit.ssa_buf_len == 0)
	  {
		 DPS2_SET_ADD_CHG_DISABLE()
	  }
	  else
	  {
		 /* SSA-buffer is used */
		 if((dps2_binit.ssa_buf_len < 4) || (dps2_binit.ssa_buf_len > 244))
		 {
			ret = DPS2_INITF_SSA_LEN;
		 }
	  }
	  if(ret != SPC3_INIT_OK)
	  {
		 /* error occured */
		 dps2_buf_len = 0;     /* no memory used */
		 return ret;           /*===== T H E   E N D =====*/
	  }
	  /* Bufferlens seem to be ok --> calculate total amount of memory */
	  if(spec_prm)
	  {
		 real_buf_len[RBL_PRM] = 0; /* Prm. via AUX */
	  }
	  else
	  {
		 real_buf_len[RBL_PRM] = dps2_binit.prm_buf_len;
	  }
	  real_buf_len[RBL_CFG] = dps2_binit.cfg_buf_len;
	  real_buf_len[RBL_SSA] = dps2_binit.ssa_buf_len;
	  dps2_buf_len = assign_aux_buf(real_buf_len, sizeof(real_buf_len), &aux_ass, aux_buf_len);
	  dps2_buf_len += real_buf_len[RBL_CFG]; /* wg. Read-Config */
	  /* amount for IO-data, diagnosticbuffer and spec.Prm.buffer */
	  r_din_dout_buf_len = (dps2_binit.din_dout_buf_len + 7) & 0xfff8;
	  dps2_buf_len += ((dps2_binit.diag_buf_len + 7) & 0xf8) * 2;

	  if(spec_prm)
	  {
		 /* spec_prm-buffer is used */
		 real_buf_len[RBL_PRM] = (dps2_binit.prm_buf_len + 7) & 0xf8;
		 dps2_buf_len += real_buf_len[RBL_PRM];
		 spc3.r_len_spec_prm_buf = dps2_binit.prm_buf_len;
	  }
	  else
	  {
		 spc3.r_len_spec_prm_buf = 0;
	  }
	  dps2_buf_len += r_din_dout_buf_len * 3;

	  if(dps2_buf_len > sizeof(spc3.user))
	  {
		 /* not enough memory */
		 dps2_buf_len = 0;
		 dps2_base_ptr = 0;
		 return SPC3_INITF_LESS_MEM;
	  }
	  /* arm the pointers */
	  spc3.r_aux_buf_sel = aux_ass;   /* assign AUX-buffers */
	  spc3.r_diag_buf_ptr[0] = SPC3_BUF_START + ((r_din_dout_buf_len * 3)>>3);
	  spc3.r_diag_buf_ptr[1] = spc3.r_diag_buf_ptr[0] + (((
	  dps2_binit.diag_buf_len + 7) & 0xf8)>>3);
	  spc3.r_cfg_buf_ptr = spc3.r_diag_buf_ptr[1] + (((dps2_binit.diag_buf_len +
	   7) & 0xf8)>>3);
	  spc3.r_read_cfg_buf_ptr = spc3.r_cfg_buf_ptr + (real_buf_len[RBL_CFG]>>3);
	  spc3.r_prm_buf_ptr = spc3.r_read_cfg_buf_ptr + (real_buf_len[RBL_CFG]>>3);
	  spc3.r_aux_buf_ptr[0] = spc3.r_prm_buf_ptr + (real_buf_len[RBL_PRM]>>3);
	  spc3.r_aux_buf_ptr[1] = spc3.r_aux_buf_ptr[0] + (aux_buf_len[0]>>3);

	  if(real_buf_len[RBL_SSA] == 0)
	  {
		 /* SSA not supported */
		  spc3.r_ssa_buf_ptr = 0;
	  }
	  else
	  {
		 /* SSA supported */
		  spc3.r_ssa_buf_ptr = spc3.r_aux_buf_ptr[1] + (aux_buf_len[1]>>3);
	  }

	  /* set buffer-lens */
	  spc3.r_len_diag_buf[0] = spc3.r_len_diag_buf[1] = 6;
	  spc3.r_len_cfg_buf = dps2_binit.cfg_buf_len;
	  spc3.r_len_prm_buf = dps2_binit.prm_buf_len;
	  spc3.r_len_cntrl_buf[0] = aux_buf_len[0];
	  spc3.r_len_cntrl_buf[1] = aux_buf_len[1];
	  spc3.r_len_ssa_buf = dps2_binit.ssa_buf_len;
	  spc3.r_len_din_buf = spc3.r_len_dout_buf = 0;
	  /* init buffers */
	  spc_uptr = (UBYTE *)&spc3.user;

	  for(r_din_dout_buf_len = 0; r_din_dout_buf_len < dps2_buf_len;r_din_dout_buf_len++)
	  {
		  *(spc_uptr + r_din_dout_buf_len) = 0;
	  }
	  if(fdl_init)
	  {
		 /* no buffers for FDL */
		 spc3.r_fdl_sap_list_ptr = SPC3_BUF_START + (dps2_buf_len>>3);
		 (*((UBYTE *)((SPC3_ADTYP)(((UWORD)(spc3.r_fdl_sap_list_ptr
		 ))<<3) + (SPC3_ADTYP)&spc3)) ) = 0xff;
		 dps2_buf_len += 8;    /* 8 Byte durch leere FDL-Liste verbraucht */
		 /* DDB not supported */
		 spc3.r_len_ddbout_buf = 0;
		 spc3.r_ddbout_buf_ptr = 0;
		 spc3.r_len_ddb_prm_buf = 0;
		 spc3.r_ddb_prm_buf_ptr = 0;
	  }
	  return ret;
   }

   /*
   +------------------------------------------------------------------------+
   | Function:   d p s 2 _ g e t _ f r e e _ m e m ( )                      |
   +------------------------------------------------------------------------+
   | Description:                                                           |
   |  This function returns a pointer to the first free byte above the      |
   |  DPS2-buffers. The count of free bytes is written to the pointer.      |
   +------------------------------------------------------------------------+
   | Parameters:                                                            |
   |  -buf_len: pointer to len-variable                                     |
   |                                                                        |
   | Returncode:                                                            |
   |  -Pointer to first free byte                                           |
   +------------------------------------------------------------------------+
   */

   /*
   UBYTE * dps2_get_free_mem(WORD  *buf_len)
   {
	  if(dps2_buf_len)
	  {
		 //pointer to first free byte 
		 *buf_len = sizeof(SPC3) -  (dps2_base_ptr - (UBYTE *)&spc3
		 ) - dps2_buf_len;
		 return dps2_base_ptr + dps2_buf_len;
	  }
	  else
	  {
		 // not correctly initialized: Error 
		 *buf_len = 0;
		 return SPC3_NIL;
	  }
   }
*/
   

   /*
   +------------------------------------------------------------------------+
   | Function:   d p s 2 _ s e t _ i o _ d a t a _ l e n ( )                |
   +------------------------------------------------------------------------+
   | Description:                                                           |
   |  The lens are checked against the initialization-lens. If they are     |
   |  correct, the pointers and lens in the SPC3 are armed.                 |
   +------------------------------------------------------------------------+
   | Parameters:                                                            |
   |  -len_ptr: pointer to len-structure                                    |
   |                                                                        |
   | Returncode:                                                            |
   |  TRUE:  ok                                                             |
   |  FALSE: len-mismatch                                                   |
   +------------------------------------------------------------------------+
   */
   UBYTE dps2_set_io_data_len(DPS2_IO_DATA_LEN  *len_ptr)
   {
	  UBYTE ri_len, ro_len;   /* real lens */
	  UBYTE ri_off;           /* input-buffer-offset */
	  UBYTE i;

	  if(len_ptr->outp_data_len > 244)
	  {
		 return FALSE;
	  }
	  if(len_ptr->inp_data_len > 244)
	  {
		 return FALSE;
	  }
	  if((UWORD)len_ptr->inp_data_len + (UWORD)len_ptr->outp_data_len >
	  dps2_binit.din_dout_buf_len)
	  {
		 return FALSE;
	  }
	  /*-- lens correkt, arm buffers --*/
	  spc3.r_len_dout_buf = len_ptr->outp_data_len;
	  spc3.r_len_din_buf = len_ptr->inp_data_len;
	  ro_len = ((len_ptr->outp_data_len) + 7) >> 3;
	  ri_len = ((len_ptr->inp_data_len) + 7) >> 3;

	  for(i = 0; i < sizeof(spc3.r_dout_buf_ptr); i++)
	  {
		 spc3.r_dout_buf_ptr[i] = SPC3_BUF_START + ro_len * i;
	  }
	  ri_off = ro_len * sizeof(spc3.r_dout_buf_ptr);

	  for(i = 0; i < sizeof(spc3.r_din_buf_ptr); i++)
	  {
		 spc3.r_din_buf_ptr[i] = SPC3_BUF_START + ri_off + ri_len * i;
	  }
	  return TRUE;
   }
 
   /*
   +------------------------------------------------------------------------+
   | Function:   d p s 2 _ c f g _ d a t a _ o k ( )                        |
   +------------------------------------------------------------------------+
   | Description:                                                           |
   |  New config-data is marked as ok.                                      |
   +------------------------------------------------------------------------+
   | Parameters: -                                                          |
   |                                                                        |
   | Returncode:                                                            |
   |  UBYTE: DPS2_CFG_FINISHED: ok                                          |
   |         DPS2_CFG_CONFLICT: data overridden while check                 |
   +------------------------------------------------------------------------+
   */
   UBYTE dps2_cfg_data_ok(void)
   {
	  spc3.x1.w.mode_reg1_r = EN_CHG_CFG_BUFFER;
	  return spc3.user_cfg_data_ok;
   }
 
   /*
   +------------------------------------------------------------------------+
   | Function:   d p s 2 _ c f g _ d a t a _ u p d a t e ( )                |
   +------------------------------------------------------------------------+
   | Description:                                                           |
   |  see dps2_cfg_data_ok(), additional there are new cfg-data.            |
   +------------------------------------------------------------------------+
   | Parameters: -                                                          |
   |                                                                        |
   | Returncode: see dps2_cfg_data_ok()                                     |
   +------------------------------------------------------------------------+
   */
   UBYTE dps2_cfg_data_update(void)
   {
	  spc3.x1.w.mode_reg1_s = EN_CHG_CFG_BUFFER;
	  spc3.r_len_read_cfg_buf = spc3.r_len_cfg_buf;
	  return spc3.user_cfg_data_ok;
   }

   /*
   +------------------------------------------------------------------------+
   | Function:   d p s 2 _ c f g _ d a t a _ n o t _ o k ( )                |
   +------------------------------------------------------------------------+
   | Description:                                                           |
   |  See dps2_cfg_data_ok(), but config-data is not correct.               |
   +------------------------------------------------------------------------+
   | Parameters: -                                                          |
   |                                                                        |
   | Returncode: see dps2_cfg_data_ok()                                     |
   +------------------------------------------------------------------------+
   */
   UBYTE dps2_cfg_data_not_ok(void)
   {
	  spc3.x1.w.mode_reg1_r = EN_CHG_CFG_BUFFER;
	  return spc3.user_cfg_data_nok;
   }
  
   /*
   +------------------------------------------------------------------------+
   | Function:   d p s 2 _ o u t p u t _ u p d a t e _ s t a t e ( )        |
   +------------------------------------------------------------------------+
   | Description:                                                           |
   |  This function causes the output-update. The state is returned.        |
   +------------------------------------------------------------------------+
   | Parameters:                                                            |
   |  -state_ptr: pointer to state-value                                    |
   |                                                                        |
   | Returncode:                                                            |
   |  void*: pointer to output-buffer                                       |
   +------------------------------------------------------------------------+
   */

/*
   void * dps2_output_update_state(UBYTE  *state_ptr
   )
   {
	  UBYTE temp;

	  temp = spc3.x1.r.next_dout_buf_cmd;
	  *state_ptr = temp & (NEW_DOUT_BUF | DOUT_BUF_CLEARED);
	  return (void *)
			  ((((SPC3_ADTYP)(spc3.r_dout_buf_ptr[(temp & 0x03)-1]))<<3)\
			  + (SPC3_ADTYP)&spc3);
   }
*/
 

   /*
   +------------------------------------------------------------------------+
   | Function:   d p s 2 _ d i a g _ u p d a t e ( )                        |
   +------------------------------------------------------------------------+
   | Description:                                                           |
   |   This function causes the diagnostic-update in the SPC3.              |
   +------------------------------------------------------------------------+
   | Parameter:                                                             |
   |                                                                        |
   | Returncode:                                                            |
   |  -pointer to new diagnostic-buffer, if available; else 0               |
   +------------------------------------------------------------------------+
   */
   void * dps2_diag_update(void)
   {
	  UBYTE temp;

	  temp = spc3.new_diag_buffer_cmd & 0x03;

	  switch(temp)
	  {
		 case 1:   /* buffer with Index 0 */
		 {
			return (void *)((SPC3_ADTYP)(((UWORD)
			spc3.r_diag_buf_ptr[0])<<3) + (SPC3_ADTYP)&spc3);
		 }
		 case 2:   /* buffer with Index 1 */
		 {
			return (void *)((SPC3_ADTYP)(((UWORD)
			spc3.r_diag_buf_ptr[1])<<3) + (SPC3_ADTYP)&spc3);
		 }
		 default:
		 {
			/* no buffer */
			return SPC3_NIL;
		 }
	  }
   }

			 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人综合日日夜夜| 欧美日韩另类一区| 国产精品污www在线观看| 久久精品国产一区二区三| 亚洲天堂a在线| 欧美精品日日鲁夜夜添| 欧美精品久久99久久在免费线| 一本高清dvd不卡在线观看| 在线精品视频一区二区| 777a∨成人精品桃花网| 欧美日本一道本在线视频| 日韩一区二区三区四区| 久久久久久日产精品| 亚洲免费视频中文字幕| 青娱乐精品在线视频| 成人中文字幕电影| 欧美群妇大交群中文字幕| 久久久久久免费网| 亚洲综合清纯丝袜自拍| 国产高清成人在线| 欧美日韩性生活| 亚洲精品乱码久久久久久久久 | 成人欧美一区二区三区白人 | 色婷婷久久99综合精品jk白丝| 欧洲生活片亚洲生活在线观看| 5566中文字幕一区二区电影| 国产精品不卡一区| 国产成人在线网站| 日韩视频一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 92国产精品观看| 中文字幕av一区二区三区高| 精久久久久久久久久久| 欧美一区二区三区性视频| 亚洲成人午夜影院| 欧美日韩免费视频| 日本中文字幕一区二区视频| 欧美日韩视频在线第一区| 亚洲欧美影音先锋| 欧美色精品在线视频| 亚洲成人你懂的| 欧美电影免费观看高清完整版| 亚洲高清免费视频| 制服丝袜激情欧洲亚洲| 久久精品久久精品| 国产精品久久久久婷婷| 91视频观看视频| 日韩高清国产一区在线| 日韩三区在线观看| 99久久免费精品| 久久99久久精品| 亚洲三级视频在线观看| 日韩一区二区在线看| 懂色av一区二区三区免费看| 亚洲电影一区二区三区| 日韩精品中午字幕| 色婷婷精品大在线视频| 美国av一区二区| 亚洲裸体xxx| 久久影院视频免费| 欧美日韩精品高清| 91视频你懂的| 成人精品小蝌蚪| 国产一区 二区 三区一级| 亚洲一区二区视频在线观看| 国产精品无遮挡| 色综合中文综合网| 中文一区二区在线观看| 91.com在线观看| 欧美性大战久久久久久久| jizz一区二区| av福利精品导航| 91丨porny丨蝌蚪视频| 成人精品视频.| 97aⅴ精品视频一二三区| 久久国产三级精品| 亚洲激情男女视频| 亚洲午夜羞羞片| 亚洲免费在线电影| 午夜精品久久久久| 亚洲国产另类av| 蜜桃精品视频在线观看| 美女在线一区二区| 国产精品资源网站| 成人h动漫精品一区二区| 日本二三区不卡| 欧美一区二区二区| 日韩欧美色综合网站| 久久免费电影网| 午夜不卡av在线| 成人一区在线观看| 欧美一区二区三区日韩| 国产色综合一区| 日本成人在线视频网站| 国产成人亚洲精品青草天美 | 91精品国产入口| 国产欧美一区二区在线| 亚洲一区二区偷拍精品| 成人性生交大片免费看在线播放 | 日本道色综合久久| 日韩欧美在线不卡| 亚洲黄色小视频| 国产成人亚洲综合色影视| 91精品婷婷国产综合久久性色 | av电影天堂一区二区在线观看| 欧美私人免费视频| 自拍av一区二区三区| 国产精品资源网站| 国产日韩三级在线| 久久成人久久鬼色| 欧美图区在线视频| 亚洲永久精品国产| 欧美日韩精品电影| 麻豆国产精品一区二区三区 | 麻豆91免费看| 亚洲精品一区二区在线观看| 久久国产剧场电影| 国产日韩精品一区二区浪潮av| 国模大尺度一区二区三区| 国产日韩欧美一区二区三区综合 | 在线免费观看不卡av| 亚洲另类中文字| 在线成人高清不卡| 韩国女主播一区二区三区| 国产欧美一区二区精品性色超碰| 国产真实乱偷精品视频免| 国产精品情趣视频| 欧美日本一道本| 成人黄色片在线观看| 亚洲国产日产av| 欧美性猛交xxxxxxxx| 美女视频一区二区三区| 一区二区三区四区在线播放 | 91久久免费观看| 国内外成人在线| 视频精品一区二区| 亚洲品质自拍视频网站| 久久综合网色—综合色88| 91国偷自产一区二区三区成为亚洲经典| 日欧美一区二区| 亚洲高清在线视频| 一区二区三区中文免费| 国产精品久线在线观看| 欧美mv和日韩mv国产网站| 日本精品一区二区三区高清 | 男女激情视频一区| 天堂在线亚洲视频| 日日嗨av一区二区三区四区| 亚洲激情一二三区| 亚洲裸体xxx| 亚洲va韩国va欧美va精品| 国产精品久久午夜夜伦鲁鲁| 亚洲一区在线视频观看| 亚洲另类色综合网站| 亚洲bt欧美bt精品777| 日日摸夜夜添夜夜添国产精品| 51午夜精品国产| 欧美va亚洲va| 欧美激情艳妇裸体舞| 亚洲人精品午夜| 丝袜美腿亚洲一区二区图片| 日本不卡视频在线观看| 国产精品一区二区无线| 91亚洲精品乱码久久久久久蜜桃| 色视频成人在线观看免| 欧洲国产伦久久久久久久| 91精品国产综合久久福利| 精品国产百合女同互慰| 亚洲欧洲性图库| 午夜国产不卡在线观看视频| 肉肉av福利一精品导航| 成人动漫一区二区| 日韩精品一区二区三区视频播放| 欧美电影免费提供在线观看| 一区二区三区美女| 懂色中文一区二区在线播放| 7777精品伊人久久久大香线蕉经典版下载| 日韩三级在线免费观看| 亚洲成年人网站在线观看| 91在线视频播放地址| 国产色91在线| 国产乱码精品1区2区3区| 69p69国产精品| 日韩av电影免费观看高清完整版| 91视频.com| 亚洲综合丝袜美腿| 在线视频一区二区三| 中文字幕一区二区三区四区| 国产69精品久久久久777| 久久青草欧美一区二区三区| 男女男精品网站| 国产婷婷精品av在线| 粉嫩一区二区三区性色av| 国产欧美日韩在线| 北条麻妃国产九九精品视频| 亚洲欧洲成人自拍| 欧美三级日韩在线| 老司机午夜精品| 自拍av一区二区三区| 4438亚洲最大|