Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Acme\Repositories;
- use \PDO;
- use Acme\Repositories\Contracts\TransceiverWriteRepository;
- use SolidOptics\Transceiver\Transceiver;
- class TransceiverRepositoryJson extends AbstractRepository implements TransceiverWriteRepository {
- public function getRetuneSteps($transceiver)
- {
- if ($transceiver->getTypeName() == 'XFP'){
- $steps = [
- [
- 'SlaveAddress' => '0xA0',
- 'MemoryStart' => '0x71',
- 'Data' => '0x' . $transceiver->getTransceiverType()->getLSBChannel(),
- 'SleepTime' => '40',
- 'IsVerified' => 'NO'
- ]
- ];
- } else if ($transceiver->getTypeName() == 'SFP'){
- switch (substr($transceiver->getSerialNumber(), 0, 8)) {
- // If vendor name is Menara
- case 'SOPTUNZJ':
- $channels = $transceiver->getChannelsList();
- $wavelength = null;
- foreach ($channels as $channel) {
- if ($channel['id'] == $transceiver->getChannel()) {
- $wavelength = $channel['wavelength'] * 20;
- $wavelength = round($wavelength);
- $wavelength = dechex($wavelength);
- }
- }
- $steps = [
- [
- 'SlaveAddress' => '0xA2',
- 'MemoryStart' => '0x6A',
- 'Data' => '0x4D4E524E',
- 'SleepTime' => '450',
- 'IsVerified' => 'NO'
- ],
- [
- 'SlaveAddress' => "0xA2",
- 'MemoryStart' => '0x7F',
- 'Data' => '0x02',
- 'SleepTime' => '1000',
- 'IsVerified' => 'NO'
- ],
- [
- "SlaveAddress" => "0xA2",
- "MemoryStart" => "0x92",
- "Data" => '0x' . $wavelength,
- "SleepTime" => "40",
- 'IsVerified' => 'NO'
- ]
- ];
- break;
- // Vendor name is JDSU
- case 'SOPTUNZP':
- $transceiver
- ->setVendorPartName('SFP10G-T-D' . $transceiver->getChannelUid() . '-ZR')
- ->setWavelength(Transceiver::$wavelength_chanels[$transceiver->getChannelUid()])
- ->setDateCounter($transceiver->getDateCounter())
- ->setDateCode(date('ymd'))
- ->getTransceiverType()->save();
- $steps = [
- [
- 'SlaveAddress' => '0xA2',
- 'MemoryStart' => '0x7F',
- 'Data' => '0x02',
- 'SleepTime' => '1000',
- 'IsVerified' => 'NO'
- ],
- [
- 'SlaveAddress' => '0xA2',
- 'MemoryStart' => '0x91',
- 'Data' => '0x' . $transceiver->getTransceiverType()->getLSBChannel(),
- 'SleepTime' => '1000',
- 'IsVerified' => 'NO'
- ],
- [
- 'SlaveAddress' => '0xA2',
- 'MemoryStart' => '0x6A',
- 'Data' => '0xA9A55EDD',
- 'SleepTime' => '1000',
- 'IsVerified' => 'NO'
- ],
- [
- 'SlaveAddress' => '0xA2',
- 'MemoryStart' => '0x7F',
- 'Data' => '0xDD',
- 'SleepTime' => '400',
- 'IsVerified' => 'NO'
- ],
- [
- 'SlaveAddress' => '0xA2',
- 'MemoryStart' => '0x80',
- 'Data' => '0x' . $transceiver->getTransceiverType()->getSerialId(),
- 'SleepTime' => '100',
- 'IsVerified' => 'NO'
- ]
- ];
- break;
- default:
- $steps = [
- [
- 'SlaveAddress' => '0xA2',
- 'MemoryStart' => '0x7F',
- 'Data' => '0x02',
- 'SleepTime' => '1000',
- 'IsVerified' => 'NO'
- ],
- [
- 'SlaveAddress' => '0xA2',
- 'MemoryStart' => '0x91',
- 'Data' => '0x' . $transceiver->getTransceiverType()->getLSBChannel(),
- 'SleepTime' => '40',
- 'IsVerified' => 'NO'
- ]
- ];
- break;
- }
- }
- foreach ($steps as &$step) {
- $step['Length'] = sprintf('%s', strlen(substr($step['Data'], 2))/2);
- }
- return $steps;
- }
- public function toWrite($steps, $device)
- {
- return json_encode([
- "MFTInfo" => [
- "SerialNumber" => $device->getSerialNumber(),
- "PartName" => $device->getVendorName(),
- "VendorName" => $device->getProductName()
- ],
- "Steps" => $steps
- ]);
- }
- public function getWrite($device, $serial_id, $coui_code, $group_id, $provider_id)
- {
- $stmt = $this->pdo->prepare("SELECT * FROM Transceiver_GroupSteps WHERE GroupID = ?");
- $stmt->bindParam(1, $group_id, PDO::PARAM_STR, 4000);
- $stmt->execute();
- $steps = $stmt->fetchAll(PDO::FETCH_ASSOC);
- $json_steps = [];
- foreach ($steps as $step) {
- $json_steps[] = [
- 'Data' => '0x' . str_replace(['%1','%2'], [$serial_id, $coui_code], $step['Content']),
- 'MemoryStart' => '0x' . $step['MemoryStart'],
- 'SleepTime' => $step['SleepTime'],
- 'SlaveAddress' => '0x' . $step['SlaveAddress'],
- 'IsVerified' => $step['IsVerified']
- ];
- $json_steps[count($json_steps) - 1]['Length'] = strlen(substr($json_steps[count($json_steps) - 1]['Data'], 2))/2;
- $json_steps[count($json_steps) - 1]['Length'] = sprintf('%s', $json_steps[count($json_steps) - 1]['Length']);
- }
- return $this->toWrite($json_steps, $device);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement