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

蟲蟲首頁(yè)| 資源下載| 資源專輯| 精品軟件
登錄| 注冊(cè)

ST<b>gapi</b>Buffer

  • Quectel Wireless Solutions BC20-TE-B 原理圖 V1.2

    BC20-TE-B NB-Iot 評(píng)估板評(píng)估板原廠原理圖V1.2。完整對(duì)應(yīng)實(shí)物裝置。

    標(biāo)簽: BC20 NB-Iot Quectel

    上傳時(shí)間: 2022-06-17

    上傳用戶:

  • ASR M08-B資料

    ASR M08-B設(shè)置軟件 V3.2  arduino 2560+ASRM08-B測(cè)試程序  arduino UNO+ASRM08-B測(cè)試程序語(yǔ)音控制臺(tái)燈電路圖及C51源碼(不帶校驗(yàn)碼) 繼電器模塊設(shè)置。   ASR M08-B是一款語(yǔ)音識(shí)別模塊。首先對(duì)模塊添加一些關(guān)鍵字,對(duì)著該模塊說(shuō)出關(guān)鍵字,串口會(huì)返回三位的數(shù),如果是返回特定的三位數(shù)字,還會(huì)引起ASR M08-B的相關(guān)引腳電平的變化。【測(cè)試】①打開“ASR M08-B設(shè)置軟件 V3.2.exe”。②選擇“串口號(hào)”、“打開串口”、點(diǎn)選“十六進(jìn)制顯示”。③將USB轉(zhuǎn)串口模塊連接到語(yǔ)音識(shí)別模塊上。接線方法如下:語(yǔ)音模塊TXD --> USB模塊RXD語(yǔ)音模塊RXD --> USB模塊TXD語(yǔ)音模塊GND --> USB模塊GND語(yǔ)音模塊3V3 --> USB模塊3V3(此端為3.3V電源供電端。)④將模塊的開關(guān)撥到“A”端,最好再按一次上面的大按鈕(按一次即可,為了確保模塊工作在正確的模式)。⑤對(duì)著模塊說(shuō)“開燈”、“關(guān)燈”模塊會(huì)返回“0B”、“0A”,表示正常(注意:0B對(duì)應(yīng)返回值010,0B對(duì)應(yīng)返回值010,返回是16進(jìn)制顯示的嘛,設(shè)置的時(shí)候是10進(jìn)制設(shè)置的)。

    標(biāo)簽: ASR M08-B

    上傳時(shí)間: 2022-07-06

    上傳用戶:aben

  • 驅(qū)動(dòng)程序與應(yīng)用程序的接口

    有兩種方式可以讓設(shè)備和應(yīng)用程序之間聯(lián)系:1. 通過(guò)為設(shè)備創(chuàng)建的一個(gè)符號(hào)鏈;2. 通過(guò)輸出到一個(gè)接口WDM驅(qū)動(dòng)程序建議使用輸出到一個(gè)接口而不推薦使用創(chuàng)建符號(hào)鏈的方法。這個(gè)接口保證PDO的安全,也保證安全地創(chuàng)建一個(gè)惟一的、獨(dú)立于語(yǔ)言的訪問(wèn)設(shè)備的方法。一個(gè)應(yīng)用程序使用Win32APIs來(lái)調(diào)用設(shè)備。在某個(gè)Win32 APIs和設(shè)備對(duì)象的分發(fā)函數(shù)之間存在一個(gè)映射關(guān)系。獲得對(duì)設(shè)備對(duì)象訪問(wèn)的第一步就是打開一個(gè)設(shè)備對(duì)象的句柄。 用符號(hào)鏈打開一個(gè)設(shè)備的句柄為了打開一個(gè)設(shè)備,應(yīng)用程序需要使用CreateFile。如果該設(shè)備有一個(gè)符號(hào)鏈出口,應(yīng)用程序可以用下面這個(gè)例子的形式打開句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3",  GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統(tǒng)本調(diào)用希望打開一個(gè)設(shè)備。這個(gè)設(shè)備必須有一個(gè)符號(hào)鏈,以便應(yīng)用程序能夠打開它。有關(guān)細(xì)節(jié)查看有關(guān)Kdevice和CreateLink的內(nèi)容。在上述調(diào)用中第一個(gè)參數(shù)中前綴后的部分就是這個(gè)符號(hào)鏈的名字。注意:CreatFile中的第一個(gè)參數(shù)不是Windows 98/2000中驅(qū)動(dòng)程序(.sys文件)的路徑。是到設(shè)備對(duì)象的符號(hào)鏈。如果使用DriverWizard產(chǎn)生驅(qū)動(dòng)程序,它通常使用類KunitizedName來(lái)構(gòu)成設(shè)備的符號(hào)鏈。這意味著符號(hào)鏈名有一個(gè)附加的數(shù)字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應(yīng)用程序需要被覆蓋的I/O,第六個(gè)參數(shù)(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個(gè)輸出接口打開句柄用這種方式打開一個(gè)句柄會(huì)稍微麻煩一些。DriverWorks庫(kù)提供兩個(gè)助手類來(lái)使獲得對(duì)該接口的訪問(wèn)容易一些,這兩個(gè)類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個(gè)設(shè)備信息集,該信息集包含了特殊類中的所有設(shè)備接口信息。應(yīng)用程序能有用CdeviceInterfaceClass類的一個(gè)實(shí)例來(lái)獲得一個(gè)或更多的CdeviceInterface類的實(shí)例。CdeviceInterface類是一個(gè)單一設(shè)備接口的抽象。它的成員函數(shù)DevicePath()返回一個(gè)路徑名的指針,該指針可以在CreateFile中使用來(lái)打開設(shè)備。下面用一個(gè)小例子來(lái)顯示這些類最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface(  GUID* pClassGuid,  DWORD instance,  PDWORD pError){  CDeviceInterfaceClass DevClass(pClassGuid, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  CDeviceInterface DevInterface(&DevClass, instance, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  cout << "The device path is "    << DevInterface.DevicePath()    << endl;   HANDLE hDev;  hDev = CreateFile(   DevInterface.DevicePath(),    GENERIC_READ | GENERIC_WRITE,    FILE_SHARE_READ | FILE_SHARE_WRITE,    NULL,    OPEN_EXISTING,    FILE_ATTRIBUTE_NORMAL,    NULL  );  if (hDev == INVALID_HANDLE_VALUE)    *pError = GetLastError();  return hDev;} 在設(shè)備中執(zhí)行I/O操作一旦應(yīng)用程序獲得一個(gè)有效的設(shè)備句柄,它就能使用Win32 APIs來(lái)產(chǎn)生到設(shè)備對(duì)象的IRPs。下面的表顯示了這種對(duì)應(yīng)關(guān)系。Win32 API  DRIVER_FUNCTION_xxxIRP_MJ_xxx  KDevice subclass member function CreateFile  CREATE  Create ReadFile  READ  Read WriteFile  WRITE  Write DeviceIoControl  DEVICE_CONTROL  DeviceControl CloseHandle  CLOSECLEANUP  CloseCleanUp 需要解釋一下設(shè)備類成員的Close和CleanUp:CreateFile使內(nèi)核為設(shè)備創(chuàng)建一個(gè)新的文件對(duì)象。這使得多個(gè)句柄可以映射同一個(gè)文件對(duì)象。當(dāng)這個(gè)文件對(duì)象的最后一個(gè)用戶級(jí)句柄被撤銷后,I/O管理器調(diào)用CleanUp。當(dāng)沒(méi)有任何用戶級(jí)和核心級(jí)的對(duì)文件對(duì)象的訪問(wèn)的時(shí)候,I/O管理器調(diào)用Close。如果被打開的設(shè)備不支持指定的功能,則調(diào)用相應(yīng)的Win32將引起錯(cuò)誤(無(wú)效功能)。以前為Windows95編寫的VxD的應(yīng)用程序代碼中可能會(huì)在打開設(shè)備的時(shí)候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個(gè)屬性,因?yàn)樗鼘?dǎo)致沒(méi)有特權(quán)的用戶企圖打開這個(gè)設(shè)備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數(shù)轉(zhuǎn)換成IRP域的方法依賴于設(shè)備對(duì)象的屬性。當(dāng)設(shè)備設(shè)置DO_DIRECT_IO標(biāo)志,I/O管理器將buff鎖住在存儲(chǔ)器中,并且創(chuàng)建了一個(gè)存儲(chǔ)在IRP中的MDL域。一個(gè)設(shè)備可以通過(guò)調(diào)用Kirp::Mdl來(lái)存取MDL。當(dāng)設(shè)備設(shè)置DO_BUFFERED_IO標(biāo)志,設(shè)備對(duì)象分別通過(guò)KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或?qū)懖僮鳙@得buff地址。當(dāng)設(shè)備不設(shè)置DO_BUFFERED_IO標(biāo)志也不設(shè)置DO_DIRECT_IO,內(nèi)核設(shè)置IRP 的UserBuffer域來(lái)對(duì)應(yīng)ReadFile或WriteFile中的buff參數(shù)。然而,存儲(chǔ)區(qū)并沒(méi)有被鎖住而且地址只對(duì)調(diào)用進(jìn)程有效。驅(qū)動(dòng)程序可以使用KIrp::UserBuffer來(lái)存取IRP域。對(duì)于DeviceIoControl調(diào)用,buffer參數(shù)的轉(zhuǎn)換依賴于特殊的I/O控制代碼,它不在設(shè)備對(duì)象的特性中。宏CTL_CODE(在winioctl.h中定義)用來(lái)構(gòu)造控制代碼。這個(gè)宏的其中一個(gè)參數(shù)指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對(duì)應(yīng)的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數(shù):Method  Input Buffer Parameter  Output Buffer Parameter METHOD_BUFFERED  KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER  KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代碼指明METHOD_BUFFERED,系統(tǒng)分配一個(gè)單一的緩沖來(lái)作為輸入與輸出。驅(qū)動(dòng)程序必須在向輸出緩沖放數(shù)據(jù)之前拷貝輸入數(shù)據(jù)。驅(qū)動(dòng)程序通過(guò)調(diào)用KIrp::IoctlBuffer獲得緩沖地址。在完成時(shí),I/O管理器從系統(tǒng)緩沖拷貝數(shù)據(jù)到提供給Ring 3級(jí)調(diào)用者使用的緩沖中。驅(qū)動(dòng)程序必須在結(jié)束前存儲(chǔ)拷貝到IRP的Information成員中的數(shù)據(jù)個(gè)數(shù)。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數(shù)呈現(xiàn)不同的含義。參數(shù)InputBuffer被拷貝到一個(gè)系統(tǒng)緩沖,這個(gè)緩沖驅(qū)動(dòng)程序可以通過(guò)調(diào)用KIrp::IoctlBuffer。參數(shù)OutputBuffer被映射到KMemory對(duì)象,驅(qū)動(dòng)程序?qū)@個(gè)對(duì)象的訪問(wèn)通過(guò)調(diào)用KIrp::Mdl來(lái)實(shí)現(xiàn)。對(duì)于METHOD_OUT_DIRECT,調(diào)用者必須有對(duì)緩沖的寫訪問(wèn)權(quán)限。注意,對(duì)METHOD_NEITHER,內(nèi)核只提供虛擬地址;它不會(huì)做映射來(lái)配置緩沖。虛擬地址只對(duì)調(diào)用進(jìn)程有效。這里是一個(gè)用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來(lái)定義一個(gè)IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現(xiàn)在使用一個(gè)DeviceIoControl調(diào)用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING,  NULL, // no input  注意,這里放的是包含有執(zhí)行操作命令的字符串指針  0, FirmwareRev,      //這里是output串指針,存放從驅(qū)動(dòng)程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize,  NULL // not overlapped I/O );如果輸出緩沖足夠大,設(shè)備拷貝串到里面并將拷貝的資結(jié)束設(shè)置到FirmwareRevSize中。在驅(qū)動(dòng)程序中,代碼看起來(lái)如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){  ULONG fwLength=0;  switch ( I.IoctlCode() )  {    case IOCTL_MYDEV_GET_FIRMWARE_REV:      fwLength = strlen(FIRMWARE_REV)+1;      if (I.IoctlOutputBufferSize() >= fwLength)      {        strcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV);        I.Information() = fwLength;         return I.Complete(STATUS_SUCCESS);      }      else      {              }    case . . .   } }

    標(biāo)簽: 驅(qū)動(dòng)程序 應(yīng)用程序 接口

    上傳時(shí)間: 2013-10-17

    上傳用戶:gai928943

  • realview mdk 3.2 下載

    1.增加的設(shè)備支持: Atmel AT91SAM9Rxx Cirrus Logic CS7401xx-IQZ Luminary Micro LM3S576x, LM3S5752, LM3S5747, LM3S573x, LM3S5662, LM3S5652, LM3S5632, LM3S3759, LM3S3749, and LM3S3739 NXP LPC32XX and LPC2460 STMicroelectronics STR912FAZ4X, STR912FAW4X, STR911FAW4X, STR911FAM4X, STR910FAW32, and STR910FAZ32 2.修改了NXP LPC23XX/24XX的頭文件庫(kù) 3.增加了ST-LINK II的調(diào)試支持 4.增加了對(duì)Cortex-M3 內(nèi)核芯片的RTX Event Viewer 的支持 5.增加了MCBSTM32: STM32 FLASH OPTION BYTES PROGRAMMING 6.增加了ULINK2對(duì)Cortex-M3的SWV功能的調(diào)試 7.增強(qiáng)了使用GNU在MDK下調(diào)試M1,M3,ARM7,ARM9的調(diào)試功能( Using μVision with CodeSourcery GNU ARM Toolchain.) 8.增加了大量經(jīng)典開發(fā)板例程 Boards目錄列表: ├─Embest 深圳市英蓓特公司開發(fā)板例程 │ ├─AT91EB40X-40008 │ ├─S3CEB2410 │ ├─ATEBSAM7S │ ├─LPC22EB06-I │ ├─LPCEB2000-A │ ├─LPCEB2000-B │ ├─LPCEB2000-S │ ├─str710 │ ├─str711 │ ├─str730 │ ├─str750 │ ├─STR912 │ ├─STM32V100 │ ├─STM32R100 │ ├─ATEB9200 ├─ADI ADI半導(dǎo)體的芯片例程 │ ├─ADuC702X │ └─ADuC712x ├─Atmel Atmel半導(dǎo)體的芯片例程 │ ├─AT91RM9200-EK │ ├─AT91SAM7A3-EK │ ├─AT91SAM7S-EK │ ├─AT91SAM7SE-EK │ ├─AT91SAM7X-EK │ ├─AT91SAM9260-EK │ ├─AT91SAM9261-EK │ ├─AT91SAM9263-EK ├─Keil Keil公司的開發(fā)板例程 │ ├─MCB2100 │ ├─MCB2103 │ ├─MCB2130 │ ├─MCB2140 │ ├─MCB2300 │ ├─MCB2400 │ ├─MCB2900 │ ├─MCBLM3S │ ├─MCBSTM32 │ ├─MCBSTR7 │ ├─MCBSTR730 │ ├─MCBSTR750 │ └─MCBSTR9 ├─Luminary Luminary半導(dǎo)體公司的芯片例程 │ ├─ek-lm3s1968 │ ├─ek-lm3s3748 │ ├─ek-lm3s3768 │ ├─dk-lm3s101 │ ├─dk-lm3s102 │ ├─dk-lm3s301 │ ├─dk-lm3s801 │ ├─dk-lm3s811 │ ├─dk-lm3s815 │ ├─dk-lm3s817 │ ├─dk-lm3s818 │ ├─dk-lm3s828 │ ├─ek-lm3s2965 │ ├─ek-lm3s6965 │ ├─ek-lm3s811 │ └─ek-lm3s8962 ├─NXP NXP半導(dǎo)體公司的芯片例程 │ ├─LH79524 │ ├─LH7A404 │ └─SJA2510 ├─OKI OKI半導(dǎo)體公司的芯片例程 │ ├─ML674000 │ ├─ML67Q4003 │ ├─ML67Q4051 │ ├─ML67Q4061 │ ├─ML67Q5003 │ └─ML69Q6203 ├─Samsung Samsung半導(dǎo)體公司的芯片例程 │ ├─S3C2440 │ ├─S3C44001 │ └─S3F4A0K ├─ST ST半導(dǎo)體公司的芯片例程 │ ├─CQ-STARM2 │ ├─EK-STM32F │ ├─STM32F10X_EVAL │ ├─STR710 │ ├─STR730 │ ├─STR750 │ ├─STR910 │ └─STR9_DONGLE ├─TI TI半導(dǎo)體公司的芯片例程 │ ├─TMS470R1A256 │ └─TMS470R1B1M ├─Winbond Winbond半導(dǎo)體公司的芯片例程 │ └─W90P710 └─ ...

    標(biāo)簽: realview mdk 3.2

    上傳時(shí)間: 2013-10-13

    上傳用戶:zhangliming420

  • PLC和變頻器在煙支輸送存儲(chǔ)系統(tǒng)中的應(yīng)用

    介紹了以PLC為控制單元,變頻器為執(zhí)行單元的控制系統(tǒng)及其在煙支輸送儲(chǔ)存系統(tǒng)中的應(yīng)用,并給出了系統(tǒng)的組成、硬件的配置及具體的實(shí)現(xiàn)方法。關(guān)鍵詞 : PLC 變頻器輸送儲(chǔ)存系統(tǒng) Ab str ac t;T hisp aperi ntroducest hec ontrols ystem whichc onsistso fP LCa ndf requencyc onvertera ndi ts application in the buffer conveyor for cigarettes. The system constitute, hardware disposal and realization method are also presented in detail.Keywords:PLC f requencyc onverter b ufferc onveyor

    標(biāo)簽: PLC 變頻器 中的應(yīng)用 存儲(chǔ)系統(tǒng)

    上傳時(shí)間: 2013-10-22

    上傳用戶:ouyang426

  • DELPHI basicCtrl+NUM 直接將光標(biāo)跳到NUM處

    DELPHI basicCtrl+NUM 直接將光標(biāo)跳到NUM處,NUM是用Ctrl+Shift+NUM設(shè)置的標(biāo)號(hào)。 NUM不能用小鍵盤。 Ctrl+Home 將光標(biāo)移至文件頭。 Ctrl+End 將光標(biāo)移至文件尾。 Ctrl+B Buffer List窗口。 Ctrl+I 同Tab鍵。 Ctrl+M 同Enter鍵。 Ctrl+N 同Enter鍵,但光標(biāo)位置保持不變。 Ctrl+T 刪除光標(biāo)右邊的一個(gè)單詞。 Ctrl+Y 刪除光標(biāo)所在行。 Ctrl+Shift+↑ 光標(biāo)在函數(shù)體內(nèi)時(shí),將光標(biāo)快速移至當(dāng)前函數(shù)聲明處。 Ctrl+Shift+↓ 光標(biāo)在函數(shù)聲明行時(shí),將光標(biāo)快速移至函數(shù)定義處。 Ctrl+Shift+C 聲明一個(gè)過(guò)程或函數(shù)后,直接生成過(guò)程或函數(shù)的名稱、begin、end Ctrl+Shift+E 光標(biāo)在Edit窗口和Explorer窗口間切換。 Ctrl+Shift+G 插入GUID。 Ctrl+Shift+J 彈出Delphi語(yǔ)句提示窗口,選擇所需語(yǔ)句將自動(dòng)完成一條語(yǔ)句。 Ctrl+Shift+T 在光標(biāo)行加入To-Do注釋。 Ctrl+Shift+Y 刪除光標(biāo)之后至本行末尾之間的文本。 Ctrl+F3 Call Stack窗口。 Ctrl+F4 等于File菜單中的Close項(xiàng)。

    標(biāo)簽: basicCtrl NUM DELPHI 光標(biāo)

    上傳時(shí)間: 2014-11-26

    上傳用戶:kr770906

  • 生成Trick文件工具 1.Open command line 2.input tricktest Usage: TrickTest -f -o -i -f source mpeg2 fil

    生成Trick文件工具 1.Open command line 2.input tricktest Usage: TrickTest -f -o -i -f source mpeg2 file to trick -o trick output directory -i output file id -m max coding error, default 0 -b max bitrate for trick generate, default 0 mean no limit -s trick buffer block size, must be n*188 -l log file, default c:\tricktest.log example: tricktest -f 黑鷹行動(dòng).mpg -o c:\temp -i A -m 1000 -b 3750000 soure file: 黑鷹行動(dòng).mpg output directory: c:\temp filename: 000000A,000000A.ff,000000A.fr,000000A.vvx max coding error: 1000 trick generation speed: 3750000 bps a

    標(biāo)簽: TrickTest tricktest command source

    上傳時(shí)間: 2014-01-23

    上傳用戶:水口鴻勝電器

  • net_tcp.h

    /* ********************************************************************************************************* *                                             uC/TCP-IP V2 *                                      The Embedded TCP/IP Suite * *                          (c) Copyright 2003-2010; Micrium, Inc.; Weston, FL * *               All rights reserved.  Protected by international copyright laws. * *               uC/TCP-IP is provided in source form to registered licensees ONLY.  It is  *               illegal to distribute this source code to any third party unless you receive  *               written permission by an authorized Micrium representative.  Knowledge of  *               the source code may NOT be used to develop a similar product. * *               Please help us continue to provide the Embedded community with the finest  *               software available.  Your honesty is greatly appreciated. * *               You can contact us at www.micrium.com. ********************************************************************************************************* */ /* ********************************************************************************************************* * *                                          NETWORK TCP LAYER *                                   (TRANSMISSION CONTROL PROTOCOL) * * Filename      : net_tcp.h * Version       : V2.10 * Programmer(s) : ITJ ********************************************************************************************************* * Note(s)       : (1) Supports Transmission Control Protocol as described in RFC #793 with the following *                     restrictions/constraints : * *                     (a) TCP Security & Precedence NOT supported               RFC # 793, Section 3.6 * *                     (b) TCP Urgent Data           NOT supported               RFC # 793, Section 3.7 *                                                                                'The Communication of *                                                                                  Urgent Information' * *                     (c) The following TCP options NOT supported :              * *                         (1) Window Scale                                      RFC #1072, Section 2 *                                                                               RFC #1323, Section 2 *                         (2) Selective Acknowledgement (SACK)                  RFC #1072, Section 3 *                                                                               RFC #2018 *                                                                               RFC #2883 *                         (3) TCP Echo                                          RFC #1072, Section 4 *                         (4) Timestamp                                         RFC #1323, Section 3.2 *                         (5) Protection Against Wrapped Sequences (PAWS)       RFC #1323, Section 4 * *                     (d) #### IP-Options-to-TCP-Connection                     RFC #1122, Section 4.2.3.8 *                                Handling NOT           supported * *                     (e) #### ICMP-Error-Message-to-TCP-Connection             RFC #1122, Section 4.2.3.9 *                                Handling NOT currently supported * *                 (2) TCP Layer assumes/requires Network Socket Layer (see 'net_sock.h  MODULE  Note #1a2'). ********************************************************************************************************* */ /*$PAGE*/ /* ********************************************************************************************************* *                                               MODULE * * Note(s) : (1) TCP Layer module is NOT required for UDP-to-Application API configuration. * *               See also 'net_cfg.h  TRANSPORT LAYER CONFIGURATION' *                      & 'net_cfg.h  USER DATAGRAM PROTOCOL LAYER CONFIGURATION'. * *               See also 'net_tcp.h  Note #2'. * *           (2) The following TCP-module-present configuration value MUST be pre-#define'd in  *               'net_cfg_net.h' PRIOR to all other network modules that require TCP Layer *               configuration (see 'net_cfg_net.h  TCP LAYER CONFIGURATION  Note #2b') : * *                   NET_TCP_MODULE_PRESENT ********************************************************************************************************* */ #ifdef   NET_TCP_MODULE_PRESENT                                 /* See Note #2.                                         */ /* ********************************************************************************************************* *                                               EXTERNS ********************************************************************************************************* */ #if ((defined(NET_TCP_MODULE)) && \      (defined(NET_GLOBALS_EXT))) #define  NET_TCP_EXT #else #define  NET_TCP_EXT  extern #endif /*$PAGE*/ /* ********************************************************************************************************* *                                               DEFINES ********************************************************************************************************* */ /* ********************************************************************************************************* *                                         TCP HEADER DEFINES * * Note(s) : (1) The following TCP value MUST be pre-#define'd in 'net_def.h' PRIOR to 'net_buf.h' so that *               the Network Buffer Module can configure maximum buffer header size (see 'net_def.h  TCP *               LAYER DEFINES' & 'net_buf.h  NETWORK BUFFER INDEX & SIZE DEFINES  Note #1') : * *               (a) NET_TCP_HDR_SIZE_MAX                  60        (NET_TCP_HDR_LEN_MAX *                                                                  * NET_TCP_HDR_LEN_WORD_SIZE) * *           (2) Urgent pointer & data NOT supported (see 'net_tcp.h  Note #1b'). ********************************************************************************************************* */ #define  NET_TCP_HDR_LEN_MASK                         0xF000u #define  NET_TCP_HDR_LEN_SHIFT                            12u #define  NET_TCP_HDR_LEN_NONE                              0u #define  NET_TCP_HDR_LEN_MIN                               5u #define  NET_TCP_HDR_LEN_MAX                              15u #define  NET_TCP_HDR_LEN_WORD_SIZE                       CPU_WORD_SIZE_32 #define  NET_TCP_HDR_SIZE_MIN                           (NET_TCP_HDR_LEN_MIN * NET_TCP_HDR_LEN_WORD_SIZE) #if 0                                                           /* See Note #1a.                                        */ #define  NET_TCP_HDR_SIZE_MAX                           (NET_TCP_HDR_LEN_MAX * NET_TCP_HDR_LEN_WORD_SIZE) #endif #define  NET_TCP_HDR_SIZE_TOT_MIN                       (NET_IP_HDR_SIZE_TOT_MIN + NET_TCP_HDR_SIZE_MIN) #define  NET_TCP_HDR_SIZE_TOT_MAX                       (NET_IP_HDR_SIZE_TOT_MAX + NET_TCP_HDR_SIZE_MAX) #define  NET_TCP_PSEUDO_HDR_SIZE                          12u   /*  = sizeof(NET_TCP_PSEUDO_HDR)                        */ #define  NET_TCP_PORT_NBR_RESERVED                       NET_PORT_NBR_RESERVED #define  NET_TCP_PORT_NBR_NONE                           NET_TCP_PORT_NBR_RESERVED #define  NET_TCP_HDR_URG_PTR_NONE                     0x0000u   /* See Note #2.                                         */ /*$PAGE*/ /* ********************************************************************************************************* *                                       TCP HEADER FLAG DEFINES * * Note(s) : (1) See 'TCP HEADER  Note #2' for flag fields. * *           (2) Urgent pointer & data NOT supported (see 'net_tcp.h  Note #1b'). ********************************************************************************************************* */ #define  NET_TCP_HDR_FLAG_MASK                        0x0FFFu #define  NET_TCP_HDR_FLAG_NONE                    DEF_BIT_NONE #define  NET_TCP_HDR_FLAG_RESERVED                    0x0FE0u   /* MUST be '0'.                                         */ #define  NET_TCP_HDR_FLAG_URGENT                  DEF_BIT_05    /* See Note #2.                                         */ #define  NET_TCP_HDR_FLAG_ACK                     DEF_BIT_04 #define  NET_TCP_HDR_FLAG_PUSH                    DEF_BIT_03 #define  NET_TCP_HDR_FLAG_RESET                   DEF_BIT_02 #define  NET_TCP_HDR_FLAG_SYNC                    DEF_BIT_01 #define  NET_TCP_HDR_FLAG_FIN                     DEF_BIT_00 #define  NET_TCP_HDR_FLAG_CLOSE                   NET_TCP_HDR_FLAG_FIN /* ********************************************************************************************************* *                                          TCP FLAG DEFINES ********************************************************************************************************* */                                                                 /* ------------------ NET TCP FLAGS ------------------- */ #define  NET_TCP_FLAG_NONE                        DEF_BIT_NONE #define  NET_TCP_FLAG_USED                        DEF_BIT_00    /* TCP conn cur used; i.e. NOT in free TCP conn pool.   */                                                                 /* ------------------ TCP TX  FLAGS ------------------- */                                                                 /* TCP tx flags copied from TCP hdr flags.              */ #define  NET_TCP_FLAG_TX_FIN                      NET_TCP_HDR_FLAG_FIN #define  NET_TCP_FLAG_TX_CLOSE                    NET_TCP_FLAG_TX_FIN #define  NET_TCP_FLAG_TX_SYNC                     NET_TCP_HDR_FLAG_SYNC #define  NET_TCP_FLAG_TX_RESET                    NET_TCP_HDR_FLAG_RESET #define  NET_TCP_FLAG_TX_PUSH                     NET_TCP_HDR_FLAG_PUSH #define  NET_TCP_FLAG_TX_ACK                      NET_TCP_HDR_FLAG_ACK #define  NET_TCP_FLAG_TX_URGENT                   NET_TCP_HDR_FLAG_URGENT #define  NET_TCP_FLAG_TX_BLOCK                    DEF_BIT_07                                                                 /* ------------------ TCP RX  FLAGS ------------------- */ #define  NET_TCP_FLAG_RX_DATA_PEEK                DEF_BIT_08 #define  NET_TCP_FLAG_RX_BLOCK                    DEF_BIT_15 /*$PAGE*/ /* ********************************************************************************************************* *                                          TCP TYPE DEFINES * * Note(s) : (1) NET_TCP_TYPE_&&& #define values specifically chosen as ASCII representations of the TCP *               types.  Memory displays of TCP types will display with their chosen ASCII names. ********************************************************************************************************* */                                                                 /* ------------------ NET TCP TYPES ------------------- */ #if     (CPU_CFG_ENDIAN_TYPE == CPU_ENDIAN_TYPE_BIG) #define  NET_TCP_TYPE_NONE                        0x4E4F4E45u   /* "NONE" in ASCII.                                     */ #define  NET_TCP_TYPE_CONN                        0x54435020u   /* "TCP " in ASCII.                                     */ #else #if     (CPU_CFG_DATA_SIZE   == CPU_WORD_SIZE_32) #define  NET_TCP_TYPE_NONE                        0x454E4F4Eu   /* "NONE" in ASCII.                                     */ #define  NET_TCP_TYPE_CONN                        0x20504354u   /* "TCP " in ASCII.                                     */ #elif   (CPU_CFG_DATA_SIZE   == CPU_WORD_SIZE_16) #define  NET_TCP_TYPE_NONE                        0x4F4E454Eu   /* "NONE" in ASCII.                                     */ #define  NET_TCP_TYPE_CONN                        0x43542050u   /* "TCP " in ASCII.                                     */ #else                                                           /* Dflt CPU_WORD_SIZE_08.                               */ #define  NET_TCP_TYPE_NONE                        0x4E4F4E45u   /* "NONE" in ASCII.                                     */ #define  NET_TCP_TYPE_CONN                        0x54435020u   /* "TCP " in ASCII.                                     */ #endif #endif /* ********************************************************************************************************* *                                     TCP SEQUENCE NUMBER DEFINES * * Note(s) : (1) TCP initial transmit sequence number is incremented by a fixed value, preferably a large *               prime value or a large value with multiple unique factors. * *               (a) One reasonable TCP initial transmit sequence number increment value example : * *                       65527  =  37 * 23 * 11 * 7 * * *               #### NET_TCP_TX_SEQ_NBR_CTR_INC could be developer-configured in 'net_cfg.h'. * *               See also 'NET_TCP_TX_GET_SEQ_NBR()  Notes #1b2 & #1c2'. ********************************************************************************************************* */ #define  NET_TCP_SEQ_NBR_NONE                              0u #define  NET_TCP_ACK_NBR_NONE                            NET_TCP_SEQ_NBR_NONE #define  NET_TCP_TX_SEQ_NBR_CTR_INC                    65527u   /* See Note #1.                                         */ #define  NET_TCP_ACK_NBR_DUP_WIN_SIZE_SCALE                4 /*$PAGE*/ /* ********************************************************************************************************* *                                    TCP DATA/TOTAL LENGTH DEFINES * * Note(s) : (1) (a) TCP total length #define's (NET_TCP_TOT_LEN)  relate to the total size of a complete *                   TCP packet, including the packet's TCP header.  Note that a complete TCP packet MAY *                   be fragmented in multiple Internet Protocol packets. * *               (b) TCP data  length #define's (NET_TCP_DATA_LEN) relate to the data  size of a complete *                   TCP packet, equal to the total TCP packet length minus its TCP header size.  Note  *                   that a complete TCP packet MAY be fragmented in multiple Internet Protocol packets. ********************************************************************************************************* */                                                                                 /* See Notes #1a & #1b.                 */ #define  NET_TCP_DATA_LEN_MIN                              0u #define  NET_TCP_TOT_LEN_MIN                            (NET_TCP_HDR_SIZE_MIN + NET_TCP_DATA_LEN_MIN) #define  NET_TCP_TOT_LEN_MAX                            (NET_IP_TOT_LEN_MAX   - NET_IP_HDR_SIZE_MIN ) #define  NET_TCP_DATA_LEN_MAX                           (NET_TCP_TOT_LEN_MAX  - NET_TCP_HDR_SIZE_MIN) /*$PAGE*/ /* ********************************************************************************************************* *                                      TCP SEGMENT SIZE DEFINES * * Note(s) : (1) (a) RFC # 879, Section 3 states that the TCP Maximum Segment Size "counts only *                   data octets in the segment, ... not the TCP header or the IP header". * *               (b) RFC #1122, Section 4.2.2.6 requires that : * *                   (1) "The MSS value to be sent in an MSS option must be less than or equal to * *                        (A) MMS_R - 20 * *                        where MMS_R is the maximum size for a transport-layer message that can *                        be received." * *                   (2) "If an MSS option is not received at connection setup, TCP MUST assume a *                        default send MSS of 536 (576 - 40)." * *                   See also 'net_ip.h  IP DATA/TOTAL LENGTH DEFINES  Note #1'. ********************************************************************************************************* */                                                                                         /* See Note #1.                 */ #define  NET_TCP_MAX_SEG_SIZE_DFLT                      (NET_IP_MAX_DATAGRAM_SIZE_DFLT - NET_IP_HDR_SIZE_MIN - NET_TCP_HDR_SIZE_MIN) #define  NET_TCP_MAX_SEG_SIZE_DFLT_RX                    NET_TCP_DATA_LEN_MAX           /* See Note #1b1.               */ #define  NET_TCP_MAX_SEG_SIZE_DFLT_TX                    NET_TCP_MAX_SEG_SIZE_DFLT      /* See Note #1b2.               */ #define  NET_TCP_MAX_SEG_SIZE_NONE                         0u #define  NET_TCP_MAX_SEG_SIZE_MIN                        NET_TCP_MAX_SEG_SIZE_DFLT #define  NET_TCP_MAX_SEG_SIZE_MAX                        NET_TCP_DATA_LEN_MAX #define  NET_TCP_SEG_LEN_MIN                             NET_TCP_DATA_LEN_MIN #define  NET_TCP_SEG_LEN_MAX                             NET_TCP_DATA_LEN_MAX #define  NET_TCP_SEG_LEN_SYNC                              1u #define  NET_TCP_SEG_LEN_FIN                               1u #define  NET_TCP_SEG_LEN_CLOSE                           NET_TCP_SEG_LEN_FIN #define  NET_TCP_SEG_LEN_ACK                               0u #define  NET_TCP_SEG_LEN_RESET                             0u #define  NET_TCP_SEG_LEN_PROBE                             0u #define  NET_TCP_DATA_LEN_TX_SYNC                          0u #define  NET_TCP_DATA_LEN_TX_FIN                           0u #define  NET_TCP_DATA_LEN_TX_CLOSE                       NET_TCP_DATA_LEN_TX_FIN #define  NET_TCP_DATA_LEN_TX_ACK                           0u #define  NET_TCP_DATA_LEN_TX_PROBE_NO_DATA                 0u #define  NET_TCP_DATA_LEN_TX_PROBE_DATA                    1u #define  NET_TCP_DATA_LEN_TX_RESET                         0u #define  NET_TCP_TX_PROBE_DATA                          0x00u /* ********************************************************************************************************* *                                       TCP WINDOW SIZE DEFINES * * Note(s) : (1) Although NO RFC specifies the absolute minimum TCP connection window size value allowed, *               RFC #793, Section 3.7 'Data Communication : Managing the Window' states that for "the *               window ... there is an assumption that this is related to the currently available data *               buffer space available for this connection". ********************************************************************************************************* */ #define  NET_TCP_WIN_SIZE_NONE                             0u #define  NET_TCP_WIN_SIZE_MIN                            NET_TCP_MAX_SEG_SIZE_MIN #define  NET_TCP_WIN_SIZE_MAX                            DEF_INT_16U_MAX_VAL /*$PAGE*/ /* ********************************************************************************************************* *                                     TCP HEADER OPTIONS DEFINES * * Note(s) : (1) See the following RFC's for TCP options summary : * *               (a) RFC # 793, Section  3.1 'Header Format : Options' *               (b) RFC #1122; Sections 4.2.2.5, 4.2.2.6 * *           (2) TCP option types are encoded in the first octet for each TCP option as follows : * *                           -------- *                           | TYPE | *                           -------- * *               The TCP option type value determines the TCP option format : * *               (a) The following TCP option types are single-octet TCP options -- i.e. the option type *                   octet is the ONLY octet for the TCP option. * *                   (1) TYPE =  0   End of Options List *                   (2) TYPE =  1   No Operation * * *               (b) All other TCP options MUST be multi-octet TCP options (see RFC #1122, Section 4.2.2.5) : * *                           ------------------------------ *                           | TYPE | LEN  |   TCP OPT    | *                           ------------------------------ * *                       where  *                               TYPE        Indicates the specific TCP option type *                               LEN         Indicates the total    TCP option length, in octets, including  *                                                the option type & the option length octets *                               TCP OPT     Additional TCP option octets, if any, that contain the remaining *                                                TCP option information * *                   The following TCP option types are multi-octet TCP options where the option's second *                   octet specify the total TCP option length, in octets, including the option type & the *                   option length octets : * *                   (1) TYPE =  2   Maximum Segment Size        See RFC # 793, Section  3.1 'Header Format : *                                                                   Options : Maximum Segment Size'; *                                                                   RFC #1122, Section 4.2.2.6; *                                                                   RFC # 879, Section 3 * *                   (2) TYPE =  3   Window  Scale               See 'net_tcp.h  Note #1c1' *                   (3) TYPE =  4   SACK Allowed                See 'net_tcp.h  Note #1c2' *                   (4) TYPE =  5   SACK Option                 See 'net_tcp.h  Note #1c2' *                   (5) TYPE =  6   Echo Request                See 'net_tcp.h  Note #1c3' *                   (6) TYPE =  7   Echo Reply                  See 'net_tcp.h  Note #1c3' *                   (7) TYPE =  8   Timestamp                   See 'net_tcp.h  Note #1c4' * *           (3) TCP header allows for a maximum option list length of 40 octets : * *                   NET_TCP_HDR_OPT_SIZE_MAX = NET_TCP_HDR_SIZE_MAX - NET_TCP_HDR_SIZE_MIN * *                                            = 60 - 20 * *                                            = 40 * *           (4) 'NET_TCP_OPT_SIZE'  MUST be pre-defined PRIOR to all definitions that require TCP option  *                size data type. ********************************************************************************************************* */ /*$PAGE*/ #define  NET_TCP_HDR_OPT_END_LIST                          0u #define  NET_TCP_HDR_OPT_NOP                               1u #define  NET_TCP_HDR_OPT_MAX_SEG_SIZE                      2u #define  NET_TCP_HDR_OPT_WIN_SCALE                         3u #define  NET_TCP_HDR_OPT_SACK_PERMIT                       4u #define  NET_TCP_HDR_OPT_SACK                              5u #define  NET_TCP_HDR_OPT_ECHO_REQ                          6u #define  NET_TCP_HDR_OPT_ECHO_REPLY                        7u #define  NET_TCP_HDR_OPT_TS                                8u #define  NET_TCP_HDR_OPT_PAD                             NET_TCP_HDR_OPT_END_LIST #define  NET_TCP_HDR_OPT_LEN_END_LIST                      1u #define  NET_TCP_HDR_OPT_LEN_NOP                           1u #define  NET_TCP_HDR_OPT_LEN_MAX_SEG_SIZE                  4u #define  NET_TCP_HDR_OPT_LEN_WIN_SCALE                     3u #define  NET_TCP_HDR_OPT_LEN_SACK_PERMIT                   2u #define  NET_TCP_HDR_OPT_LEN_ECHO_REQ                      6u #define  NET_TCP_HDR_OPT_LEN_ECHO_REPLY                    6u #define  NET_TCP_HDR_OPT_LEN_TS                           10u #define  NET_TCP_HDR_OPT_LEN_SACK_MIN                      6u #define  NET_TCP_HDR_OPT_LEN_SACK_MAX                     38u #define  NET_TCP_HDR_OPT_LEN_MIN                           1u #define  NET_TCP_HDR_OPT_LEN_MIN_LEN                       2u #define  NET_TCP_HDR_OPT_LEN_MAX                          38u typedef  CPU_INT32U  NET_TCP_OPT_SIZE;                          /* TCP opt size data type (see Note #4).                */ #define  NET_TCP_HDR_OPT_SIZE_WORD               (sizeof(NET_TCP_OPT_SIZE)) #define  NET_TCP_HDR_OPT_SIZE_MAX                       (NET_TCP_HDR_SIZE_MAX - NET_TCP_HDR_SIZE_MIN) #define  NET_TCP_HDR_OPT_NBR_MIN                           0u #define  NET_TCP_HDR_OPT_NBR_MAX                        (NET_TCP_HDR_OPT_SIZE_MAX / NET_TCP_HDR_OPT_SIZE_WORD) #define  NET_TCP_HDR_OPT_IX                              NET_TCP_HDR_SIZE_MIN /*$PAGE*/ /* ********************************************************************************************************* *                                TCP OPTION CONFIGURATION TYPE DEFINES * * Note(s) : (1) NET_TCP_OPT_CFG_TYPE_&&& #define values specifically chosen as ASCII representations of  *               the TCP option configuration types.  Memory displays of TCP option configuration buffers  *               will display the TCP option configuration TYPEs with their chosen ASCII names. ********************************************************************************************************* */                                                                 /* ---------------- TCP OPT CFG TYPES ----------------- */ #if     (CPU_CFG_ENDIAN_TYPE == CPU_ENDIAN_TYPE_BIG) #define  NET_TCP_OPT_CFG_TYPE_NONE                0x4E4F4E45u   /* "NONE" in ASCII.                                     */ #define  NET_TCP_OPT_CFG_TYPE_MAX_SEG_SIZE        0x4D535320u   /* "MSS " in ASCII.                                     */ #define  NET_TCP_OPT_CFG_TYPE_WIN_SCALE           0x57494E20u   /* "WIN " in ASCII (see 'net_tcp.h  Note #1c1').        */ #define  NET_TCP_OPT_CFG_TYPE_SACK_PERMIT         0x53434B50u   /* "SCKP" in ASCII (see 'net_tcp.h  Note #1c2').        */ #define  NET_TCP_OPT_CFG_TYPE_SACK                0x5341434Bu   /* "SACK" in ASCII (see 'net_tcp.h  Note #1c2').        */ #define  NET_TCP_OPT_CFG_TYPE_ECHO_REQ            0x45524551u   /* "EREQ" in ASCII (see 'net_tcp.h  Note #1c3').        */ #define  NET_TCP_OPT_CFG_TYPE_ECHO_REPLY          0x4543484Fu   /* "ECHO" in ASCII (see 'net_tcp.h  Note #1c3').        */ #define  NET_TCP_OPT_CFG_TYPE_TS                  0x54532020u   /* "TS  " in ASCII (see 'net_tcp.h  Note #1c4').        */ #else #if     (CPU_CFG_DATA_SIZE   == CPU_WORD_SIZE_32) #define  NET_TCP_OPT_CFG_TYPE_NONE                0x454E4F4Eu   /* "NONE" in ASCII.                                     */ #define  NET_TCP_OPT_CFG_TYPE_MAX_SEG_SIZE        0x2053534Du   /* "MSS " in ASCII.                                     */ #define  NET_TCP_OPT_CFG_TYPE_WIN_SCALE           0x204E4957u   /* "WIN " in ASCII (see 'net_tcp.h  Note #1c1').        */ #define  NET_TCP_OPT_CFG_TYPE_SACK_PERMIT         0x504B4353u   /* "SCKP" in ASCII (see 'net_tcp.h  Note #1c2').        */ #define  NET_TCP_OPT_CFG_TYPE_SACK                0x4B434153u   /* "SACK" in ASCII (see 'net_tcp.h  Note #1c2').        */ #define  NET_TCP_OPT_CFG_TYPE_ECHO_REQ            0x51455245u   /* "EREQ" in ASCII (see 'net_tcp.h  Note #1c3').        */ #define  NET_TCP_OPT_CFG_TYPE_ECHO_REPLY          0x4F484345u   /* "ECHO" in ASCII (see 'net_tcp.h  Note #1c3').        */ #define  NET_TCP_OPT_CFG_TYPE_TS                  0x20205354u   /* "TS  " in ASCII (see 'net_tcp.h  Note #1c4').        */ #elif   (CPU_CFG_DATA_SIZE   == CPU_WORD_SIZE_16) #define  NET_TCP_OPT_CFG_TYPE_NONE                0x4F4E454Eu   /* "NONE" in ASCII.                                     */ #define  NET_TCP_OPT_CFG_TYPE_MAX_SEG_SIZE        0x534D2053u   /* "MSS " in ASCII.                                     */ #define  NET_TCP_OPT_CFG_TYPE_WIN_SCALE           0x4957204Eu   /* "WIN " in ASCII (see 'net_tcp.h  Note #1c1').        */ #define  NET_TCP_OPT_CFG_TYPE_SACK_PERMIT         0x4353504Bu   /* "SCKP" in ASCII (see 'net_tcp.h  Note #1c2').        */ #define  NET_TCP_OPT_CFG_TYPE_SACK                0x41534B43u   /* "SACK" in ASCII (see 'net_tcp.h  Note #1c2').        */ #define  NET_TCP_OPT_CFG_TYPE_ECHO_REQ            0x52455145u   /* "EREQ" in ASCII (see 'net_tcp.h  Note #1c3').        */ #define  NET_TCP_OPT_CFG_TYPE_ECHO_REPLY          0x43454F48u   /* "ECHO" in ASCII (see 'net_tcp.h  Note #1c3').        */ #define  NET_TCP_OPT_CFG_TYPE_TS                  0x53542020u   /* "TS  " in ASCII (see 'net_tcp.h  Note #1c4').        */ #else                                                           /* Dflt CPU_WORD_SIZE_08.                               */ #define  NET_TCP_OPT_CFG_TYPE_NONE                0x4E4F4E45u   /* "NONE" in ASCII.                                     */ #define  NET_TCP_OPT_CFG_TYPE_MAX_SEG_SIZE        0x4D535320u   /* "MSS " in ASCII.                                     */ #define  NET_TCP_OPT_CFG_TYPE_WIN_SCALE           0x57494E20u   /* "WIN " in ASCII (see 'net_tcp.h  Note #1c1').        */ #define  NET_TCP_OPT_CFG_TYPE_SACK_PERMIT         0x53434B50u   /* "SCKP" in ASCII (see 'net_tcp.h  Note #1c2').        */ #define  NET_TCP_OPT_CFG_TYPE_SACK                0x5341434Bu   /* "SACK" in ASCII (see 'net_tcp.h  Note #1c2').        */ #define  NET_TCP_OPT_CFG_TYPE_ECHO_REQ            0x45524551u   /* "EREQ" in ASCII (see 'net_tcp.h  Note #1c3').        */ #define  NET_TCP_OPT_CFG_TYPE_ECHO_REPLY          0x4543484Fu   /* "ECHO" in ASCII (see 'net_tcp.h  Note #1c3').        */ #define  NET_TCP_OPT_CFG_TYPE_TS                  0x54532020u   /* "TS  " in ASCII (see 'net_tcp.h  Note #1c4').        */ #endif #endif /*$PAGE*/ /* ********************************************************************************************************* *                                   TCP CONNECTION TIMEOUT DEFINES * * Note(s) : (1) (a) (1) RFC #1122, Section 4.2.2.13 'DISCUSSION' states that "the graceful close algorithm *                       of TCP requires that the connection state remain defined on (at least) one end of *                       the connection, for a timeout period of 2xMSL ... During this period, the (remote  *                       socket, local socket) pair that defines the connection is busy and cannot be reused". * *                   (2) The following sections reiterate that the TIME-WAIT state timeout scalar is two *                       maximum segment lifetimes (2 MSL) : * *                       (A) RFC #793, Section 3.9 'Event Processing : SEGMENT ARRIVES : *                               Check Sequence Number : TIME-WAIT STATE' *                       (B) RFC #793, Section 3.9 'Event Processing : SEGMENT ARRIVES : *                               Check FIN Bit         : TIME-WAIT STATE' * *               (b) (1) RFC #793, Section 3.3 'Sequence Numbers : Knowing When to Keep Quiet' states that *                       "the Maximum Segment Lifetime (MSL) is ... to be 2 minutes.  This is an engineering *                       choice, and may be changed if experience indicates it is desirable to do so". * *                   (2) Microsoft Corporation's Windows XP defaults MSL to 15 seconds. ********************************************************************************************************* */                                                                                     /* Max seg timeout (see Note #1b) : */ #define  NET_TCP_CONN_TIMEOUT_MAX_SEG_MIN_SEC   (  0u                           )   /* ... min  =  0 seconds            */ #define  NET_TCP_CONN_TIMEOUT_MAX_SEG_MAX_SEC   (  2u * DEF_TIME_NBR_SEC_PER_MIN)   /* ... max  =  2 minutes            */ #define  NET_TCP_CONN_TIMEOUT_MAX_SEG_DFLT_SEC  ( 15u                           )   /* ... dflt = 15 seconds            */ #define  NET_TCP_CONN_TIMEOUT_MAX_SEG_SCALAR       2u                               /* ... scalar (see Note #1a).       */ #define  NET_TCP_CONN_TIMEOUT_CONN_DFLT_SEC     (120u * DEF_TIME_NBR_SEC_PER_MIN)   /* Dflt conn timeout = 120 minutes  */ #define  NET_TCP_CONN_TIMEOUT_USER_DFLT_SEC     ( 30u * DEF_TIME_NBR_SEC_PER_MIN)   /* Dflt user timeout =  30 minutes  */ /*$PAGE*/ /* ********************************************************************************************************* *                                        TCP CONNECTION STATES * * Note(s) : (1) See the following RFC's for TCP state machine summary : * *               (a) RFC # 793; Sections 3.2, 3.4, 3.5, 3.9 *               (b) RFC #1122; Sections 4.2.2.8, 4.2.2.10, 4.2.2.11, 4.2.2.13, 4.2.2.18, 4.2.2.20 * *           (2) (a) #### Additional closing-data-available state used for closing connections to allow the *                   application layer to receive any remaining data. * *                   See also 'net_tcp.c  NetTCP_RxPktConnHandlerFinWait1()  Note #2f5A2', *                            'net_tcp.c  NetTCP_RxPktConnHandlerFinWait2()  Note #2f5B', *                            'net_tcp.c  NetTCP_RxPktConnHandlerClosing()   Note #2d2B2a1B', *                          & 'net_tcp.c  NetTCP_RxPktConnHandlerLastAck()   Note #2d2A1b'. ********************************************************************************************************* */ #define  NET_TCP_CONN_STATE_NONE                           0u #define  NET_TCP_CONN_STATE_FREE                           1u #define  NET_TCP_CONN_STATE_CLOSED                        10u #define  NET_TCP_CONN_STATE_LISTEN                        20u #define  NET_TCP_CONN_STATE_SYNC_RXD                      30u #define  NET_TCP_CONN_STATE_SYNC_RXD_PASSIVE              31u #define  NET_TCP_CONN_STATE_SYNC_RXD_ACTIVE               32u #define  NET_TCP_CONN_STATE_SYNC_TXD                      35u #define  NET_TCP_CONN_STATE_CONN                          40u #define  NET_TCP_CONN_STATE_FIN_WAIT_1                    50u #define  NET_TCP_CONN_STATE_FIN_WAIT_2                    51u #define  NET_TCP_CONN_STATE_CLOSING                       52u #define  NET_TCP_CONN_STATE_TIME_WAIT                     53u #define  NET_TCP_CONN_STATE_CLOSE_WAIT                    55u #define  NET_TCP_CONN_STATE_LAST_ACK                      56u #define  NET_TCP_CONN_STATE_CLOSING_DATA_AVAIL            59u   /* See Note #2a.                                        */ /* ********************************************************************************************************* *                                     TCP CONNECTION QUEUE STATES ********************************************************************************************************* */ #define  NET_TCP_RX_Q_STATE_NONE                           0u #define  NET_TCP_RX_Q_STATE_CLOSED                       100u #define  NET_TCP_RX_Q_STATE_CLOSING                      101u #define  NET_TCP_RX_Q_STATE_SYNC                         110u #define  NET_TCP_RX_Q_STATE_CONN                         111u #define  NET_TCP_TX_Q_STATE_NONE                           0u #define  NET_TCP_TX_Q_STATE_CLOSED                       200u #define  NET_TCP_TX_Q_STATE_CLOSING                      201u #define  NET_TCP_TX_Q_STATE_SYNC                         210u #define  NET_TCP_TX_Q_STATE_CONN                         211u #define  NET_TCP_TX_Q_STATE_SUSPEND                      215u #define  NET_TCP_TX_Q_STATE_CLOSED_SUSPEND               220u #define  NET_TCP_TX_Q_STATE_CLOSING_SUSPEND              221u /*$PAGE*/ /* ********************************************************************************************************* *                                     TCP CONNECTION CODE DEFINES **************

    標(biāo)簽: tcp uCOS-II

    上傳時(shí)間: 2015-11-22

    上傳用戶:the same kong

  • 臺(tái)灣合泰HT9B92 TSSOP48 LCD液晶驅(qū)動(dòng)芯片

      產(chǎn)品型號(hào):HT9B92  產(chǎn)品品牌:HOLTEK/合泰 封裝形式:TSSOP48/LQFP48   產(chǎn)品年份:新年份 原廠直銷,工程服務(wù),技術(shù)支持,價(jià)格更具優(yōu)勢(shì)!   RAM 映射 36×4 LCD 顯示驅(qū)動(dòng)器 概述 HT9B92 是一款存儲(chǔ)器映射和多功能LCD控制驅(qū)動(dòng)芯片。該芯片顯示模式有144 點(diǎn)(36×4 )。 HT9B92 軟件配置特性使得它適用于多種LCD應(yīng)用,包括LCD 模塊和顯示子系統(tǒng)。HT9B92 通過(guò)雙線雙向 I2C 接口與大多數(shù)微處理器/ 微控制器進(jìn)行通信。 功能特點(diǎn) ● 工作電壓:2.4V~5.5V ● 內(nèi)部集成振蕩電路 ● Bias: 1/2 or 1/3; Duty: 1/4 ● 帶電壓跟隨器的內(nèi)部LCD 偏置發(fā)生器 ● 提供VLCD 引腳來(lái)調(diào)整LCD 工作電壓 ● I2C接口 ● 可選 LCD 幀頻率 ● 多達(dá)36×4 位RAM 用來(lái)存儲(chǔ)顯示數(shù)據(jù) ● 最大顯示模式36×4:36 SEGs 和4 COMs ● 多種閃爍模式:不閃爍,0.5Hz,1Hz,2Hz ● 寫地址自動(dòng)增加 ● 低功耗省電模式 ● 采用硅柵極CMOS 制造工藝 ● 封裝類型:48-pin TSSOP/LQFP ● 市面可兼容型號(hào):元泰VINTEK:VKL44A TSSOP48封裝,VKL144B QFN48(6MM*6MM)封裝,VKL128 LQFP44封裝,VKL060 SSOP24封裝 ------ 同種腳位可以任意切換,少腳位更具性價(jià)比高,方便設(shè)計(jì)等特點(diǎn)。 ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●   產(chǎn)品型號(hào):VKL144A 產(chǎn)品品牌:VINTEK/元泰 封裝形式:TSSOP48 產(chǎn)品年份:新年份 原廠直銷,工程服務(wù),技術(shù)支持,價(jià)格更具優(yōu)勢(shì)!   超低功耗液晶LCD顯示驅(qū)動(dòng)芯片 概述 VKL144A是一款性能優(yōu)越的字段式液晶顯示驅(qū)動(dòng)芯片,由于其驅(qū)動(dòng)段位多達(dá)144段和超低功耗的工藝設(shè)計(jì)特點(diǎn)。還具有性能穩(wěn)定和低價(jià)格優(yōu)勢(shì)、供貨穩(wěn)定,目前被業(yè)界廣泛應(yīng)用在眾多的儀器儀表的產(chǎn)品上。比如手持式儀表、費(fèi)率表、工控儀表、醫(yī)療儀器、專用測(cè)量?jī)x表頭等等設(shè)備上使用 功能特點(diǎn) ● 液晶驅(qū)動(dòng)輸出: Common 輸出4線 Segment 輸出36線 ● 內(nèi)置Display data RAM (DDRAM) 內(nèi)置RAM容量:36*4 =144 bit ● 液晶驅(qū)動(dòng)的電源電路 1/2 ,1/3 Bias ,1/4 Duty 內(nèi)置Buffer AMP I2C串行接口(SCL, SDA) ● 內(nèi)置振蕩電路 ● 不需要外圍部件 ● 低功耗設(shè)計(jì) ● 搭載等待模式 ● 內(nèi)置Power-on Reset電路 ● 搭載閃爍功能 ● 工作電源電壓: 2.5-5.5V ★應(yīng)用推薦: 各種費(fèi)率表,電表、水表、氣表、熱表、各種計(jì)量專用表頭。 ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 產(chǎn)品型號(hào):VKL144B   產(chǎn)品品牌:VINTEK/元泰 封裝形式:QFN48L(6MM*6MM) 產(chǎn)品年份:新年份 原廠直銷,工程服務(wù),技術(shù)支持,價(jià)格更具優(yōu)勢(shì)!   超低功耗液晶LCD顯示驅(qū)動(dòng)芯片 概述 VKL144B是一款性能優(yōu)越的字段式液晶顯示驅(qū)動(dòng)芯片,由于其驅(qū)動(dòng)段位多達(dá)144段和超低功耗的工藝設(shè)計(jì)特點(diǎn)。還具有性能穩(wěn)定和低價(jià)格優(yōu)勢(shì)、供貨穩(wěn)定,目前被業(yè)界廣泛應(yīng)用在眾多的儀器儀表的產(chǎn)品上。比如手持式儀表、費(fèi)率表、工控儀表、醫(yī)療儀器、專用測(cè)量?jī)x表頭等等設(shè)備上使用 功能特點(diǎn) ● 液晶驅(qū)動(dòng)輸出: Common 輸出4線 Segment 輸出36線 ● 內(nèi)置Display data RAM (DDRAM) 內(nèi)置RAM容量:36*4 =144 bit ● 液晶驅(qū)動(dòng)的電源電路 1/2 ,1/3 Bias ,1/4 Duty 內(nèi)置Buffer AMP I2C串行接口(SCL, SDA) ● 內(nèi)置振蕩電路 ● 不需要外圍部件 ● 低功耗設(shè)計(jì) ● 搭載等待模式 ● 內(nèi)置Power-on Reset電路 ● 搭載閃爍功能 ● 工作電源電壓: 2.5-5.5V ★應(yīng)用推薦: 各種費(fèi)率表,電表、水表、氣表、熱表、各種計(jì)量專用表頭。 HOLTEK合泰全系列產(chǎn)品 芯片介紹如下: 一.LCD液晶顯示驅(qū)動(dòng)控制器              HT1620   HT1620G   HT1621   HT1621B   HT1621G   HT1622   HT1622G   HT1623  HT1625   HT1626    HT16C21   HT16C22   HT16C23   HT16C24  HT1620   HT16220  HT1647   HT1650   HT1660    HT1670   HT16K23   HT9B92   HT9B92G    HT9B95A    HT9B95B   HT9B95C   HT16LK24  HT16L21  HT16L23   HT1611C  HT1613C  HT1616C (全部封裝、規(guī)格形式 均有海量現(xiàn)貨!)   二:LED/VFD控制、驅(qū)動(dòng)器 HT16506   HT16511   HT16512   HT16515   HT16514   HT16561 HT16562  HT16565  HT16566  HT16523  HT16525  HT1632C   HT16K33  HT16K33  HT16528-001  HT16528-002  HT16528-003 (全部封裝、規(guī)格形式 均有海量現(xiàn)貨!)         三.Touch Key觸摸按鍵電路/ I/O Flash MCU             BS801B/C   BS802B/C   BS804B/C   BS804B/C  BS806B/C   BS808B/C BS812A-1   BS813A-1   BS814A-1   BS814A-2  BS816A-1   BS818A-2 BS8112A-3   BS8116A-3    BS83A02A-4    BS83A04A-3   BS83A04A-4 BS83B04A-4  BS83B08A-3   BS83B08A-4   BS83B12A-3   BS83B12A-4 (全部封裝、規(guī)格形式 均有海量現(xiàn)貨!) 四.HT7XXX全系列 微功耗LDO              HT1015-1  HT71xx-1  HT71xx-2 HT71xx-3 HT71xx-3   HT75xx-1   HT75xx-2  HT75xx-3 HT73xx  HT72xx   HT78xx   Power management(電源LDO穩(wěn)壓管理IC) HT71**為30MA穩(wěn)壓芯片 產(chǎn)品:HT7130,HT7133,HT7136,HT7144,HT7150 HT75**為100MA穩(wěn)壓芯片 產(chǎn)品:HT7530,HT7533,HT7536,HT7544,HT7550 HT73**為300MA穩(wěn)壓芯片 產(chǎn)品:HT7318,HT7325,HT7327,HT7330,HT7333,HT7335,HT7350 HT70**為電壓檢測(cè)芯片 產(chǎn)品:HT7022,HT7024,HT7027,HT7033,HT7039,HT7044,HT7050 HT77::為升壓DC-DC芯片 產(chǎn)品:HT7727,HT7730,HT7733,HT7737,HT7750 LDO與探測(cè)器和數(shù)據(jù)收發(fā):HT71DXX     高電源抑制比300mA雙LDO穩(wěn)壓器:HT72Dxxxx      高電源抑制比300mA LDO穩(wěn)壓器:HT72BXX   高電源抑制比 150mA LDO穩(wěn)壓器:HT75BXX 高電源抑制比 500mA LDO穩(wěn)壓器:HT78BXX    3SOT89 T/R         電壓檢測(cè)器系列(小功率):HT70xxA-1   HT70xxA-2   HT70xxA-3       PFM升壓DC-DC變換器:HT77xx   HT77xxA   HT77S10   HT77S11           PFM同步升壓直流/直流轉(zhuǎn)換器:HT77xxS   HT77xxSA        LED照明驅(qū)動(dòng):HT7L4811   HT7L4091  HT7L4091   HT7L2102   HT7L2103   HT7L2103        白光LED背光驅(qū)動(dòng):HT7936  HT7937  HT7938  HT7938A  HT7939  HT7943   HT7945        降壓直流-直流轉(zhuǎn)換器:HT7465   HT7466         AC/DC PWM變換器:HT7A3942   HT7A6002   HT7A6003   HT7A4016    充電泵直流/直流轉(zhuǎn)換器:HT7660   (全部封裝、規(guī)格形式 均有海量現(xiàn)貨!)   五:時(shí)鐘IC及其他消費(fèi)類IC              HT1380   HT1380A   HT1381   HT1381A   HT1382  HT9200A   HT9170  HT9172   HT9032   HT8970   HT9247   HT82V731   HT82V736   HT6221 HT6222   HT62104   HT12A\E   HT12D\F (全部封裝、規(guī)格形式 均有海量現(xiàn)貨!)   六.電可擦除只讀存儲(chǔ)器              HT2201   HT24LC02  HT24LC02A  HT24LC04  HT24LC08  HT24LC16  HT24LC32         HT24LC64   HT24LC128   HT24LC256   HT93LC46   HT93LC66   HT93LC86 (全部封裝、規(guī)格形式 均有海量現(xiàn)貨!)   七.各類編碼/射頻/解碼器 HT12D   HT12E   HT12F   HT6010   HT6012   HT6014   HT6026   HT6030 HT6032   HT6034   HT600   HT604L   HT6207   HT680   HT6P20B   HT6P20D    HT6P40B2    HT6P40C2   HT6P40D2   HT6P40E2   HT6P40B2T3    HT6P40C2T3 HT6P40D2T3   HT6P40E2T3    HT6P423A   HT6P423A   HT6P427A   HT6P433A        HT6P437A   HT12C2T3   HT12C2T4   HT12E2T3   HT12E2T4   HT12E2T4       HT16C2T3   HT16C2T4   HT16E2T3   HT16E2T4   HT16G2T3   HT16G2T4   HT9831   HT7610A   HT7611A/B   HT7612   HT7612B (全部封裝、規(guī)格形式 均有海量現(xiàn)貨!)           八.MCU(微控IC) HT48 系列 應(yīng)用于遙控,電扇/電燈控制,洗衣機(jī)控制,電子秤,玩具及各種系統(tǒng)控制. 產(chǎn)品:HT48R05,HT48R06,HT48R30,HT48R50 HT49系列 應(yīng)用于多種LCD DI低功耗應(yīng)用,如電子秤,休閑產(chǎn)品,高階的家用電器 產(chǎn)品:HT49R30,HT49R50 HT46帶A/D系列 適用于充電器控制,電磁爐等 產(chǎn)品:HT46R47,HT46R22,HT46R23,HT46R24,HT46R51 HT46帶A/D及LCD系列 適用于洗衣機(jī)控制器,相機(jī)控制器和帶LCD顯示的家用電器系列 產(chǎn)品:HT46R62,HT46R63,HT46R64 HT48RA系列適用于紅外遙控器以及各種電子系統(tǒng)的控制器 (全部封裝、規(guī)格形式 均有海量現(xiàn)貨!)     九.放大器/音頻放大器 /DA轉(zhuǎn)換器              HT9231  HT9232  HT9234  HT9251  HT9252  HT9254  HT9274  HT9291  HT9292  HT9294 HT82V732  HT82V733  HT82V735  HT82V736  HT82V736       HT82V739   HT82V73   HT82V731   HT82V737   HT82V738 (全部封裝、規(guī)格形式 均有海量現(xiàn)貨!)         十.音調(diào)IC/發(fā)生器 /接收器              HT9200A   HT9200B   HT9170B   HT9170D   HT9172   HT8970   HT8972 (全部封裝、規(guī)格形式 均有海量現(xiàn)貨!)     IC型號(hào)眾多,未能一一收錄。    芯片主要應(yīng)用領(lǐng)域如下:  ★顯示模塊:電子秤、無(wú)線麥克風(fēng)、錄音筆、影音多媒體、小家電周邊 ★家電類:電風(fēng)扇、電飯煲、玩具、冷氣機(jī)、暖風(fēng)機(jī)、空調(diào)扇、飲水機(jī)、抽油煙機(jī)、消毒柜、電熱水器、面包機(jī)、豆?jié){機(jī)、咖啡壺、電冰箱、洗衣機(jī)控制器、空調(diào)控制板等。 ★通訊類:來(lái)電顯示電話、無(wú)繩電話、IC電話、投幣電話、對(duì)講機(jī)等 ★玩具游戲類:無(wú)線遙控車、PS游戲機(jī)、跳舞毯、方向盤、手柄、電子槍、PS開機(jī)IC等。 ★計(jì)算機(jī)周邊:顯示器控制、PC-MOUSE、單/雙滾、遙控MOUSE、鍵盤、手寫板等。 ★智能卡類:IC卡煤氣表、電能表、水表、IC讀寫器、IC卡門禁系統(tǒng)等。 ★汽車及防盜類:機(jī)車防盜器、********器、汽車天線控制器、里程表、汽車日歷等。 ★醫(yī)用保健類:電子針灸器、甩脂機(jī)、智能體溫計(jì)、LCD顯示血壓計(jì)、跑步機(jī)、按摩器、按摩墊、按摩椅   等。 ★儀表類:電壓表、瓦斯表、電池電壓檢測(cè)器、頻率計(jì)、計(jì)數(shù)器、電度表、水位檢測(cè)器等。 ★其它類:充電器、照相機(jī)、電子萬(wàn)年鐘、自動(dòng)給皂機(jī)、路燈控制器、呼叫服務(wù)器等    

    標(biāo)簽: TSSOP B92 HT9 LCD HT 9B 92 48 合泰 液晶驅(qū)動(dòng)

    上傳時(shí)間: 2018-12-07

    上傳用戶:shubashushi66

  • STM32-PMSM-SDK-V4.2使用指南中文版

    ·SDK V4.2軟件包包含:PMSM FOC固件庫(kù)和STMC Workbench(GUI),允許用戶使用STM32進(jìn)行單或雙PMSM馬達(dá)的FOC的驅(qū)動(dòng),其支持STM32F0Xx,STM32F1xx,STM32F2XX,STM32F3xX及STM32F4xx·相電流采樣支持:·1-SHUNT:采樣電阻放在DCBUS上·ST專利的算法·僅需要1個(gè)電阻/運(yùn)放:成本較低·電流采樣算法可能會(huì)帶來(lái)力矩紋波·3-SHUNT:采樣電阻放在3個(gè)下橋臂上·電流采樣精度高·不會(huì)有電流紋波產(chǎn)生·ICS:2個(gè)隔離的電流傳感器·放在A/B相繞組上·適用于相電流較大的場(chǎng)合:無(wú)功耗·成本較/LCO

    標(biāo)簽: stm32 PMSM

    上傳時(shí)間: 2022-07-27

    上傳用戶:kent

主站蜘蛛池模板: 黔西| 通道| 和顺县| 荥阳市| 苏尼特左旗| 南漳县| 蓬莱市| 鄯善县| 长治县| 临海市| 通河县| 东宁县| 卢氏县| 枣庄市| 久治县| 柳河县| 玉林市| 木里| 申扎县| 沭阳县| 阳曲县| 陆河县| 徐水县| 济宁市| 菏泽市| 天祝| 邵武市| 咸阳市| 泰宁县| 哈尔滨市| 台东县| 台前县| 大厂| 林州市| 循化| 收藏| 洱源县| 常宁市| 上犹县| 平果县| 万源市|