diff --git a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm index ad93d1d484..aa51319ede 100644 --- a/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm +++ b/lib/FusionInventory/Agent/Task/Inventory/Input/Generic/Screen.pm @@ -167,6 +167,20 @@ sub _getEdidInfo { substr($edid->{serial_number2}->[0], 0, 8) . sprintf("%08x", $edid->{serial_number}) . substr($edid->{serial_number2}->[0], 8, 4) ; + } elsif ( + $edid->{EISA_ID} && + $edid->{EISA_ID} eq 'GSM4b21' + ) { + # split serial in two parts + my ($high, $low) = $edid->{serial_number} =~ /(\d+) (\d\d\d)$/x; + + # translate the first part using a custom alphabet + my @alphabet = split(//, "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ"); + my $base = scalar @alphabet; + + $info->{SERIAL} = + $alphabet[$high / $base] . $alphabet[$high % $base] . + $low; } else { $info->{SERIAL} = $edid->{serial_number2} ? $edid->{serial_number2}->[0] : diff --git a/t/inventory/generic/screen.t b/t/inventory/generic/screen.t index dd11c451c7..bd97fdc39a 100755 --- a/t/inventory/generic/screen.t +++ b/t/inventory/generic/screen.t @@ -296,6 +296,18 @@ my %tests = ( SERIAL => '11004M0C00313', DESCRIPTION => '49/2010' }, + 'lcd.lg-l1960.1' => { + MANUFACTURER => 'LG Electronics Inc. (GoldStar Technology, Inc.)', + CAPTION => 'L1960TR ', + SERIAL => '9Y670', + DESCRIPTION => '11/2007' + }, + 'lcd.lg-l1960.2' => { + MANUFACTURER => 'LG Electronics Inc. (GoldStar Technology, Inc.)', + CAPTION => 'L1960TR ', + SERIAL => '9Y676', + DESCRIPTION => '11/2007' + }, 'lcd.lenovo-3000-v100' => { MANUFACTURER => 'AU Optronics', CAPTION => undef,