QuISP
Loading...
Searching...
No Matches
quisp::modules::BSAController Class Reference

This module takes the click event from BSA, compile the result and report back to QNode that sent the photons. More...

#include <BSAController.h>

Inheritance diagram for quisp::modules::BSAController:
Collaboration diagram for quisp::modules::BSAController:

Classes

struct  QNicInfo
 

Public Member Functions

 BSAController ()
 
 ~BSAController ()
 
int getExternalAdressFromPort (int port)
 
void cancelBSMTimeOut ()
 

Protected Member Functions

virtual void initialize () override
 
virtual void handleMessage (cMessage *msg) override
 
virtual void finish () override
 

Private Member Functions

BSMTimingNotification * generateFirstNotificationTiming (bool is_left)
 
CombinedBSAresults * generateNextNotificationTiming (bool is_left)
 
int getExternalQNICIndexFromPort (int port)
 
simtime_t calculateOffsetTimeFromDistance ()
 
simtime_t getTravelTimeFromPort (int port)
 
double getExternalDistanceFromPort (int port)
 
QNicInfo getExternalQNICInfoFromPort (int port)
 
void sendMeasurementResults (BatchClickEvent *msg)
 

Private Attributes

int address
 
QNicInfo left_qnic
 
QNicInfo right_qnic
 
simtime_t left_travel_time
 
simtime_t right_travel_time
 
simtime_t offset_time_for_first_photon
 
BSMNotificationTimeout * time_out_message
 
std::vector< BSAClickResult > click_results
 
int time_out_count
 
simtime_t time_interval_between_photons
 how separated should the photons be; is calculated by the dead time of the detector
 
simtime_t speed_of_light_in_channel
 Speed of light in optical fiber (in km per sec).
 
utils::ComponentProvider provider
 
bool is_active
 
BellStateAnalyzerbsa
 
simtime_t last_result_send_time = 0
 

Detailed Description

This module takes the click event from BSA, compile the result and report back to QNode that sent the photons.

The controller can be in 2 operational modes. 1) active mode 2) passive mode

In the active mode, it will be responsible for deciding when the photons should come in. It will check the distance between two QNodes (possible one could be self), and decide on when the first photon should arrive. The result will be sent back in batches not on every photon pairs/single coming in.

In the passive mode, this assumes that the BSA is internal and EPPS will tell us how many photons will arrive, when the first one will arrive, and what the interval is.

Constructor & Destructor Documentation

◆ BSAController()

quisp::modules::BSAController::BSAController ( )

◆ ~BSAController()

quisp::modules::BSAController::~BSAController ( )

Member Function Documentation

◆ calculateOffsetTimeFromDistance()

simtime_t quisp::modules::BSAController::calculateOffsetTimeFromDistance ( )
private

◆ cancelBSMTimeOut()

void quisp::modules::BSAController::cancelBSMTimeOut ( )

◆ finish()

void quisp::modules::BSAController::finish ( )
overrideprotectedvirtual

◆ generateFirstNotificationTiming()

BSMTimingNotification * quisp::modules::BSAController::generateFirstNotificationTiming ( bool is_left)
private

◆ generateNextNotificationTiming()

CombinedBSAresults * quisp::modules::BSAController::generateNextNotificationTiming ( bool is_left)
private

◆ getExternalAdressFromPort()

int quisp::modules::BSAController::getExternalAdressFromPort ( int port)

◆ getExternalDistanceFromPort()

double quisp::modules::BSAController::getExternalDistanceFromPort ( int port)
private

◆ getExternalQNICIndexFromPort()

int quisp::modules::BSAController::getExternalQNICIndexFromPort ( int port)
private

◆ getExternalQNICInfoFromPort()

BSAController::QNicInfo quisp::modules::BSAController::getExternalQNICInfoFromPort ( int port)
private

◆ getTravelTimeFromPort()

simtime_t quisp::modules::BSAController::getTravelTimeFromPort ( int port)
private

◆ handleMessage()

void quisp::modules::BSAController::handleMessage ( cMessage * msg)
overrideprotectedvirtual

◆ initialize()

void quisp::modules::BSAController::initialize ( )
overrideprotectedvirtual

◆ sendMeasurementResults()

void quisp::modules::BSAController::sendMeasurementResults ( BatchClickEvent * msg)
private

Member Data Documentation

◆ address

int quisp::modules::BSAController::address
private

◆ bsa

BellStateAnalyzer* quisp::modules::BSAController::bsa
private

◆ click_results

std::vector<BSAClickResult> quisp::modules::BSAController::click_results
private

◆ is_active

bool quisp::modules::BSAController::is_active
private

◆ last_result_send_time

simtime_t quisp::modules::BSAController::last_result_send_time = 0
private

◆ left_qnic

QNicInfo quisp::modules::BSAController::left_qnic
private

◆ left_travel_time

simtime_t quisp::modules::BSAController::left_travel_time
private

◆ offset_time_for_first_photon

simtime_t quisp::modules::BSAController::offset_time_for_first_photon
private

◆ provider

utils::ComponentProvider quisp::modules::BSAController::provider
private

◆ right_qnic

QNicInfo quisp::modules::BSAController::right_qnic
private

◆ right_travel_time

simtime_t quisp::modules::BSAController::right_travel_time
private

◆ speed_of_light_in_channel

simtime_t quisp::modules::BSAController::speed_of_light_in_channel
private

Speed of light in optical fiber (in km per sec).

◆ time_interval_between_photons

simtime_t quisp::modules::BSAController::time_interval_between_photons
private

how separated should the photons be; is calculated by the dead time of the detector

◆ time_out_count

int quisp::modules::BSAController::time_out_count
private

◆ time_out_message

BSMNotificationTimeout* quisp::modules::BSAController::time_out_message
private

The documentation for this class was generated from the following files: