Frequency   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 70
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 6
eloc 23
dl 0
loc 70
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A setGeneratedFrequencies() 0 14 2
A generateFrequencies() 0 9 3
A getFrequency() 0 3 1
1
<?php
2
3
namespace Sanchescom\WiFi\System;
4
5
/**
6
 * Class FrequencyGenerator.
7
 */
8
trait Frequency
9
{
10
    /**
11
     * @var array
12
     */
13
    protected static $frequencies = [];
14
15
    /**
16
     * Array description:
17
     * <code>
18
     * $frequencySettings = [
19
     *      [
20
     *          2412, // frequency starts from
21
     *          1,    // channel starts from
22
     *          14,   // channel ends till
23
     *          5,    // frequency step
24
     *          1,    // frequency increasing
25
     *      ],
26
     * ];
27
     * </code>.
28
     *
29
     * @var array[int][int]int
0 ignored issues
show
Documentation Bug introduced by
The doc comment array[int][int]int at position 1 could not be parsed: Expected ']' at position 1, but found '['.
Loading history...
30
     */
31
    protected $frequencySettings = [
32
        [2412, 1, 14, 5, 1],
33
        [5180, 36, 64, 10, 2],
34
        [5500, 100, 144, 10, 2],
35
        [5745, 149, 161, 10, 2],
36
        [5825, 165, 173, 20, 4],
37
    ];
38
39
    /**
40
     * @return mixed
41
     */
42
    public function getFrequency()
43
    {
44
        return $this->generateFrequencies()[$this->channel];
45
    }
46
47
    /**
48
     * @return array
49
     */
50
    protected function generateFrequencies(): array
51
    {
52
        if (empty(self::$frequencies)) {
53
            foreach ($this->frequencySettings as $frequencySetting) {
54
                $this->setGeneratedFrequencies($frequencySetting);
55
            }
56
        }
57
58
        return self::$frequencies;
59
    }
60
61
    /**
62
     * @param array $frequencySetting
63
     */
64
    protected function setGeneratedFrequencies(array $frequencySetting): void
65
    {
66
        list(
67
            $frequencyStart,
68
            $channelStart,
69
            $channelEnd,
70
            $frequencyStep,
71
            $frequencyIncreasing
72
            ) = $frequencySetting;
73
74
        for ($i = $channelStart; $i <= $channelEnd; $i += $frequencyIncreasing) {
75
            self::$frequencies[$i] = $frequencyStart;
76
77
            $frequencyStart += $frequencyStep;
78
        }
79
    }
80
}
81