/* Copyright (c) 2000-2019 Ericsson Telecom AB
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
*
* Contributors:
* Michael Josenhans
******************************************************************************/

module J1939 {
import from General_Types all;

type record CAN_identifier {
BIT3 priority,
BIT1 reseved, 
BIT1 datapage, 
OCT1 pduformat,
OCT1 destinationAddress,
OCT1 sourceAddress
}

type OCT3 PGN

}
