虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

ST<b>Gapi</b>Buffer

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

    BC20-TE-B NB-Iot 评估板评估板原厂原理图V1.2。完整对应实物装置。

    标签: BC20 NB-Iot Quectel

    上传时间: 2022-06-17

    上传用户:

  • ASR M08-B资料

    ASR M08-B设置软件 V3.2  arduino 2560+ASRM08-B测试程序  arduino UNO+ASRM08-B测试程序语音控制台灯电路图及C51源码(不带校验码) 继电器模块设置。   ASR M08-B是一款语音识别模块。首先对模块添加一些关键字,对着该模块说出关键字,串口会返回三位的数,如果是返回特定的三位数字,还会引起ASR M08-B的相关引脚电平的变化。【测试】①打开“ASR M08-B设置软件 V3.2.exe”。②选择“串口号”、“打开串口”、点选“十六进制显示”。③将USB转串口模块连接到语音识别模块上。接线方法如下:语音模块TXD --> USB模块RXD语音模块RXD --> USB模块TXD语音模块GND --> USB模块GND语音模块3V3 --> USB模块3V3(此端为3.3V电源供电端。)④将模块的开关拨到“A”端,最好再按一次上面的大按钮(按一次即可,为了确保模块工作在正确的模式)。⑤对着模块说“开灯”、“关灯”模块会返回“0B”、“0A”,表示正常(注意:0B对应返回值010,0B对应返回值010,返回是16进制显示的嘛,设置的时候是10进制设置的)。

    标签: ASR M08-B

    上传时间: 2022-07-06

    上传用户:aben

  • 驱动程序与应用程序的接口

    有两种方式可以让设备和应用程序之间联系:1. 通过为设备创建的一个符号链;2. 通过输出到一个接口WDM驱动程序建议使用输出到一个接口而不推荐使用创建符号链的方法。这个接口保证PDO的安全,也保证安全地创建一个惟一的、独立于语言的访问设备的方法。一个应用程序使用Win32APIs来调用设备。在某个Win32 APIs和设备对象的分发函数之间存在一个映射关系。获得对设备对象访问的第一步就是打开一个设备对象的句柄。 用符号链打开一个设备的句柄为了打开一个设备,应用程序需要使用CreateFile。如果该设备有一个符号链出口,应用程序可以用下面这个例子的形式打开句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3",  GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路径名的前缀“\\.\”告诉系统本调用希望打开一个设备。这个设备必须有一个符号链,以便应用程序能够打开它。有关细节查看有关Kdevice和CreateLink的内容。在上述调用中第一个参数中前缀后的部分就是这个符号链的名字。注意:CreatFile中的第一个参数不是Windows 98/2000中驱动程序(.sys文件)的路径。是到设备对象的符号链。如果使用DriverWizard产生驱动程序,它通常使用类KunitizedName来构成设备的符号链。这意味着符号链名有一个附加的数字,通常是0。例如:如果链接名称的主干是L“TestDevice”那么在CreateFile中的串就该是“\\\\.\\TestDevice0”。如果应用程序需要被覆盖的I/O,第六个参数(Flags)必须或上FILE_FLAG_OVERLAPPED。 使用一个输出接口打开句柄用这种方式打开一个句柄会稍微麻烦一些。DriverWorks库提供两个助手类来使获得对该接口的访问容易一些,这两个类是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass类封装了一个设备信息集,该信息集包含了特殊类中的所有设备接口信息。应用程序能有用CdeviceInterfaceClass类的一个实例来获得一个或更多的CdeviceInterface类的实例。CdeviceInterface类是一个单一设备接口的抽象。它的成员函数DevicePath()返回一个路径名的指针,该指针可以在CreateFile中使用来打开设备。下面用一个小例子来显示这些类最基本的使用方法: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;} 在设备中执行I/O操作一旦应用程序获得一个有效的设备句柄,它就能使用Win32 APIs来产生到设备对象的IRPs。下面的表显示了这种对应关系。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 需要解释一下设备类成员的Close和CleanUp:CreateFile使内核为设备创建一个新的文件对象。这使得多个句柄可以映射同一个文件对象。当这个文件对象的最后一个用户级句柄被撤销后,I/O管理器调用CleanUp。当没有任何用户级和核心级的对文件对象的访问的时候,I/O管理器调用Close。如果被打开的设备不支持指定的功能,则调用相应的Win32将引起错误(无效功能)。以前为Windows95编写的VxD的应用程序代码中可能会在打开设备的时候使用FILE_FLAG_DELETE_ON_CLOSE属性。在Windows NT/2000中,建议不要使用这个属性,因为它将导致没有特权的用户企图打开这个设备,这是不可能成功的。I/O管理器将ReadFile和WriteFile的buff参数转换成IRP域的方法依赖于设备对象的属性。当设备设置DO_DIRECT_IO标志,I/O管理器将buff锁住在存储器中,并且创建了一个存储在IRP中的MDL域。一个设备可以通过调用Kirp::Mdl来存取MDL。当设备设置DO_BUFFERED_IO标志,设备对象分别通过KIrp::BufferedReadDest或 KIrp::BufferedWriteSource为读或写操作获得buff地址。当设备不设置DO_BUFFERED_IO标志也不设置DO_DIRECT_IO,内核设置IRP 的UserBuffer域来对应ReadFile或WriteFile中的buff参数。然而,存储区并没有被锁住而且地址只对调用进程有效。驱动程序可以使用KIrp::UserBuffer来存取IRP域。对于DeviceIoControl调用,buffer参数的转换依赖于特殊的I/O控制代码,它不在设备对象的特性中。宏CTL_CODE(在winioctl.h中定义)用来构造控制代码。这个宏的其中一个参数指明缓冲方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表显示了这些方法和与之对应的能获得输入缓冲与输出缓冲的KIrp中的成员函数: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,系统分配一个单一的缓冲来作为输入与输出。驱动程序必须在向输出缓冲放数据之前拷贝输入数据。驱动程序通过调用KIrp::IoctlBuffer获得缓冲地址。在完成时,I/O管理器从系统缓冲拷贝数据到提供给Ring 3级调用者使用的缓冲中。驱动程序必须在结束前存储拷贝到IRP的Information成员中的数据个数。如果控制代码不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,则DeviceIoControl的参数呈现不同的含义。参数InputBuffer被拷贝到一个系统缓冲,这个缓冲驱动程序可以通过调用KIrp::IoctlBuffer。参数OutputBuffer被映射到KMemory对象,驱动程序对这个对象的访问通过调用KIrp::Mdl来实现。对于METHOD_OUT_DIRECT,调用者必须有对缓冲的写访问权限。注意,对METHOD_NEITHER,内核只提供虚拟地址;它不会做映射来配置缓冲。虚拟地址只对调用进程有效。这里是一个用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE来定义一个IOCTL代码:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)现在使用一个DeviceIoControl调用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING,  NULL, // no input  注意,这里放的是包含有执行操作命令的字符串指针  0, FirmwareRev,      //这里是output串指针,存放从驱动程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize,  NULL // not overlapped I/O );如果输出缓冲足够大,设备拷贝串到里面并将拷贝的资结束设置到FirmwareRevSize中。在驱动程序中,代码看起来如下所示: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 . . .   } }

    标签: 驱动程序 应用程序 接口

    上传时间: 2013-10-17

    上传用户:gai928943

  • realview mdk 3.2 下载

    1.增加的设备支持: 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的头文件库 3.增加了ST-LINK II的调试支持 4.增加了对Cortex-M3 内核芯片的RTX Event Viewer 的支持 5.增加了MCBSTM32: STM32 FLASH OPTION BYTES PROGRAMMING 6.增加了ULINK2对Cortex-M3的SWV功能的调试 7.增强了使用GNU在MDK下调试M1,M3,ARM7,ARM9的调试功能( Using μVision with CodeSourcery GNU ARM Toolchain.) 8.增加了大量经典开发板例程 Boards目录列表: ├─Embest 深圳市英蓓特公司开发板例程 │ ├─AT91EB40X-40008 │ ├─S3CEB2410 │ ├─ATEBSAM7S │ ├─LPC22EB06-I │ ├─LPCEB2000-A │ ├─LPCEB2000-B │ ├─LPCEB2000-S │ ├─str710 │ ├─str711 │ ├─str730 │ ├─str750 │ ├─STR912 │ ├─STM32V100 │ ├─STM32R100 │ ├─ATEB9200 ├─ADI ADI半导体的芯片例程 │ ├─ADuC702X │ └─ADuC712x ├─Atmel Atmel半导体的芯片例程 │ ├─AT91RM9200-EK │ ├─AT91SAM7A3-EK │ ├─AT91SAM7S-EK │ ├─AT91SAM7SE-EK │ ├─AT91SAM7X-EK │ ├─AT91SAM9260-EK │ ├─AT91SAM9261-EK │ ├─AT91SAM9263-EK ├─Keil Keil公司的开发板例程 │ ├─MCB2100 │ ├─MCB2103 │ ├─MCB2130 │ ├─MCB2140 │ ├─MCB2300 │ ├─MCB2400 │ ├─MCB2900 │ ├─MCBLM3S │ ├─MCBSTM32 │ ├─MCBSTR7 │ ├─MCBSTR730 │ ├─MCBSTR750 │ └─MCBSTR9 ├─Luminary Luminary半导体公司的芯片例程 │ ├─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半导体公司的芯片例程 │ ├─LH79524 │ ├─LH7A404 │ └─SJA2510 ├─OKI OKI半导体公司的芯片例程 │ ├─ML674000 │ ├─ML67Q4003 │ ├─ML67Q4051 │ ├─ML67Q4061 │ ├─ML67Q5003 │ └─ML69Q6203 ├─Samsung Samsung半导体公司的芯片例程 │ ├─S3C2440 │ ├─S3C44001 │ └─S3F4A0K ├─ST ST半导体公司的芯片例程 │ ├─CQ-STARM2 │ ├─EK-STM32F │ ├─STM32F10X_EVAL │ ├─STR710 │ ├─STR730 │ ├─STR750 │ ├─STR910 │ └─STR9_DONGLE ├─TI TI半导体公司的芯片例程 │ ├─TMS470R1A256 │ └─TMS470R1B1M ├─Winbond Winbond半导体公司的芯片例程 │ └─W90P710 └─ ...

    标签: realview mdk 3.2

    上传时间: 2013-10-13

    上传用户:zhangliming420

  • PLC和变频器在烟支输送存储系统中的应用

    介绍了以PLC为控制单元,变频器为执行单元的控制系统及其在烟支输送储存系统中的应用,并给出了系统的组成、硬件的配置及具体的实现方法。关键词 : PLC 变频器输送储存系统 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

    标签: PLC 变频器 中的应用 存储系统

    上传时间: 2013-10-22

    上传用户:ouyang426

  • DELPHI basicCtrl+NUM 直接将光标跳到NUM处

    DELPHI basicCtrl+NUM 直接将光标跳到NUM处,NUM是用Ctrl+Shift+NUM设置的标号。 NUM不能用小键盘。 Ctrl+Home 将光标移至文件头。 Ctrl+End 将光标移至文件尾。 Ctrl+B Buffer List窗口。 Ctrl+I 同Tab键。 Ctrl+M 同Enter键。 Ctrl+N 同Enter键,但光标位置保持不变。 Ctrl+T 删除光标右边的一个单词。 Ctrl+Y 删除光标所在行。 Ctrl+Shift+↑ 光标在函数体内时,将光标快速移至当前函数声明处。 Ctrl+Shift+↓ 光标在函数声明行时,将光标快速移至函数定义处。 Ctrl+Shift+C 声明一个过程或函数后,直接生成过程或函数的名称、begin、end Ctrl+Shift+E 光标在Edit窗口和Explorer窗口间切换。 Ctrl+Shift+G 插入GUID。 Ctrl+Shift+J 弹出Delphi语句提示窗口,选择所需语句将自动完成一条语句。 Ctrl+Shift+T 在光标行加入To-Do注释。 Ctrl+Shift+Y 删除光标之后至本行末尾之间的文本。 Ctrl+F3 Call Stack窗口。 Ctrl+F4 等于File菜单中的Close项。

    标签: basicCtrl NUM DELPHI 光标

    上传时间: 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 黑鹰行动.mpg -o c:\temp -i A -m 1000 -b 3750000 soure file: 黑鹰行动.mpg output directory: c:\temp filename: 000000A,000000A.ff,000000A.fr,000000A.vvx max coding error: 1000 trick generation speed: 3750000 bps a

    标签: TrickTest tricktest command source

    上传时间: 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 **************

    标签: tcp uCOS-II

    上传时间: 2015-11-22

    上传用户:the same kong

  • 台湾合泰HT9B92 TSSOP48 LCD液晶驱动芯片

      产品型号:HT9B92  产品品牌:HOLTEK/合泰 封装形式:TSSOP48/LQFP48   产品年份:新年份 原厂直销,工程服务,技术支持,价格更具优势!   RAM 映射 36×4 LCD 显示驱动器 概述 HT9B92 是一款存储器映射和多功能LCD控制驱动芯片。该芯片显示模式有144 点(36×4 )。 HT9B92 软件配置特性使得它适用于多种LCD应用,包括LCD 模块和显示子系统。HT9B92 通过双线双向 I2C 接口与大多数微处理器/ 微控制器进行通信。 功能特点 ● 工作电压:2.4V~5.5V ● 内部集成振荡电路 ● Bias: 1/2 or 1/3; Duty: 1/4 ● 带电压跟随器的内部LCD 偏置发生器 ● 提供VLCD 引脚来调整LCD 工作电压 ● I2C接口 ● 可选 LCD 帧频率 ● 多达36×4 位RAM 用来存储显示数据 ● 最大显示模式36×4:36 SEGs 和4 COMs ● 多种闪烁模式:不闪烁,0.5Hz,1Hz,2Hz ● 写地址自动增加 ● 低功耗省电模式 ● 采用硅栅极CMOS 制造工艺 ● 封装类型:48-pin TSSOP/LQFP ● 市面可兼容型号:元泰VINTEK:VKL44A TSSOP48封装,VKL144B QFN48(6MM*6MM)封装,VKL128 LQFP44封装,VKL060 SSOP24封装 ------ 同种脚位可以任意切换,少脚位更具性价比高,方便设计等特点。 ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●   产品型号:VKL144A 产品品牌:VINTEK/元泰 封装形式:TSSOP48 产品年份:新年份 原厂直销,工程服务,技术支持,价格更具优势!   超低功耗液晶LCD显示驱动芯片 概述 VKL144A是一款性能优越的字段式液晶显示驱动芯片,由于其驱动段位多达144段和超低功耗的工艺设计特点。还具有性能稳定和低价格优势、供货稳定,目前被业界广泛应用在众多的仪器仪表的产品上。比如手持式仪表、费率表、工控仪表、医疗仪器、专用测量仪表头等等设备上使用 功能特点 ● 液晶驱动输出: Common 输出4线 Segment 输出36线 ● 内置Display data RAM (DDRAM) 内置RAM容量:36*4 =144 bit ● 液晶驱动的电源电路 1/2 ,1/3 Bias ,1/4 Duty 内置Buffer AMP I2C串行接口(SCL, SDA) ● 内置振荡电路 ● 不需要外围部件 ● 低功耗设计 ● 搭载等待模式 ● 内置Power-on Reset电路 ● 搭载闪烁功能 ● 工作电源电压: 2.5-5.5V ★应用推荐: 各种费率表,电表、水表、气表、热表、各种计量专用表头。 ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 产品型号:VKL144B   产品品牌:VINTEK/元泰 封装形式:QFN48L(6MM*6MM) 产品年份:新年份 原厂直销,工程服务,技术支持,价格更具优势!   超低功耗液晶LCD显示驱动芯片 概述 VKL144B是一款性能优越的字段式液晶显示驱动芯片,由于其驱动段位多达144段和超低功耗的工艺设计特点。还具有性能稳定和低价格优势、供货稳定,目前被业界广泛应用在众多的仪器仪表的产品上。比如手持式仪表、费率表、工控仪表、医疗仪器、专用测量仪表头等等设备上使用 功能特点 ● 液晶驱动输出: Common 输出4线 Segment 输出36线 ● 内置Display data RAM (DDRAM) 内置RAM容量:36*4 =144 bit ● 液晶驱动的电源电路 1/2 ,1/3 Bias ,1/4 Duty 内置Buffer AMP I2C串行接口(SCL, SDA) ● 内置振荡电路 ● 不需要外围部件 ● 低功耗设计 ● 搭载等待模式 ● 内置Power-on Reset电路 ● 搭载闪烁功能 ● 工作电源电压: 2.5-5.5V ★应用推荐: 各种费率表,电表、水表、气表、热表、各种计量专用表头。 HOLTEK合泰全系列产品 芯片介绍如下: 一.LCD液晶显示驱动控制器              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 (全部封装、规格形式 均有海量现货!)   二:LED/VFD控制、驱动器 HT16506   HT16511   HT16512   HT16515   HT16514   HT16561 HT16562  HT16565  HT16566  HT16523  HT16525  HT1632C   HT16K33  HT16K33  HT16528-001  HT16528-002  HT16528-003 (全部封装、规格形式 均有海量现货!)         三.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 (全部封装、规格形式 均有海量现货!) 四.HT7XXX全系列 微功耗LDO              HT1015-1  HT71xx-1  HT71xx-2 HT71xx-3 HT71xx-3   HT75xx-1   HT75xx-2  HT75xx-3 HT73xx  HT72xx   HT78xx   Power management(电源LDO稳压管理IC) HT71**为30MA稳压芯片 产品:HT7130,HT7133,HT7136,HT7144,HT7150 HT75**为100MA稳压芯片 产品:HT7530,HT7533,HT7536,HT7544,HT7550 HT73**为300MA稳压芯片 产品:HT7318,HT7325,HT7327,HT7330,HT7333,HT7335,HT7350 HT70**为电压检测芯片 产品:HT7022,HT7024,HT7027,HT7033,HT7039,HT7044,HT7050 HT77::为升压DC-DC芯片 产品:HT7727,HT7730,HT7733,HT7737,HT7750 LDO与探测器和数据收发:HT71DXX     高电源抑制比300mA双LDO稳压器:HT72Dxxxx      高电源抑制比300mA LDO稳压器:HT72BXX   高电源抑制比 150mA LDO稳压器:HT75BXX 高电源抑制比 500mA LDO稳压器:HT78BXX    3SOT89 T/R         电压检测器系列(小功率):HT70xxA-1   HT70xxA-2   HT70xxA-3       PFM升压DC-DC变换器:HT77xx   HT77xxA   HT77S10   HT77S11           PFM同步升压直流/直流转换器:HT77xxS   HT77xxSA        LED照明驱动:HT7L4811   HT7L4091  HT7L4091   HT7L2102   HT7L2103   HT7L2103        白光LED背光驱动:HT7936  HT7937  HT7938  HT7938A  HT7939  HT7943   HT7945        降压直流-直流转换器:HT7465   HT7466         AC/DC PWM变换器:HT7A3942   HT7A6002   HT7A6003   HT7A4016    充电泵直流/直流转换器:HT7660   (全部封装、规格形式 均有海量现货!)   五:时钟IC及其他消费类IC              HT1380   HT1380A   HT1381   HT1381A   HT1382  HT9200A   HT9170  HT9172   HT9032   HT8970   HT9247   HT82V731   HT82V736   HT6221 HT6222   HT62104   HT12A\E   HT12D\F (全部封装、规格形式 均有海量现货!)   六.电可擦除只读存储器              HT2201   HT24LC02  HT24LC02A  HT24LC04  HT24LC08  HT24LC16  HT24LC32         HT24LC64   HT24LC128   HT24LC256   HT93LC46   HT93LC66   HT93LC86 (全部封装、规格形式 均有海量现货!)   七.各类编码/射频/解码器 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 (全部封装、规格形式 均有海量现货!)           八.MCU(微控IC) HT48 系列 应用于遥控,电扇/电灯控制,洗衣机控制,电子秤,玩具及各种系统控制. 产品:HT48R05,HT48R06,HT48R30,HT48R50 HT49系列 应用于多种LCD DI低功耗应用,如电子秤,休闲产品,高阶的家用电器 产品:HT49R30,HT49R50 HT46带A/D系列 适用于充电器控制,电磁炉等 产品:HT46R47,HT46R22,HT46R23,HT46R24,HT46R51 HT46带A/D及LCD系列 适用于洗衣机控制器,相机控制器和带LCD显示的家用电器系列 产品:HT46R62,HT46R63,HT46R64 HT48RA系列适用于红外遥控器以及各种电子系统的控制器 (全部封装、规格形式 均有海量现货!)     九.放大器/音频放大器 /DA转换器              HT9231  HT9232  HT9234  HT9251  HT9252  HT9254  HT9274  HT9291  HT9292  HT9294 HT82V732  HT82V733  HT82V735  HT82V736  HT82V736       HT82V739   HT82V73   HT82V731   HT82V737   HT82V738 (全部封装、规格形式 均有海量现货!)         十.音调IC/发生器 /接收器              HT9200A   HT9200B   HT9170B   HT9170D   HT9172   HT8970   HT8972 (全部封装、规格形式 均有海量现货!)     IC型号众多,未能一一收录。    芯片主要应用领域如下:  ★显示模块:电子秤、无线麦克风、录音笔、影音多媒体、小家电周边 ★家电类:电风扇、电饭煲、玩具、冷气机、暖风机、空调扇、饮水机、抽油烟机、消毒柜、电热水器、面包机、豆浆机、咖啡壶、电冰箱、洗衣机控制器、空调控制板等。 ★通讯类:来电显示电话、无绳电话、IC电话、投币电话、对讲机等 ★玩具游戏类:无线遥控车、PS游戏机、跳舞毯、方向盘、手柄、电子枪、PS开机IC等。 ★计算机周边:显示器控制、PC-MOUSE、单/双滚、遥控MOUSE、键盘、手写板等。 ★智能卡类:IC卡煤气表、电能表、水表、IC读写器、IC卡门禁系统等。 ★汽车及防盗类:机车防盗器、********器、汽车天线控制器、里程表、汽车日历等。 ★医用保健类:电子针灸器、甩脂机、智能体温计、LCD显示血压计、跑步机、按摩器、按摩垫、按摩椅   等。 ★仪表类:电压表、瓦斯表、电池电压检测器、频率计、计数器、电度表、水位检测器等。 ★其它类:充电器、照相机、电子万年钟、自动给皂机、路灯控制器、呼叫服务器等    

    标签: TSSOP B92 HT9 LCD HT 9B 92 48 合泰 液晶驱动

    上传时间: 2018-12-07

    上传用户:shubashushi66

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

    ·SDK V4.2软件包包含:PMSM FOC固件库和STMC Workbench(GUI),允许用户使用STM32进行单或双PMSM马达的FOC的驱动,其支持STM32F0Xx,STM32F1xx,STM32F2XX,STM32F3xX及STM32F4xx·相电流采样支持:·1-SHUNT:采样电阻放在DCBUS上·ST专利的算法·仅需要1个电阻/运放:成本较低·电流采样算法可能会带来力矩纹波·3-SHUNT:采样电阻放在3个下桥臂上·电流采样精度高·不会有电流纹波产生·ICS:2个隔离的电流传感器·放在A/B相绕组上·适用于相电流较大的场合:无功耗·成本较/LCO

    标签: stm32 PMSM

    上传时间: 2022-07-27

    上传用户:kent