Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Multicast addresses for each card.
- const MC_ADDRESSES = {
- /*CARD1 PRI*/
- "10.46.148.1": ["239.46.148.1", "239.47.148.1", "239.48.148.1", "239.49.148.1", "239.50.148.1", "239.51.148.1", "239.46.148.3", "239.47.148.3", "239.48.148.3", "239.49.148.3"],
- /*CARD1 SEC*/
- "10.46.148.3": ["239.46.148.9", "239.47.148.9", "239.48.148.9", "239.49.148.9", "239.50.148.9", "239.51.148.9", "239.46.148.11", "239.47.148.11", "239.48.148.11", "239.49.148.11"],
- }
- const port = "9040";
- const nb_iomodule = 10;
- const nb_receiver = 6;
- //PTP
- await dispatch_change_request("p_t_p", "create_agent", "Click");
- await write("p_t_p.agents[0]", "domain_command", 0);
- await write("p_t_p.agents[0]", "hosting_port_command", "p_t_p.ports[0]");
- await write("p_t_p_clock", "input_command", "p_t_p.agents[0].output");
- await write("system_clock", "input", "p_t_p_clock.output");
- //Standard SDI1080
- await write("video_signal_generator", "standard_command", "HD1080i50");
- //IOmodule
- //for (let i = 0; i < nb_iomodule; i++) {
- // await write("i_o_module.output["+i+"].sdi.constraint", "standard_command", "HD1080i50");
- //}
- //Create RTP Receiver x12
- await write("r_t_p_receiver.error_handling", "on_redundant_sdp", "Discard");
- for (let i = 0; i < nb_receiver; i++) {
- await dispatch_change_request("r_t_p_receiver", "create_session", "Click");
- await write("r_t_p_receiver.sessions["+i+"]", "switch_type_command", "DTS_BBM");
- await write("r_t_p_receiver.sessions["+i+"]", "num_video_receivers_command", 1);
- await write("r_t_p_receiver.sessions["+i+"]", "primary_interface_command", "network_interfaces.ports[0].virtual_interfaces[0]");
- await write("r_t_p_receiver.sessions["+i+"]", "secondary_interface_command", "network_interfaces.ports[1].virtual_interfaces[0]");
- }
- await write("video_transmitter.transmitter_assignment", "interface_command", "network_interfaces.ports[0].virtual_interfaces[0]");
- for (let i = 0; i < nb_iomodule; i++) {
- await dispatch_change_request("video_transmitter.transmitter_assignment", "create_transmitter", "Click");
- await pause_ms(500);
- }
- for (let i = 0; i < nb_iomodule; i++) {
- await dispatch_change_request("video_transmitter.pool["+i+"]", "add_new_output", "Click");
- await write("video_transmitter.pool["+i+"].output_port[1]", "interface_command", "network_interfaces.ports[1].virtual_interfaces[0]");
- await write("video_transmitter.pool["+i+"].output_port[0]", "active_command", true);
- await write("video_transmitter.pool["+i+"].output_port[1]", "active_command", true);
- await write("video_transmitter.pool["+i+"]", "active_command", true);
- }
- //Get IP address of the output port
- let pri_ip = await read("network_interfaces.ports[0].virtual_interfaces[0].ip_addresses[0]", "ip_address");
- let sec_ip = await read("network_interfaces.ports[1].virtual_interfaces[0].ip_addresses[0]", "ip_address");
- var patt = /^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/;
- //Check lenght and if it is not null.
- for (let i = 0; i < nb_iomodule; i++) {
- //Check of MC table
- if (MC_ADDRESSES[pri_ip][i] === null || !patt.test(MC_ADDRESSES[pri_ip][i])) {
- await inform("Multicast address for primary port "+i+" of IP address "+pri_ip+" is missing. Check script configuration");
- break;
- }
- if (MC_ADDRESSES[sec_ip][i] === null || !patt.test(MC_ADDRESSES[sec_ip][i])) {
- await inform("Multicast address for secondary port "+i+" of IP address "+sec_ip+" is missing. Check script configuration");
- break;
- }
- //Set MC address
- await write("video_transmitter.pool["+i+"].output_port[0]", "mc_address_command", MC_ADDRESSES[pri_ip][i]+":"+port);
- await write("video_transmitter.pool["+i+"].output_port[1]", "mc_address_command", MC_ADDRESSES[sec_ip][i]+":"+port);
- }
- //create crossbar - reboot will be done later to enable it for vsm
- await create_table_row("video_crossbar.pool");
- await write("video_crossbar.pool[0]", "row_name_command", "VideoXbar");
- await write("video_crossbar.pool[0]", "num_inputs", 35);
- await write("video_crossbar.pool[0]", "num_outputs", 20);
- //0-9 inputs to io_module
- for (let i = 0; i < nb_iomodule; i++) {
- await write("video_crossbar.pool[0].inputs["+i+"]", "source_command", "i_o_module.input["+i+"].sdi.output.video");
- }
- //10-21 inputs to RTP receivers(x12)
- for (let i = 0; i < nb_receiver; i++) {
- //find the correct rtp_receiver in this session
- let num_rx = await allocated_indices("r_t_p_receiver.sessions["+i+"].video_receivers");
- for (let j of num_rx) {
- let r = await read("r_t_p_receiver.sessions["+i+"].video_receivers["+j+"]", "wrapped_reference");
- await write("video_crossbar.pool[0].inputs["+(i+nb_iomodule)+"]", "source_command", r+".video_specific.output.video");
- }
- }
- await write("video_crossbar.pool[0].inputs[34]", "source_command", "video_signal_generator.output");
- for (let i = 0; i < (20-nb_iomodule); i++) {
- await write("i_o_module.output["+i+"].sdi.vid_src", "v_src_command", "video_crossbar.pool[0].outputs["+i+"].output");
- }
- for (let i = 0; i < nb_iomodule; i++) {
- await write("video_transmitter.pool["+i+"].vid_source", "v_src_command", "video_crossbar.pool[0].outputs["+(i+(20-nb_iomodule))+"].output");
- }
- //Audio settings
- for (let j = 0; j < (20-nb_iomodule); j++) {
- for (let i = 0; i < 4; i++) { //limited to 4 groups, instead of 8
- await write("i_o_module.output["+j+"].sdi.audio_control.group_enable["+i+"]", "group_command", "Bypass");
- }
- }
- for (let j = 0; j < nb_iomodule; j++) {
- for (let i = 0; i < 4; i++) { //limited to 4 groups, instead of 8
- await write("video_transmitter.pool["+j+"].audio_control.group_enable["+i+"]", "group_command", "Bypass");
- }
- }
- //RTP receiver settings
- for (let i = 0; i < nb_receiver; i++) {
- await write("r_t_p_receiver.sessions["+i+"]", "active_command", false);
- //find the correct rtp_receiver in this session
- let num_rx = await allocated_indices("r_t_p_receiver.sessions["+i+"].video_receivers");
- for (let j of num_rx) {
- let r = await read("r_t_p_receiver.sessions["+i+"].video_receivers["+j+"]", "wrapped_reference");
- await write(r+".video_specific.phase", "relative_to_command", "genlock.output");
- await write(r+".generic.track_a.rx_buffer", "num_blocks_command", 16); //track_a
- await write(r+".generic.track_b.rx_buffer", "num_blocks_command", 16); //track_b
- }
- await write("r_t_p_receiver.sessions["+i+"]", "active_command", true);
- }
- //reboot
- await inform("Reboot was invoked to finish the configuration");
- await dispatch_change_request("system", "reboot", "reboot");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement