A P0340 is a camshaft sensor fault...Not all that other stuff you mentioned..Are you washing the engine?? Jason