view release on metacpan or search on metacpan
lib/HiPi/Huawei/Errors.pm view on Meta::CPAN
'110' => 'your safety settings prevent this potentially damaging action',
'111' => 'invalid day value',
'112' => 'invalid limit value',
'113' => 'invalid threshold value',
'400' => 'error in http request / response',
'100002' => 'call not supported',
'100003' => 'access forbidden in current session context',
'100004' => 'system busy',
'100005' => 'system system reports request failed',
'100006' => 'invalid request parameter',
'108001' => 'invalid username',
'108002' => 'invalid password',
'108003' => 'user already logged in',
'108006' => 'invalid username or password',
'108007' => 'maximum session login attempts exceeded',
'120001' => 'voice busy',
'125001' => 'invalid token',
'125002' => 'invalid session',
'125003' => 'invalid token or session',
'103024' => 'serial number check failed',
'103025' => 'serial number check failed attempts exceed maximum 3 allowed',
};
sub get_error_message {
lib/HiPi/Interface/EPaper.pm view on Meta::CPAN
use HiPi qw( :rpi :spi :epaper );
use Carp;
use UNIVERSAL::require;
use HiPi::Graphics::DrawingContext;
use HiPi::Interface::EPaper::DisplayBuffer;
__PACKAGE__->create_ro_accessors( qw(
device_width device_height offsetx type rotation
frame_1_bpp frame_2_bpp
frame_1_type frame_2_type
dc_pin reset_pin busy_pin gpio
lut_vcom0 lut_vcom1 lut_w lut_b lut_g1 lut_g2 lut_red0 lut_red1
lut_full lut_partial
can_partial busy_state
frame_1_invert frame_2_invert
spi_chunksize
_in_deep_sleep is_tri_colour
border_control
) );
__PACKAGE__->create_accessors( qw( context lut_state ) );
our $VERSION ='0.81';
lib/HiPi/Interface/EPaper.pm view on Meta::CPAN
my ($class, %userparams) = @_;
my %params = (
devicename => '/dev/spidev0.0',
speed => SPI_SPEED_MHZ_1,
bitsperword => 8,
delay => 0,
device => undef,
reset_pin => undef,
dc_pin => undef,
busy_pin => undef,
type => undef,
gpio => undef,
device_width => undef,
device_height => undef,
rotation => undef,
can_partial => 0,
lut_state => EPD_UPD_MODE_FIXED,
invert_draw => 0,
busy_state => RPI_LOW,
offsetx => 0,
spi_chunksize => 4096,
);
# get user params
foreach my $key( keys (%userparams) ) {
$params{$key} = $userparams{$key};
}
lib/HiPi/Interface/EPaper.pm view on Meta::CPAN
require HiPi::GPIO;
$params{gpio} = HiPi::GPIO->new
}
my $self = $class->SUPER::new( %params );
# init the GPIO settings;
$self->gpio->set_pin_mode( $self->reset_pin, RPI_MODE_OUTPUT);
$self->gpio->set_pin_mode( $self->dc_pin, RPI_MODE_OUTPUT);
$self->gpio->set_pin_mode( $self->busy_pin, RPI_MODE_INPUT);
return $self;
}
sub reset {
my $self = shift;
$self->gpio->set_pin_level( $self->reset_pin, RPI_LOW);
$self->delay( 200 );
$self->gpio->set_pin_level( $self->reset_pin, RPI_HIGH);
$self->delay( 200 );
lib/HiPi/Interface/EPaper.pm view on Meta::CPAN
sub send_data {
my($self, @data) = @_;
$self->gpio->set_pin_level( $self->dc_pin, RPI_HIGH );
$self->delayMicroseconds(10);
$self->device->transfer( pack('C*', @data ) );
return;
}
sub wait_for_idle {
my $self = shift;
while( $self->gpio->get_pin_level( $self->busy_pin ) == $self->busy_state ) {
$self->delay(100);
}
return;
}
sub logical_width {
my $self = shift;
if( $self->rotation == EPD_ROTATION_90 || $self->rotation == EPD_ROTATION_270 ) {
return $self->device_height;
} else {
lib/HiPi/Interface/EPaper/Pimoroni/EPDInkyPHAT_V2.pm view on Meta::CPAN
SET_RAM_X_ADDRESS_COUNTER => HiPi::Interface::EPaper::TypeA::SET_RAM_X_ADDRESS_COUNTER(),
SET_RAM_Y_ADDRESS_COUNTER => HiPi::Interface::EPaper::TypeA::SET_RAM_Y_ADDRESS_COUNTER(),
};
sub _create {
my( $class, %params ) = @_;
# Default pins for Pimoroni Inky PHAT
# reset_pin => RPI_PIN_13, # 27
# dc_pin => RPI_PIN_15, # 22
# busy_pin => RPI_PIN_11, # 17
$params{reset_pin} //= RPI_PIN_13;
$params{dc_pin} //= RPI_PIN_15;
$params{busy_pin} //= RPI_PIN_11;
$params{device_width} = 104;
$params{device_height} = 212;
$params{offsetx} = 0;
$params{is_tri_colour} = 1;
$params{frame_1_bpp} = EPD_FRAME_BPP_1;
$params{frame_2_bpp} = EPD_FRAME_BPP_1;
$params{frame_1_type} = EPD_FRAME_TYPE_BLACK;
$params{frame_2_type} = EPD_FRAME_TYPE_COLOUR;
$params{frame_1_invert} = 0;
$params{frame_2_invert} = 1;
# don't allow change here
$params{border_control} = EPD_BORDER_POR;
$params{rotation} //= 90;
$params{can_partial} = 0;
$params{busy_state} = RPI_HIGH;
$params{display_update_setting} = 0xC7;
$params{driver_ouput_control_bytes} = [ 0xd3, 0x00, 0x00 ];
$params{booster_soft_start_control_bytes} = [];
$params{vcom_register_bytes} = [ 0x3c ];
$params{dummy_line_period_bytes} = [ 0x07 ];
$params{gate_time_bytes} = [ 0x04 ];
$params{data_entry_mode_bytes} = [ 0x03 ];
lib/HiPi/Interface/EPaper/TypeA.pm view on Meta::CPAN
HIPI_BORDER_WHITE => 0b011100010,
};
sub _create {
my( $class, %params ) = @_;
# Default pins for WaveShare 'HAT' modules
# reset_pin => RPI_PIN_11, # 17
# dc_pin => RPI_PIN_22, # 25
# busy_pin => RPI_PIN_18, # 24
$params{reset_pin} //= RPI_PIN_11;
$params{dc_pin} //= RPI_PIN_22;
$params{busy_pin} //= RPI_PIN_18;
$params{display_update_setting} //= 0xC4;
my $self = $class->SUPER::_create( %params );
return $self;
}
sub set_update_mode {
my($self, $newmode) = @_;
my $current = $self->lut_state;
lib/HiPi/Interface/EPaper/TypeB.pm view on Meta::CPAN
HIPI_BORDER_FLOAT => 0xC0,
};
sub _create {
my( $class, %params ) = @_;
# Default pins for WaveShare 'HAT' modules
# reset_pin => RPI_PIN_11, # 17
# dc_pin => RPI_PIN_22, # 25
# busy_pin => RPI_PIN_18, # 24
$params{reset_pin} //= RPI_PIN_11;
$params{dc_pin} //= RPI_PIN_22;
$params{busy_pin} //= RPI_PIN_18;
my $self = $class->SUPER::_create( %params );
return $self;
}
sub set_lut_bw {
my $self = shift;
my $lut_commands = {
lut_vcom0 => 0x20,
lut_w => 0x21,
lib/HiPi/Interface/EPaper/Waveshare/EPD152X152.pm view on Meta::CPAN
$params{frame_1_bpp} = EPD_FRAME_BPP_1;
$params{frame_2_bpp} = EPD_FRAME_BPP_1;
$params{frame_1_type} = EPD_FRAME_TYPE_BLACK;
$params{frame_2_type} = EPD_FRAME_TYPE_COLOUR;
$params{frame_1_invert} = 0;
$params{frame_2_invert} = 0;
$params{rotation} //= 0;
$params{can_partial} = 0;
$params{busy_state} = RPI_LOW;
$params{power_setting_bytes} = [ 0x07, 0x00, 0x08, 0x00 ];
$params{booster_soft_start_bytes} = [ 0x07, 0x07, 0x07 ];
$params{panel_setting_bytes} = [ 0x0f, 0x0d ];
$params{vcom_and_data_byte} = 0xF7;
$params{border_control} = EPD_BORDER_FLOAT;
$params{pll_control_bytes} = [ 0x39 ];
$params{tcon_resolution_bytes} = [ 0x98, 0x00, 0x98 ];
$params{vcm_dc_setting_bytes} = [ 0x0E ];
lib/HiPi/Interface/EPaper/Waveshare/EPD200X200.pm view on Meta::CPAN
$params{frame_1_type} = EPD_FRAME_TYPE_BLACK;
$params{frame_2_type} = EPD_FRAME_TYPE_UNUSED;
$params{frame_1_invert} = 0;
$params{frame_2_invert} = 0;
$params{rotation} //= 0;
$params{border_control} = EPD_BORDER_POR;
$params{can_partial} = 1;
$params{busy_state} = RPI_HIGH;
$params{driver_ouput_control_bytes} = [
( $params{device_height} -1 ) & 0xFF,
(($params{device_height} -1 ) >> 8) & 0xFF,
0x00, # // GD = 0; SM = 0; TB = 0;
];
$params{booster_soft_start_control_bytes} = [ 0xD7, 0xD6, 0x9D ];
$params{vcom_register_bytes} = [ 0xA8 ];
$params{dummy_line_period_bytes} = [ 0x1A ];
lib/HiPi/Interface/EPaper/Waveshare/EPD200X200B.pm view on Meta::CPAN
$params{frame_1_bpp} = EPD_FRAME_BPP_2;
$params{frame_2_bpp} = EPD_FRAME_BPP_1;
$params{frame_1_type} = EPD_FRAME_TYPE_BLACK;
$params{frame_2_type} = EPD_FRAME_TYPE_COLOUR;
$params{frame_1_invert} = 0;
$params{frame_2_invert} = 0;
$params{rotation} //= 0;
$params{can_partial} = 0;
$params{busy_state} = RPI_LOW;
$params{power_setting_bytes} = [ 0x07, 0x00, 0x08, 0x00 ];
$params{booster_soft_start_bytes} = [ 0x07, 0x07, 0x07 ];
$params{panel_setting_bytes} = [ 0xCF ];
$params{vcom_and_data_byte} = 0x17;
$params{border_control} = EPD_BORDER_BLACK;
$params{pll_control_bytes} = [ 0x39 ];
$params{tcon_resolution_bytes} = [ 0xC8, 0x00, 0xC8 ];
$params{vcm_dc_setting_bytes} = [ 0x0E ];
lib/HiPi/Interface/EPaper/Waveshare/EPD212X104.pm view on Meta::CPAN
$params{frame_1_bpp} = EPD_FRAME_BPP_1;
$params{frame_2_bpp} = EPD_FRAME_BPP_1;
$params{frame_1_type} = EPD_FRAME_TYPE_BLACK;
$params{frame_2_type} = EPD_FRAME_TYPE_COLOUR;
$params{frame_1_invert} = 0;
$params{frame_2_invert} = 0;
$params{rotation} //= 90;
$params{can_partial} = 0;
$params{busy_state} = RPI_LOW;
$params{power_setting_bytes} = [];
$params{booster_soft_start_bytes} = [ 0x17, 0x17, 0x17 ];
$params{panel_setting_bytes} = [ 0x8F ];
$params{vcom_and_data_byte} = 0x37; #Recommended
$params{border_control} = EPD_BORDER_WHITE;
$params{pll_control_bytes} = [];
$params{tcon_resolution_bytes} = [ 0x68, 0x00, 0xD4 ];
$params{vcm_dc_setting_bytes} = [];
lib/HiPi/Interface/EPaper/Waveshare/EPD250X122.pm view on Meta::CPAN
$params{frame_2_bpp} = EPD_FRAME_BPP_1;
$params{frame_1_type} = EPD_FRAME_TYPE_BLACK;
$params{frame_2_type} = EPD_FRAME_TYPE_UNUSED;
$params{frame_1_invert} = 0;
$params{frame_2_invert} = 0;
$params{rotation} //= 90;
$params{border_control} = EPD_BORDER_POR;
$params{can_partial} = 1;
$params{busy_state} = RPI_HIGH;
$params{driver_ouput_control_bytes} = [
( $params{device_height} -1 ) & 0xFF,
(($params{device_height} -1 ) >> 8) & 0xFF,
0x00, # // GD = 0; SM = 0; TB = 0;
];
$params{booster_soft_start_control_bytes} = [ 0xD7, 0xD6, 0x9D ];
$params{vcom_register_bytes} = [ 0xA8 ];
$params{dummy_line_period_bytes} = [ 0x1A ];
lib/HiPi/Interface/EPaper/Waveshare/EPD296X128.pm view on Meta::CPAN
$params{frame_2_bpp} = EPD_FRAME_BPP_1;
$params{frame_1_type} = EPD_FRAME_TYPE_BLACK;
$params{frame_2_type} = EPD_FRAME_TYPE_UNUSED;
$params{frame_1_invert} = 0;
$params{frame_2_invert} = 0;
$params{rotation} //= 90;
$params{border_control} = EPD_BORDER_POR;
$params{can_partial} = 1;
$params{busy_state} = RPI_HIGH;
$params{driver_ouput_control_bytes} = [
( $params{device_height} - 1) & 0xFF,
(($params{device_height} - 1) >> 8) & 0xFF,
0x00, # // GD = 0; SM = 0; TB = 0;
];
$params{driver_ouput_control_bytes} = [ 0x27, 0x01, 0x00 ],
lib/HiPi/Interface/EPaper/Waveshare/EPD296X128B.pm view on Meta::CPAN
$params{frame_1_bpp} = EPD_FRAME_BPP_1;
$params{frame_2_bpp} = EPD_FRAME_BPP_1;
$params{frame_1_type} = EPD_FRAME_TYPE_BLACK;
$params{frame_2_type} = EPD_FRAME_TYPE_COLOUR;
$params{frame_1_invert} = 0;
$params{frame_2_invert} = 0;
$params{rotation} //= 90;
$params{can_partial} = 0;
$params{busy_state} = RPI_LOW;
$params{power_setting_bytes} = [];
$params{booster_soft_start_bytes} = [ 0x17, 0x17, 0x17 ];
$params{panel_setting_bytes} = [ 0x8F ];
$params{vcom_and_data_byte} = 0x77;
$params{border_control} = EPD_BORDER_WHITE;
$params{pll_control_bytes} = [];
$params{tcon_resolution_bytes} = [ 0x80, 0x01, 0x28 ];
$params{vcm_dc_setting_bytes} = [ 0x0A ];