MCPcopy Create free account
hub / github.com/RangeNetworks/openbts / write

Method write

Transceiver52M/UHDDevice.cpp:1027–1061  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1025}
1026
1027ssize_t smpl_buf::write(void *buf, size_t len, TIMESTAMP timestamp)
1028{
1029 int type_sz = 2 * sizeof(short);
1030
1031 // Check for valid write
1032 if ((len == 0) || (len >= buf_len))
1033 return ERROR_WRITE;
1034 if ((timestamp + len) <= time_end)
1035 return ERROR_TIMESTAMP;
1036
1037 // Starting index
1038 size_t write_start = (data_start + (timestamp - time_start)) % buf_len;
1039
1040 // Write it
1041 if ((write_start + len) < buf_len) {
1042 size_t numBytes = len * type_sz;
1043 memcpy(data + write_start, buf, numBytes);
1044 } else {
1045 size_t first_cp = (buf_len - write_start) * type_sz;
1046 size_t second_cp = len * type_sz - first_cp;
1047
1048 memcpy(data + write_start, buf, first_cp);
1049 memcpy(data, (char*) buf + first_cp, second_cp);
1050 }
1051
1052 data_end = (write_start + len) % buf_len;
1053 time_end = timestamp + len;
1054
1055 if (((write_start + len) > buf_len) && (data_end > data_start))
1056 return ERROR_OVERFLOW;
1057 else if (time_end <= time_start)
1058 return ERROR_WRITE;
1059 else
1060 return len;
1061}
1062
1063ssize_t smpl_buf::write(void *buf, size_t len, uhd::time_spec_t ts)
1064{

Callers 6

writeSamplesMethod · 0.45
Transceiver.cppFile · 0.45
driveReceiveFIFOMethod · 0.45
writeClockInterfaceMethod · 0.45
readSamplesMethod · 0.45

Calls 1

convert_timeFunction · 0.85

Tested by

no test coverage detected