Download Print this page
Adaptec 1394 User Manual
Adaptec 1394 User Manual

Adaptec 1394 User Manual

Application programming interface specification for win32 (windows 95 and nt) papi
Hide thumbs Also See for 1394:

Advertisement

Quick Links

--- IEEE1394 Application Programming Interface Specification ---
--- Adaptec Inc. Confidential ---
7/9/97
IEEE1394 Application Programming Interface Specification
for WIN32 (Windows 95 and NT)
(PAPI)
Adaptec PN 000000-00
Rev 1.14
July 3, 1997
Copyright 1996 Adaptec Inc. All rights reserved
Adaptec Inc. Confidential
1

Advertisement

loading
Need help?

Need help?

Do you have a question about the 1394 and is the answer not in the manual?

Questions and answers

Subscribe to Our Youtube Channel

Summary of Contents for Adaptec 1394

  • Page 1 --- IEEE1394 Application Programming Interface Specification --- --- Adaptec Inc. Confidential --- 7/9/97 IEEE1394 Application Programming Interface Specification for WIN32 (Windows 95 and NT) (PAPI) Adaptec PN 000000-00 Rev 1.14 July 3, 1997 Copyright 1996 Adaptec Inc. All rights reserved Adaptec Inc. Confidential...
  • Page 2 PRB or SBC, that will be signaled upon completion of the command. Devices on the 1394 bus(es) are accessed using handles. A client must get a handle to a specific device by calling BusConfig with command field set to P_GET_HANDLE and the node ID field set to the nodeID of the target device.
  • Page 3 --- IEEE1394 Application Programming Interface Specification --- --- Adaptec Inc. Confidential --- 7/9/97 Upon completion of a command the caller needs to inspect the Status field within the common header at the top of the packet to determine whether the command executed successfully, PS_COMP, or whether ther was an error.
  • Page 4 --- IEEE1394 Application Programming Interface Specification --- Definitions PAPI: 1394 Application Programming Interface PAPI Manager: The layer that processes PAPI requests PAPI Client: An application that uses PAPI to access 1394 peripherals DLL: Dynamic Link Library SBC: Serial Bus Configuration packet PRB: P1394 Request Block Note: In the following sections fields marked with [OUT] are returned by the PAPI manager.
  • Page 5 Description PAPI_NOERROR PAPI Mgr initialized without error PAPI_FAILED_INIT PAPI Mgr failed to initialize properly If the return value is PAPI_NOERROR then NumberOfAdapters is set to the number of IEEE1394 Host adapters in the system. --- Adaptec Inc. Confidential --- 7/9/97...
  • Page 6 P_START_ISOC P_STOP_ISOC P_EXEC_ASYNC_CMD P_NOTIFY_ON_ACCESS P_ABORT_1394_CMD P_GET_BUS_EVENT P_GET_CAP_VERSIONS --- Adaptec Inc. Confidential --- 7/9/97 DESCRIPTION Get information on a specific host adapter along with the total number of host adapters installed. Get device’s configuration ROM information. Queue an isochronous transfer Begin isochronous transfers on the given channel Stop isochronous transfers on the given channel Execute an asynchronous transfer.
  • Page 7 --- Adaptec Inc. Confidential --- 7/9/97 Cmd; // PAPI command code Status; // PAPI status returned HaNum; // Host adapter number Hdr_Rsvd1; // Reserved, must be 0 DevHandle // Handle to 1394 peripheral Hdr_Rsvd[2]; // Reserved, must be 0 OverlappedInfo;...
  • Page 8 DWORD DWORD WORD WORD WORD WORD WORD WORD BYTE BYTE DWORD DWORD DWORD DWORD BYTE } PRB_GET_HA_INFO, *PPRB_GET_HA_INFO; --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header; Rsvd1[2]; Rsvd2; Node_Count; HA_Node_ID; Root_ID; Cycle_Mstr_ID; Bus_Mgr_ID ; Isoch_Mgr_ID; Gap_Count; Rsvd3[3]; Rsvd4[2]; pSpeed_Map; pTopology_Map; pPower_Map;...
  • Page 9 [OUT] ID of node acting as Isochronous Resource Mgr. [OUT] Current gap count of the bus [IN] Reserved, must = 0 [OUT] Pointer to Speed Map of the 1394 Bus [OUT] Pointer to Topology of 1394 Bus [OUT] Pointer Power Map of 1394 Bus...
  • Page 10 NodeUniqueIdLo [OUT] lower 32 bits of device’s unique ID RomFormat [OUT] 00 = Minimal ROM implementation SerialBusDevice [OUT] 00 = Not a 1394 device but conforms to IEEE1212 Rsvd2 [IN] Reserved, must = 0 --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header;...
  • Page 11 BYTE BYTE BYTE BYTE BYTE WORD BYTE DWORD WORD WORD DWORD DWORD DWORD DWORD DWORD DWORD } PRB_ISOC_REQUEST, *PPRB_ISOC_REQUEST; --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header; Rsvd1[2]; Rsvd2; Mode; Rsvd3[2]; Channel; Speed; SyncCode; Rsvd4; CycleStart; Rsvd5[2]; Rsvd6[2]; PrimaryXmitPayload; SecondaryXmitPayload; IsocIoRequestFlags;...
  • Page 12 [IN] Bits [7:6] = Isochronous data format tag. See IEEE1394 spec sec. Bits [5:0] = Isochronous channel number. [IN] Speed at which the 1394 transfer should occur. If set to 0xFF, optimal speed will be picked automatically for the transfer.
  • Page 13 --- IEEE1394 Application Programming Interface Specification --- Rsvd7 HA_Buf_Ptr Rsvd8 TotalXfrlen Rsvd9 --- Adaptec Inc. Confidential --- 7/9/97 STRIP_CIP_HEADERS - Depends on HW capabilities INSERT_CIP_HEADERS - Depends on HW capabilities VARIABLE_PACKET_SIZE [IN] Reserved,must = 0 [IN] Data Buffer address [IN] Reserved, must = 0...
  • Page 14 4. Start an Isochronous Transfer DWORD Send PAPICommand (PPRB lpPRB) The SendPAPICommand function with command code P_START_ISOC is used to begin a 1394 Isochronous transfer on a particular channel. Any previously queued Isochronous requests, via SendPAPICommand function with command code P_ISOC_REQUEST) will begin immediately. To stop the Isochronous transfer, call SendPAPICommand function with command code P_STOP_ISOC.
  • Page 15 [IN] Reserved, must = 0 DevHandle [IN] n/a Hdr_Rsvd2 [IN] Reserved, must = 0 Rsvd1 [IN] Reserved, must = 0 Channel [IN] The 1394 channel on which isochronous transfers should stop --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header; Rsvd1[2]; Channel;...
  • Page 16 BYTE Rsvd3; BYTE ResponseCode; WORD Extend_tCode; BYTE Speed; BYTE Rsvd4; WORD MaxBlockSize; BYTE Rsvd5[2]; DWORD Rsvd6[2]; DWORD TargetDeviceAddressHi; DWORD TargetDeviceAddressLo; DWORD Rsvd7[2]; DWORD HA_Buf_Ptr; DWORD Rsvd8; DWORD TotalXfrLen; DWORD Rsvd9[3]; } PRB_EXEC_ASYNC, *PPRB_EXEC_ASYNC; --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header;...
  • Page 17 [IN] Reserved, must = 0 --- Adaptec Inc. Confidential --- 7/9/97 PR_COMP PR_CONFLICT_ERROR PR_DATA_ERROR PR_TYPE_ERROR PR_ADDRESS_ERROR PE_MASK_SWAP PE_COMPARE_SWAP PE_FETCH_ADD PE_LITTLE_ADD PE_BOUNDED_ADD PE_WRAP_ADD PE_VENDOR_DEPENDENT Speed at which the 1394 transfer should occur. If set to 0xFF, the Reserved, m ust = 0...
  • Page 18 --- IEEE1394 Application Programming Interface Specification --- TargetDeviceAddressHi [IN] Device’s 1394 address high 32 bit TargetDeviceAddressLo [IN] Device’s 1394 address low 32 bit Rsvd7 [IN] Reserved, must = 0 HA_Buf_Ptr [IN] Host adapter buffer pointer PRB_Rsvd8 [IN] Reserved, must = 0 TotalXfrLen [IN] Size of the data payload in Bytes.
  • Page 19 The SendPAPICommand function with command code P_NOTIFY_ON_ACCESS is used to register for a notification when a remote node accesses a mapped section of 1394 address. Upon access, the event specified in the OverlappedInfo field of the header will be signaled.
  • Page 20 7/9/97 address will be mapped [IN] Length of the buffer, i.e. length of mapped section in bytes [IN] upper 32 bit of 1394 address of access area for which notification is being registered. [IN] lower 32bit of 1394 address [OUT] Node ID of the originator of the unsolicited request...
  • Page 21 [IN] Reserved, must = 0 DevHandle [IN] n/a Hdr_Rsvd2 [IN] Reserved, must = 0 OverlappedInfo [IN] n/a PRB_ToAbort [IN] Pointer to PRB to abort NOTE: The PRB found will have status of PS_ABORTED. --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header; Rsvd1[2]; *PRB_ToAbort; Rsvd2;...
  • Page 22 [IN] Reserved, must = 0 OverlappedInfo [IN] Completion event is placed in OverlappedInfo.hEvent Rsvd1 [IN] Reserved, must = 0 BusEventBitMap [IN] Each bit position represents an event type the client is interested BE_BUS_RESET --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header; Rsvd1[3]; BusEventBitMap; PS_PENDING PS_COMP...
  • Page 23 [IN] n/a Hdr_Rsvd2 [IN] Reserved, must = 0 OverlappedInfo [IN] n/a Chip_Version [OUT] Identifies the chip used Product_Version [OUT] Version of product HAL_Version [OUT] version of the HAL Capabilities [OUT] HA_SUPPORTS_SPEED_200 HA_SUPPORTS_SPEED_400 HA_SUPPORTS_START_ON_CYCLE_NUMBER HA_SUPPORTS_START_ON_SYNC_CODE --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header;...
  • Page 24 This function handles all Get and Set bus configuration requests. These request might be satisfied locally, i.e. at the host adapter or remotely, i.e. a node on the 1394 bus.. A command code is used to specify the type of action requested. This function is called with a pointer to a Serial Bus Config (SBC) structure by the caller, i.e.
  • Page 25 --- IEEE1394 Application Programming Interface Specification --- P_READ_MAP_CONTENTS P_WRITE_MAP_CONTENTS P_UPDATE_MAP_CONTENTS --- Adaptec Inc. Confidential --- 7/9/97 Read the contents of a previously mapped area Write/change the mapped area contents Update the contents via local Lock Request...
  • Page 26 [OUT] Handle to the node Hdr_Rsvd2 [IN] Reserved, must = 0 OverlappedInfo [IN] n/a NodeUniqueId_HI [IN] Upper 32bit of Node Unique ID of 1394 device NodeUniqueId_LO [IN] Lower 32bits of Node Unique ID of 1394 device --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header;...
  • Page 27 [IN] Host adapter number, must = 0 Hdr_Rsvd1 [IN] Reserved, must = 0 DevHandle [IN] Handle to the node Hdr_Rsvd2 [IN] Reserved, must = 0 --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header; Rsvd1[2]; Command completed successfully Node does not exist...
  • Page 28 DWORD WORD WORD } SBC_GET_NODEID, *PSBC_GET_NODEID; Member Status HaNum Hdr_Rsvd1 DevHandle Hdr_Rsvd2 NodeId Rsvd1 --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header; Rsvd1[2]; NodeId; Rsvd1; Description [IN] P_GET_NODEID [OUT] PS_COMP PS_NO_DEVICE [IN] Host adapter number, must = 0 [IN] Reserved, must = 0...
  • Page 29 Rsvd1 [IN] Reserved, must = 0 Rsvd2 [IN] Reserved, must = 0 Speed Speed to be used in calculating bandwidth. [IN] S100 = 100Mbits/sec S200 = 200Mbits/sec --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header; Rsvd1[3]; Rsvd2; Speed; Rsvd3[2]; BandwidthRequested; BandwidthAvailable;...
  • Page 30 [IN] Reserved, must = 0 BandwidthRequested [IN] Number of Bandwidth Units. Refer to “Digital Interface For Consumer Electronic Audio/Video Equipment” document. BandwidthAvailable [OUT] Number of bandwidth Units available after the allocation. Rsvd4 [IN] Reserved, must = 0 --- Adaptec Inc. Confidential --- 7/9/97...
  • Page 31 Number of bytes per isochronous frame to be released BandwidthAvailable [OUT] Number of bytes per isochronous frame available after the current request either succeeded or failed. Rsvd4 [IN] Reserved, must = 0 --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header; Rsvd1[3]; Rsvd2; Speed;...
  • Page 32 DWORD } SBC_CHANNEL, *PSBC_CHANNEL; Member Status HaNum Hdr_Rsvd1 DevHandle Hdr_Rsvd2 OverlappedInfo Rsvd1 Rsvd2 ChannelRequested ChannelAllocated Rsvd3 ChannelsAvailableMaskHi --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header; Rsvd1[3]; Rsvd2; ChannelRequested; ChannelAllocated; Rsvd3; ChannelAvailableMaskHi; ChannelAvailableMaskLo; Rsvd4[2]; Description [IN] P_ALLOCATE_CHANNEL [OUT] Returned status PS_COMP PS_INVALID_BUS_ID...
  • Page 33 --- IEEE1394 Application Programming Interface Specification --- ChannelsAvailableMaskLo Rsvd4 --- Adaptec Inc. Confidential --- 7/9/97 [OUT] Bit mask of all available isochronous channels after the allocation succeeded or failed. (low 32 bits) [IN] Reserved, must = 0...
  • Page 34 } SBC_CHANNEL, *PSBC_CHANNEL; Member Status HaNum Hdr_Rsvd1 DevHandle Hdr_Rsvd2 OverlappedInfo Rsvd1 Rsvd2 ChannelRequested ChannelAllocated Rsvd3 ChannelsAvailableMaskHi ChannelsAvailableMaskLo Rsvd4 --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header; Rsvd1[3]; Rsvd2; ChannelRequested; ChannelAllocated; Rsvd3; ChannelAvailableMaskHi; ChannelAvailableMaskLo; Rsvd4[2]; Description [IN] P_DEALLOCATE_CHANNEL [OUT] Returned status PS_COMP PS_INVALID_BUS_ID...
  • Page 35 Rsvd1 [IN] Reserved, must = 0 Note: The node whose force_root bit is being set has to be capable of being ROOT!! There is NO guarantee that this node will become ROOT!! --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header; Rsvd1[3];...
  • Page 36 [IN] Reserved, must = 0 DevHandle [IN] n/a Hdr_Rsvd2 [IN] Reserved, must = 0 OverlappedInfo [IN] n/a Gap_Count [IN] value of gap count. Range 1- 64, default 33 RsvdB1 [IN] Reserved, must = 0 --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header; Rsvd1[2]; RsvdB1[3]; Gap_count;...
  • Page 37 [IN] Reserved, must = 0 OverlappedInfo [IN] n/a Rsvd1 [IN] Reserved, must = 0 Address [IN] offset of where to read within the Link chip Value [OUT] value read or written --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header; Rsvd1[3]; Address; Value;...
  • Page 38 BYTE BYTE DWORD DWORD } SBC_GET_SPEED, *PSBC_GET_SPEED; Member Status HaNum Hdr_Rsvd1 DevHandle Hdr_Rsvd2 OverlappedInfo First_Node_Handle Second_Node_Handle Speed --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header; Rsvd1[2]; Rsvd2[2]; Speed; Rsvd3; First_Node_Handle; Second_Node_Handle; Description [IN] P_GET_SPEED_BTWN_NODES [OUT] Status returned PS_COMP PS_ERROR PS_INVALID_BUS_ID PS_INVALID_HANDLE...
  • Page 39 PS_COMP - Reset completed successfully PS_ERROR - Reset completed with error HaNum [IN] Host adapter number, must = 0 Hdr_Rsvd1 [IN] Reserved, must = 0 DevHandle [IN] n/a Hdr_Rsvd2 [IN] Reserved, must = 0 OverlappedInfo [IN] n/a --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header;...
  • Page 40 [IN] Reserved, must = 0 DevHandle [IN] Handle of device whose link is to be turned on Hdr_Rsvd2 [IN] Reserved, must = 0 OverlappedInfo [IN] n/a Rsvd1 [IN] Reserved, must = 0 --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header; Rsvd1[2]; Rsvd2;...
  • Page 41 Hdr_Rsvd2 [IN] Reserved, must = 0 OverlappedInfo [IN] n/a Rsvd1 [IN] Reserved, must = 0 Channel [IN] 1394 channel # for which DMA resources are being Reserved or Released ResourceType [IN] Resource Type requested ISOCHRONOUS_READ ISOCHRONOUS_WRITE Rsvd3 [IN] Reserved, must = 0 --- Adaptec Inc.
  • Page 42 --- IEEE1394 Application Programming Interface Specification --- 14. Map or UnMap 1394 address DWORD BusConfig (PSBC lpSBC); The BusConfig function with command code P_MAP_1394_ADDRESS is used to map a portion of system memory to the given 1394 address. typedef struct _SBC_MAP_UNMAP_1394_ADDRESS PRB_SBC_HEADER DWORD...
  • Page 43 --- IEEE1394 Application Programming Interface Specification --- Hi_1394_Address [IN] Upper 32 bit of 1394 address to map Lo_1394_Address [IN] lower 32 bit of 1394 address to map BufferAddress [IN] Address of user buffer when its contents needs to be update...
  • Page 44 Data. typedef struct _SBC_ SBC_READ_WRITE_UPDATE_MAP PRB_SBC_HEADER DWORD DWORD DWORD DWORD DWORD DWORD DWORD } SBC_READ_WRITE_UPDATE_MAP, *PSBC_READ_WRITE_UPDATE_MAP; Member Description [IN] P_READ_MAP_CONTENTS P_WRITE_MAP_CONTENTS P_UPDATE_MAP_CONTENTS Status [OUT] --- Adaptec Inc. Confidential --- 7/9/97 PRB_SBC_Header; Rsvd1[2]; Rsvd2; Hi_1394_Address; Lo_1394_Address; BufferAddress; BufferLength; Rsvd3[2];...
  • Page 45 [IN] Reserved, must = 0 Rsvd2 [IN] Reserved, must = 0 Hi_1394_Address [IN] Upper 32 bit of 1394 address to map Lo_1394_Address [IN] lower 32 bit of 1394 address to map BufferAddress [IN] Address of user buffer when its contents needs to be...

This manual is also suitable for:

Ieee1394