BC20-TE-B NB-Iot 評(píng)估板評(píng)估板原廠原理圖V1.2。完整對(duì)應(yīng)實(shí)物裝置。
上傳時(shí)間: 2022-06-17
上傳用戶:
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
有兩種方式可以讓設(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
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 └─ ...
上傳時(shí)間: 2013-10-13
上傳用戶:zhangliming420
介紹了以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處,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 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
上傳用戶:水口鴻勝電器
/* ********************************************************************************************************* * 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 **************
上傳時(shí)間: 2015-11-22
上傳用戶:the same kong
產(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
·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
上傳時(shí)間: 2022-07-27
上傳用戶:kent
蟲蟲下載站版權(quán)所有 京ICP備2021023401號(hào)-1