summaryrefslogtreecommitdiff
path: root/cesar/ce/test/rx/maximus/send_noise.py
blob: 7c8666ce56b32dae4fbd96371ac3dd5ef358c233 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/usr/bin/python

#print __name__

import sys

maximus_path = '../../../../maximus' 
pos_maximus_path = -1
for i in range(len(sys.argv)):
	if sys.argv[i] == '--maximus_path':
		pos_maximus_path = i
		maximus_path = sys.argv[i+1]
if pos_maximus_path > 0:
	sys.argv = sys.argv[0:pos_maximus_path] + sys.argv[pos_maximus_path+2:len(sys.argv)]
sys.path.append (maximus_path+'/python')
sys.path.append (maximus_path+'/python/obj')

from interface import *
from maximus.macframe import *
from maximus.macframe.msdu import MAX_SIZE_OF_MSDU
from struct import *

# Create and initializes Maximus
maximus = Maximus()
maximus.init(sys.argv)

# Create a station
sta = maximus.create_sta ()
sta.debug()
maximus.disturb_channel()

pb_nb = 200 
frame_nb = 22

ce_init_fcall = maximus.create_fcall ('ce_init')
ce_init_fcall.send(sta)
sar_start_fcall = maximus.create_fcall ('sar_start')
sar_start_fcall.send(sta)

ce_check_stock_fcall = maximus.create_fcall ('ce_check_stock')
ce_check_stock_fcall.add_param_ushort ('frame_nb', frame_nb);
ce_check_stock_fcall.add_param_ushort ('pb_nb', pb_nb);
ce_start_fcall = maximus.create_fcall ('ce_start')
ce_check_computation_fcall = maximus.create_fcall ('ce_check_computation')


def prepare_rx_param_init():
    prepare_rx_fcall = maximus.create_fcall('prepare_rx')
    fc_mode = 2 # PHY_FC_MODE_AV_1
    prepare_rx_fcall.add_param_ushort("fc_mode", fc_mode)
    prepare_rx_fcall.add_param_bool("short_ppdu", False)
    mod = 0 # PHY_MOD_ROBO
    prepare_rx_fcall.add_param_ushort("mod", mod)
    fecrate = 0 # PHY_FEC_RATE_1_2
    prepare_rx_fcall.add_param_ushort("fecrate", fecrate)
    pb_size = 1 
    prepare_rx_fcall.add_param_ushort("pb_size", pb_size)
    gil = 1 # PHY_GIL_567
    prepare_rx_fcall.add_param_ushort("gil", gil)
    #pb_nb = 1 
    prepare_rx_fcall.add_param_ushort("pb_nb", pb_nb)
    #prepare_rx_fcall.send(sta)
    return prepare_rx_fcall

test_result_fcall = maximus.create_fcall('test_result_get')

queue = MACFrameQueue()
queue.set_fc_av(pack('IIII', 0, 456, 789, 10))
payload = 512*'X'+(pb_nb-1)*512*'Y'
macframe_nb = (len(payload) + (MAX_SIZE_OF_MSDU-1)) / MAX_SIZE_OF_MSDU
payload = payload[macframe_nb*6:]

def create_msdu():
    msdu = MACFrame()
    msdu.set_macframeheader ('MF')
    msdu.set_icv ('CRC0')
    return msdu

def send_queue():
    for i in range (macframe_nb):
        macFrame = create_msdu()
        macFrame.set_msdu(payload[i*MAX_SIZE_OF_MSDU:min((i+1)*MAX_SIZE_OF_MSDU, len(payload))])
        queue.add(macFrame)
    queue.send(maximus)

for i in range(frame_nb) :
    prepare_rx_param_init().send(sta)
    send_queue()

ce_check_stock_fcall.send(sta)
ce_start_fcall.send(sta)
ce_check_computation_fcall.send(sta)

maximus.wait(10000000)

res = test_result_fcall.send(sta)
result = res.bind_param_ushort ("test_result")
#print "test has returned ", hex(result)
sta.remove()

sys.exit(result)