HiPi
view release on metacpan or search on metacpan
#include "mylib/include/ppport.h"
#include "zlib.h"
MODULE=HiPi::Utils::Exec PACKAGE=HiPi::Utils::Exec
PROTOTYPES: DISABLE
void
_compress_buffer(SV* inputsv)
PPCODE:
unsigned char* outputbuffer;
SV* output = sv_newmortal();
unsigned inputsize = SvCUR(inputsv);
unsigned char* inputbuffer = (unsigned char *)SvPVX(inputsv);
unsigned outputsize = inputsize + (inputsize * 0.1) + 12;
/* allocate the output buffers */
SvUPGRADE(output, SVt_PV);
outputbuffer = (unsigned char *)SvGROW(output, outputsize + sizeof(unsigned char) );
/* return SVs */
EXTEND(SP, 2);
PUSHs(output);
PUSHs(sv_2mortal(newSViv(inputsize)));
PUSHs(sv_2mortal(newSViv(compressedsize)));
void
_decompress_buffer(SV* inputsv, unsigned outputsize)
PPCODE:
unsigned char* outputbuffer;
SV* output = sv_newmortal();
unsigned inputsize = SvCUR(inputsv);
unsigned char* inputbuffer = (unsigned char *)SvPVX(inputsv);
/* allocate the output buffers */
SvUPGRADE(output, SVt_PV);
outputbuffer = (unsigned char *)SvGROW(output, outputsize + sizeof(unsigned char) );
/* do the decompression */
CODE:
RETVAL = i2c_smbus_process_call(file, command, value );
OUTPUT: RETVAL
void
i2c_smbus_read_block_data( file, command )
int file
__u8 command
PPCODE:
int i;
__u8 buf[32];
int result = i2c_smbus_read_block_data(file, command, buf);
if (result < 0) {
EXTEND( SP, 1 );
PUSHs( &PL_sv_undef );
} else {
EXTEND( SP, (IV)result );
for( i = 0; i < result; ++i )
{
PUSHs( var );
}
}
void
i2c_smbus_read_i2c_block_data( file, command, len )
int file
__u8 command
__u8 len
PPCODE:
int i;
__u8 *buffer;
buffer = malloc(len * sizeof(__u8));
int result = i2c_smbus_read_i2c_block_data(file, command, len, buffer);
if (result < 0) {
EXTEND( SP, 1 );
PUSHs( &PL_sv_undef );
} else {
EXTEND( SP, (IV)result );
for( i = 0; i < result; ++i )
}
OUTPUT: RETVAL
void
i2c_scan_bus( file, mode = SCAN_MODE_AUTO, first = 0x03, last = 0x77 )
int file
int mode
int first
int last
PPCODE:
int i;
int j;
int res;
for (i = 0; i < 128; i += 16) {
for(j = 0; j < 16; j++) {
res = -1;
/* Skip unwanted addresses */
} else {
RETVAL = map_fsel_rp1_to_hipi(do_gpio_get_mode( gpio ));
}
OUTPUT: RETVAL
void
xs_gpio_get_mode_name( gpio, mode )
unsigned gpio
int mode
PPCODE:
XPUSHs(sv_2mortal(newSVpv(rp1_gpio_get_fsel_name( gpio, map_fsel_hipi_to_rp1( mode ) ), 0)));
void
xs_gpio_get_current_mode_name( gpio )
unsigned gpio
PPCODE:
XPUSHs(sv_2mortal(newSVpv(rp1_gpio_get_fsel_name( gpio, do_gpio_get_mode( gpio ) ), 0)));
int
xs_gpio_set_pud( gpio, pud )
unsigned gpio
unsigned pud
CODE:
if (gpio > PI_MAX_GPIO) {
send_module_error("bad gpio number specified");
MODULE = HiPi::Device::SPI PACKAGE = HiPi::Device::SPI
void
_transfer_data(file, inbuf, delay = 0, speed = 1000000, bitspw = 8 )
int file
SV* inbuf
__u16 delay
__u32 speed
__u8 bitspw
PPCODE:
struct spi_ioc_transfer msg;
memset (&msg, 0, sizeof(msg));
SV* outbuf = newSVsv(inbuf);
msg.tx_buf = (intptr_t)SvPVX(inbuf);
msg.rx_buf = (intptr_t)SvPVX(outbuf);
msg.len = (__u32)SvCUR(inbuf);
msg.speed_hz = speed;
msg.delay_usecs = delay;
msg.bits_per_word = bitspw;
( run in 1.114 second using v1.01-cache-2.11-cpan-5511b514fd6 )