I am implementing a module and have run into some trouble...

Here's a piece of test code:

my %test_hash = ("Command" => "Inquiry");
BTSP::SendHCICommand(\%test_hash);

BTSP is the name of the module I'm developing.  Elsewhere:

sub SendHCICommand
{
    if(@_ == 1)
    {
        print "This should be a hash: ".$_[0]."\n";
        return BTSP_SendHCICommand($_[0]);
    }
    if(@_ == 2)
    {
        print "This should be a hash: ".$_[1]."\n";
        return BTSP_SendHCICommand_MT( $_[0], $_[1] );
    }
    croak "BTSP::SendHCICommand called with invalid parameters\n";
}

When I run the test script, I see the following output:

This should be a hash: HASH(0x1a72e68)

So far so good...  But the output which immediately follows is:

command_hash is not of type const HVPtr at rel\blib\lib/BTSP.pm line 138.

BTSP.pm line 138 is shown above in sub SendHCICommand:
return BTSP_SendHCICommand($_[0]);

Not so good...  Can someone tell me what I'm doing wrong?  In the
corresponding BTSPGlue.xs, I have:

int
BTSP_SendHCICommand(command_hash)
    const HV* command_hash
    PROTOTYPE: \%
    CODE:
        RETVAL = BTSP_SendHCICommand(command_hash);
    OUTPUT:
        RETVAL

by the way, const HV* is in my typemap:
const char * T_PV
const HV * T_HVREF

I tried switching to using an HV* (omitting the const) instead of a const
HV*, but that did not solve the problem.

And just to complete the picture, in BTSP.h:
int BTSP_SendHCICommand(const HV* command_hash);

And in BTSPInterface.cpp:
int
BTSP_SendHCICommand(const HV* command_hash)
{
    // $$$ once the calling problems are resolved, pass through to OO
framework
    printf("BTSP_SendHCICommand(%08X)\n",command_hash);
    return 1;
}

Any help would be appreciated...  Also appreciated would be if someone is
responding to this, in addition to posting back to perl.modules, please also
send direct email to [EMAIL PROTECTED]

Thanks in advance,
Brian




Reply via email to