skywalker-1/docs/diseqc/diseqc-skywalker-1.md
Ryan Malloy f1674c21a3 Initial commit: Genpix SkyWalker-1 DVB-S driver source and DiSEqC docs
Includes original BDA driver source (headers, C++ implementation, INF
installer files), DiSEqC implementation PDF with extracted markdown
and SVG vector graphics.
2026-02-11 04:22:13 -07:00

2.3 KiB

DiSEqC for the GenPix Skywalker-1 BDA Driver (Extended)

Implementation Guidelines for Applications

Author: Devendra | Created: 2009-07-09 | Source: Microsoft Office Word 2007


I. GUID for the SkyWalker1 Extended property

//Used to extend the feature of the BDA
//{0B5221EB-F4C4-4976-B959-EF74427464D9}
#define STATIC_KSPROPSETID_BdaExtendedProperty \
    0x0B5221EB, 0xF4C4, 0x4976, 0xB9, 0x59, 0xEF, 0x74, 0x42, 0x74, 0x64, 0xD9

DEFINE_GUIDSTRUCT("0B5221EB-F4C4-4976-B959-EF74427464D9", KSPROPSETID_BdaExtendedProperty);
#define KSPROPSETID_BdaExtendedProperty DEFINE_GUIDNAMED(KSPROPSETID_BdaExtendedProperty)

II. Extended Property List (Only DiSEqC support is extended)

//Extended Property List
typedef enum __KSPROPERTY_EXTENDED
{
    /* DiSEqC Command */
    //Used to send the Digital Satellite Equipment Control (DiSEqC)
    //Commands by application
    KSPROPERTY_BDA_DISEQC = 0,  //Extension Property 1
} KSPROPERTY_EXTENDED;

III. Enumeration for the Simple Tone Burst

typedef enum enSimpleToneBurst
{
    SEC_MINI_A,
    SEC_MINI_B
} SIMPLE_TONE_BURST;

IV. DiSEqC Command Structure

typedef struct __DISEQC_COMMAND
{
    UCHAR ucMessage[MAX_DISEQC_COMMAND_LENGTH];
        /* Byte - 0 : Framing,
           Byte - 1 : Address,
           Byte - 2 : Command,
           Byte - 3 : Data[0],
           Byte - 4 : Data[1],
           Byte - 5 : Data[2] */

    UCHAR ucMessageLength;
        /* The Valid values for DiSEqC Command are 3...6
           If this value is 1 then Byte 0 is taken as Simple "Tone Burst"
           Control Command */
} DISEQC_COMMAND, *PDISEQC_COMMAND;

V. Operation

i. To send the Simple Burst command

  1. Create the DISEQC_COMMAND Structure
  2. Set ucMessage[0] to either SEC_MINI_A or SEC_MINI_B
  3. Set ucMessageLength as 1

ii. To send DiSEqC commands

  1. Create the DISEQC_COMMAND Structure
  2. Set the Framing value to ucMessage[0] (e.g. 0xE0)
  3. Set the Device Address to ucMessage[1] (e.g. 0x01)
  4. Send the Command for the Device to ucMessage[2]
  5. If required, set the Data bytes ucMessage[3], ucMessage[4], ucMessage[5]
  6. Set ucMessageLength accordingly. Valid values are 3 to 6.