Advertisement
Guest User

Untitled

a guest
Jul 29th, 2016
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.17 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Acme\Repositories;
  4.  
  5. use \PDO;
  6. use Acme\Repositories\Contracts\TransceiverWriteRepository;
  7. use SolidOptics\Transceiver\Transceiver;
  8.  
  9. class TransceiverRepositoryJson extends AbstractRepository implements TransceiverWriteRepository {
  10.  
  11. public function getRetuneSteps($transceiver)
  12. {
  13. if ($transceiver->getTypeName() == 'XFP'){
  14. $steps = [
  15. [
  16. 'SlaveAddress' => '0xA0',
  17. 'MemoryStart' => '0x71',
  18. 'Data' => '0x' . $transceiver->getTransceiverType()->getLSBChannel(),
  19. 'SleepTime' => '40',
  20. 'IsVerified' => 'NO'
  21. ]
  22. ];
  23.  
  24. } else if ($transceiver->getTypeName() == 'SFP'){
  25.  
  26. switch (substr($transceiver->getSerialNumber(), 0, 8)) {
  27.  
  28. // If vendor name is Menara
  29. case 'SOPTUNZJ':
  30. $channels = $transceiver->getChannelsList();
  31.  
  32. $wavelength = null;
  33.  
  34. foreach ($channels as $channel) {
  35. if ($channel['id'] == $transceiver->getChannel()) {
  36. $wavelength = $channel['wavelength'] * 20;
  37. $wavelength = round($wavelength);
  38. $wavelength = dechex($wavelength);
  39. }
  40. }
  41.  
  42. $steps = [
  43. [
  44. 'SlaveAddress' => '0xA2',
  45. 'MemoryStart' => '0x6A',
  46. 'Data' => '0x4D4E524E',
  47. 'SleepTime' => '450',
  48. 'IsVerified' => 'NO'
  49. ],
  50. [
  51. 'SlaveAddress' => "0xA2",
  52. 'MemoryStart' => '0x7F',
  53. 'Data' => '0x02',
  54. 'SleepTime' => '1000',
  55. 'IsVerified' => 'NO'
  56. ],
  57. [
  58. "SlaveAddress" => "0xA2",
  59. "MemoryStart" => "0x92",
  60. "Data" => '0x' . $wavelength,
  61. "SleepTime" => "40",
  62. 'IsVerified' => 'NO'
  63. ]
  64. ];
  65. break;
  66.  
  67. // Vendor name is JDSU
  68. case 'SOPTUNZP':
  69. $transceiver
  70. ->setVendorPartName('SFP10G-T-D' . $transceiver->getChannelUid() . '-ZR')
  71. ->setWavelength(Transceiver::$wavelength_chanels[$transceiver->getChannelUid()])
  72. ->setDateCounter($transceiver->getDateCounter())
  73. ->setDateCode(date('ymd'))
  74. ->getTransceiverType()->save();
  75.  
  76. $steps = [
  77. [
  78. 'SlaveAddress' => '0xA2',
  79. 'MemoryStart' => '0x7F',
  80. 'Data' => '0x02',
  81. 'SleepTime' => '1000',
  82. 'IsVerified' => 'NO'
  83. ],
  84. [
  85. 'SlaveAddress' => '0xA2',
  86. 'MemoryStart' => '0x91',
  87. 'Data' => '0x' . $transceiver->getTransceiverType()->getLSBChannel(),
  88. 'SleepTime' => '1000',
  89. 'IsVerified' => 'NO'
  90. ],
  91. [
  92. 'SlaveAddress' => '0xA2',
  93. 'MemoryStart' => '0x6A',
  94. 'Data' => '0xA9A55EDD',
  95. 'SleepTime' => '1000',
  96. 'IsVerified' => 'NO'
  97. ],
  98. [
  99. 'SlaveAddress' => '0xA2',
  100. 'MemoryStart' => '0x7F',
  101. 'Data' => '0xDD',
  102. 'SleepTime' => '400',
  103. 'IsVerified' => 'NO'
  104. ],
  105. [
  106. 'SlaveAddress' => '0xA2',
  107. 'MemoryStart' => '0x80',
  108. 'Data' => '0x' . $transceiver->getTransceiverType()->getSerialId(),
  109. 'SleepTime' => '100',
  110. 'IsVerified' => 'NO'
  111. ]
  112. ];
  113. break;
  114.  
  115. default:
  116. $steps = [
  117. [
  118. 'SlaveAddress' => '0xA2',
  119. 'MemoryStart' => '0x7F',
  120. 'Data' => '0x02',
  121. 'SleepTime' => '1000',
  122. 'IsVerified' => 'NO'
  123. ],
  124. [
  125. 'SlaveAddress' => '0xA2',
  126. 'MemoryStart' => '0x91',
  127. 'Data' => '0x' . $transceiver->getTransceiverType()->getLSBChannel(),
  128. 'SleepTime' => '40',
  129. 'IsVerified' => 'NO'
  130. ]
  131. ];
  132. break;
  133. }
  134. }
  135.  
  136. foreach ($steps as &$step) {
  137. $step['Length'] = sprintf('%s', strlen(substr($step['Data'], 2))/2);
  138. }
  139.  
  140. return $steps;
  141. }
  142.  
  143.  
  144. public function toWrite($steps, $device)
  145. {
  146. return json_encode([
  147. "MFTInfo" => [
  148. "SerialNumber" => $device->getSerialNumber(),
  149. "PartName" => $device->getVendorName(),
  150. "VendorName" => $device->getProductName()
  151. ],
  152. "Steps" => $steps
  153. ]);
  154. }
  155.  
  156. public function getWrite($device, $serial_id, $coui_code, $group_id, $provider_id)
  157. {
  158. $stmt = $this->pdo->prepare("SELECT * FROM Transceiver_GroupSteps WHERE GroupID = ?");
  159. $stmt->bindParam(1, $group_id, PDO::PARAM_STR, 4000);
  160.  
  161. $stmt->execute();
  162.  
  163. $steps = $stmt->fetchAll(PDO::FETCH_ASSOC);
  164.  
  165. $json_steps = [];
  166.  
  167. foreach ($steps as $step) {
  168.  
  169. $json_steps[] = [
  170. 'Data' => '0x' . str_replace(['%1','%2'], [$serial_id, $coui_code], $step['Content']),
  171. 'MemoryStart' => '0x' . $step['MemoryStart'],
  172. 'SleepTime' => $step['SleepTime'],
  173. 'SlaveAddress' => '0x' . $step['SlaveAddress'],
  174. 'IsVerified' => $step['IsVerified']
  175. ];
  176.  
  177. $json_steps[count($json_steps) - 1]['Length'] = strlen(substr($json_steps[count($json_steps) - 1]['Data'], 2))/2;
  178. $json_steps[count($json_steps) - 1]['Length'] = sprintf('%s', $json_steps[count($json_steps) - 1]['Length']);
  179. }
  180.  
  181. return $this->toWrite($json_steps, $device);
  182. }
  183. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement