Combining Pager Features

Many features of the LRS alphapager protocol can be combined. For instance, a group page may have alert overrides, or a group page may be encrypted. It is important that these features are combined properly to achieve the desired the results.

The following pseudocode illustrates how all the features of the LRS alphapager could be brought together.

procedure send_page(
  int system_id,
  int id, // pager, group, or table number (0 for system control pages)
  bool is_group,
  bool is_table,
  string message,
  PageMode mode,
  bool encrypt)
begin
  if is_group and is_table
		throw invalid_page // cannot be group and table page
	end
	if not mode.isNull() then
		if id == 0 then
			// system control pages can’t have alert overrides
			throw invalid_page
		end
		message = message + "\f" + mode.toAlertOverride()
	end
	if encrypt then
		if id == 0 then
			// system control messages can’t be encrypted
			throw invalid_page
		end
		message = encrypt_message(message)
	end
	if is_group then
		if not id in [1, 98] then
			throw bad_group_id
		end
		message = sprintf("[%02d]", id) + message
		id = 0 // System capcode is pager ID 0
	end
	if is_table then
		if id in [1, 1000] then
			throw bad_table_number
		end
		message = sprintf("[#%05d]", id) + message
		id = 0 // System capcode is pager ID 0
	end
	capcode = calc_capcode(system_id, id)
	transmit_page(capcode, message)
end