HiPi

 view release on metacpan or  search on metacpan

lib/HiPi/Interface/EPaper/TypeB.pm  view on Meta::CPAN

                $temp |= 0xC0 >> (($bit - 4) * 2);
            }
        }
        
        push @bytes, $temp;
        if( @bytes == $chunksize) {
            $self->send_data(@bytes);
            @bytes = ();
        }
    }
    
    $self->send_data( @bytes ) if @bytes;
    
    $self->delay(2);
    return;
}

sub _do_update_1_bpp {
    my($self, $transmission, $buffer, $bufferbytes) = @_;
    $self->send_command( $transmission );
    $self->delay(2);

    my $chunksize = $self->spi_chunksize;
    my $byteloops = int($bufferbytes / $chunksize);
    my $lastbytes = $bufferbytes % $chunksize;
    my $index;
    
    for ($index = 0; $index < $byteloops; $index++) {
        my $start = $index * $chunksize;
        my $end = $start + $chunksize - 1;
        $self->send_data( @$buffer[$start..$end] );
    }
    if( $lastbytes ) {
        my $start = $index * $chunksize;
        my $end = $start + $lastbytes - 1;
        $self->send_data( @$buffer[$start..$end] );
    }
    $self->delay(2);
    return;
}

sub get_vcom_and_data {
    my($self) = @_;

    my $vcom = $self->vcom_and_data_byte & HIPI_BORDER_DDXCDI_MASK;
    my $control = $self->border_control;
    my $border = HIPI_BORDER_FLOAT;
    
    if( $control == EPD_BORDER_BLACK ) {
        $border = HIPI_BORDER_BLACK;
    } elsif( $control == EPD_BORDER_COLOUR ) {
        if( $self->is_tri_colour ) {
            $border = HIPI_BORDER_COLOUR;
        } else {
            $border = HIPI_BORDER_BLACK;
        }
    } elsif( $control == EPD_BORDER_WHITE ) {
        $border = HIPI_BORDER_WHITE;
    }
    
    my $vcdata = $border | $vcom;
    # warn sprintf('RETURNING VCOM DATA 0x%X', $vcdata);
    return $vcdata;
}

1;

__END__



( run in 3.033 seconds using v1.01-cache-2.11-cpan-97f6503c9c8 )